Browse Source

Merge pull request #2278 from vcmi/rmg_factions

Rmg factions
DjWarmonger 2 years ago
parent
commit
f9e1a70ab8
37 changed files with 295 additions and 474 deletions
  1. 8 0
      Global.h
  2. 8 8
      Mods/vcmi/config/vcmi/rmg/hdmod/aroundamarsh.JSON
  3. 2 2
      Mods/vcmi/config/vcmi/rmg/hdmod/balance.JSON
  4. 6 6
      Mods/vcmi/config/vcmi/rmg/hdmod/blockbuster.JSON
  5. 0 2
      Mods/vcmi/config/vcmi/rmg/hdmod/cube.JSON
  6. 4 28
      Mods/vcmi/config/vcmi/rmg/hdmod/extreme.JSON
  7. 4 24
      Mods/vcmi/config/vcmi/rmg/hdmod/extreme2.JSON
  8. 6 6
      Mods/vcmi/config/vcmi/rmg/hdmod/frozenDragons.JSON
  9. 0 7
      Mods/vcmi/config/vcmi/rmg/hdmod/gimlisRevenge.JSON
  10. 0 5
      Mods/vcmi/config/vcmi/rmg/hdmod/jebusCross.json
  11. 16 16
      Mods/vcmi/config/vcmi/rmg/hdmod/longRun.JSON
  12. 10 9
      Mods/vcmi/config/vcmi/rmg/hdmod/marathon.JSON
  13. 0 11
      Mods/vcmi/config/vcmi/rmg/hdmod/oceansEleven.JSON
  14. 0 10
      Mods/vcmi/config/vcmi/rmg/hdmod/panic.JSON
  15. 0 10
      Mods/vcmi/config/vcmi/rmg/hdmod/poorJebus.JSON
  16. 3 12
      Mods/vcmi/config/vcmi/rmg/hdmod/reckless.JSON
  17. 4 4
      Mods/vcmi/config/vcmi/rmg/hdmod/roadrunner.JSON
  18. 0 2
      Mods/vcmi/config/vcmi/rmg/hdmod/shaaafworld.JSON
  19. 4 4
      Mods/vcmi/config/vcmi/rmg/hdmod/skirmish.JSON
  20. 2 2
      Mods/vcmi/config/vcmi/rmg/hdmod/superslam.JSON
  21. 6 44
      Mods/vcmi/config/vcmi/rmg/hdmod/triad.JSON
  22. 4 16
      Mods/vcmi/config/vcmi/rmg/hdmod/vortex.JSON
  23. 4 4
      Mods/vcmi/config/vcmi/rmg/hdmodUnused/balance m+u 200%.JSON
  24. 56 158
      Mods/vcmi/config/vcmi/rmg/hdmodUnused/midnightMix.JSON
  25. 2 2
      Mods/vcmi/config/vcmi/rmg/hdmodUnused/skirmish m-u 200%.JSON
  26. 0 6
      Mods/vcmi/config/vcmi/rmg/hdmodUnused/true random.JSON
  27. 0 6
      Mods/vcmi/config/vcmi/rmg/heroes3/newcomers.JSON
  28. 0 8
      Mods/vcmi/config/vcmi/rmg/heroes3/southOfHell.JSON
  29. 14 1
      config/schemas/template.json
  30. 27 1
      lib/GameConstants.cpp
  31. 10 2
      lib/GameConstants.h
  32. 49 43
      lib/rmg/CRmgTemplate.cpp
  33. 8 4
      lib/rmg/CRmgTemplate.h
  34. 8 0
      lib/rmg/CRmgTemplateStorage.cpp
  35. 2 0
      lib/rmg/CRmgTemplateStorage.h
  36. 15 6
      lib/rmg/modificators/TerrainPainter.cpp
  37. 13 5
      lib/serializer/JsonSerializeFormat.h

+ 8 - 0
Global.h

@@ -633,6 +633,14 @@ namespace vstd
 		return v3;
 	}
 
+	template <typename T>
+	std::set<T> difference(const std::set<T> &s1, const std::set<T> s2)
+	{
+		std::set<T> s3;
+		std::set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), std::inserter(s3, s3.end()));
+		return s3;
+	}
+
 	template <typename Key, typename V>
 	bool containsMapping(const std::multimap<Key,V> & map, const std::pair<const Key,V> & mapping)
 	{

+ 8 - 8
Mods/vcmi/config/vcmi/rmg/hdmod/aroundamarsh.JSON

@@ -12,7 +12,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold" ],
+				"bannedTowns" : ["fortress", "necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -28,7 +28,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold" ],
+				"bannedTowns" : ["fortress", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -39,7 +39,7 @@
 				"owner" : 3,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold" ],
+				"bannedTowns" : ["fortress", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -50,7 +50,7 @@
 				"owner" : 4,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold" ],
+				"bannedTowns" : ["fortress", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -60,7 +60,7 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "conflux" ],
+				"bannedTowns" : ["fortress", "necropolis"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt", "grass", "lava" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1 },
@@ -77,7 +77,7 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "conflux" ],
+				"bannedTowns" : ["fortress", "necropolis"],
 				"terrainTypeLikeZone" : 5,
 				"mines" : { "crystal" : 1, "gems" : 1 },
 				"treasureLikeZone" : 5
@@ -88,7 +88,7 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "conflux" ],
+				"bannedTowns" : ["fortress", "necropolis"],
 				"terrainTypeLikeZone" : 5,
 				"mines" : { "sulfur" : 1, "gems" : 1 },
 				"treasureLikeZone" : 5
@@ -99,7 +99,7 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "conflux" ],
+				"bannedTowns" : ["fortress", "necropolis"],
 				"terrainTypeLikeZone" : 5,
 				"mines" : { "mercury" : 1, "crystal" : 1 },
 				"treasureLikeZone" : 5

+ 2 - 2
Mods/vcmi/config/vcmi/rmg/hdmod/balance.JSON

@@ -14,7 +14,7 @@
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
 				"townsAreSameType" : true,
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -32,7 +32,7 @@
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
 				"townsAreSameType" : true,
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},

+ 6 - 6
Mods/vcmi/config/vcmi/rmg/hdmod/blockbuster.JSON

@@ -13,7 +13,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -29,7 +29,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -128,7 +128,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -145,7 +145,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -255,7 +255,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -272,7 +272,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1

+ 0 - 2
Mods/vcmi/config/vcmi/rmg/hdmod/cube.JSON

@@ -12,7 +12,6 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -29,7 +28,6 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1

+ 4 - 28
Mods/vcmi/config/vcmi/rmg/hdmod/extreme.JSON

@@ -13,8 +13,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1, "gold" : 2 },
 				"treasure" :
 				[
@@ -30,8 +29,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -42,7 +40,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt", "grass", "subterra", "lava" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
@@ -60,7 +57,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 3,
 				"treasureLikeZone" : 3
@@ -72,7 +68,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"mines" : { "wood" : 1 },
 				"treasure" :
@@ -89,7 +84,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 5,
 				"treasureLikeZone" : 5
@@ -101,7 +95,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"mines" : { "ore" : 1 },
 				"treasure" :
@@ -118,7 +111,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 7,
 				"treasureLikeZone" : 7
@@ -129,7 +121,6 @@
 				"size" : 20,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand" ],
 				"treasure" :
@@ -144,7 +135,6 @@
 				"size" : 20,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 9,
 				"treasureLikeZone" : 9
 			},
@@ -154,7 +144,6 @@
 				"size" : 20,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 9,
 				"treasureLikeZone" : 9
 			},
@@ -164,7 +153,6 @@
 				"size" : 20,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 9,
 				"treasureLikeZone" : 9
 			}
@@ -205,8 +193,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1, "gold" : 2 },
 				"treasure" :
 				[
@@ -222,8 +209,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -234,7 +220,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt", "grass", "subterra", "lava" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
@@ -252,7 +237,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 3,
 				"treasureLikeZone" : 3
@@ -264,7 +248,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"mines" : { "wood" : 1 },
 				"treasure" :
@@ -281,7 +264,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 5,
 				"treasureLikeZone" : 5
@@ -293,7 +275,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"mines" : { "ore" : 1 },
 				"treasure" :
@@ -310,7 +291,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 7,
 				"treasureLikeZone" : 7
@@ -321,7 +301,6 @@
 				"size" : 17,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand" ],
 				"treasure" :
@@ -336,7 +315,6 @@
 				"size" : 17,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 9,
 				"treasureLikeZone" : 9
 			},
@@ -346,7 +324,6 @@
 				"size" : 17,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 9,
 				"treasureLikeZone" : 9
 			},
@@ -356,7 +333,6 @@
 				"size" : 17,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 9,
 				"treasureLikeZone" : 9
 			}

+ 4 - 24
Mods/vcmi/config/vcmi/rmg/hdmod/extreme2.JSON

@@ -13,8 +13,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1, "gold" : 3 },
 				"treasure" :
 				[
@@ -30,8 +29,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -42,7 +40,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "grass", "subterra" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
@@ -59,7 +56,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "subterra", "lava" ],
 				"minesLikeZone" : 3,
@@ -72,7 +68,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand" ],
 				"treasure" :
@@ -89,7 +84,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -100,7 +94,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -111,7 +104,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -121,7 +113,6 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasure" :
 				[
@@ -136,7 +127,6 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 9
 			}
@@ -177,8 +167,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1, "gold" : 3 },
 				"treasure" :
 				[
@@ -194,8 +183,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -206,7 +194,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "grass", "subterra" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
@@ -223,7 +210,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "subterra", "lava" ],
 				"minesLikeZone" : 3,
@@ -236,7 +222,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand" ],
 				"treasure" :
@@ -253,7 +238,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -264,7 +248,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -275,7 +258,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -285,7 +267,6 @@
 				"size" : 25,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasure" :
 				[
@@ -300,7 +281,6 @@
 				"size" : 25,
 				"monsters" : "strong",
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 9
 			}

+ 6 - 6
Mods/vcmi/config/vcmi/rmg/hdmod/frozenDragons.JSON

@@ -12,7 +12,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"allowedMonsters" : [ "castle", "tower", "inferno", "stronghold", "fortress", "neutral", "conflux" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -29,7 +29,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"allowedMonsters" : [ "castle", "tower", "inferno", "stronghold", "fortress", "neutral", "conflux" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -95,7 +95,7 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis", "castle"],
 				"allowedMonsters" : [ "castle", "tower", "inferno", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 3,
 				"mines" : { "gold" : 2 },
@@ -112,7 +112,7 @@
 				"size" : 15,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis", "castle"],
 				"allowedMonsters" : [ "castle", "tower", "inferno", "stronghold", "fortress", "conflux" ],
 				"terrainTypeLikeZone" : 4,
 				"minesLikeZone" : 7,
@@ -124,7 +124,7 @@
 				"size" : 5,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis", "castle"],
 				"allowedMonsters" : [ "rampart", "necropolis", "dungeon", "neutral" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "snow" ],
@@ -141,7 +141,7 @@
 				"size" : 5,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis", "castle"],
 				"allowedMonsters" : [ "rampart", "necropolis", "dungeon", "neutral" ],
 				"terrainTypeLikeZone" : 9,
 				"minesLikeZone" : 9,

+ 0 - 7
Mods/vcmi/config/vcmi/rmg/hdmod/gimlisRevenge.JSON

@@ -13,7 +13,6 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"mines" : { "wood" : 1, "ore" : 1, "gold" : 1 },
 				"treasure" :
 				[
@@ -30,7 +29,6 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -39,7 +37,6 @@
 				"type" : "treasure",
 				"size" : 15,
 				"monsters" : "normal",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -48,7 +45,6 @@
 				"type" : "treasure",
 				"size" : 15,
 				"monsters" : "normal",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -57,7 +53,6 @@
 				"type" : "treasure",
 				"size" : 12,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -66,7 +61,6 @@
 				"type" : "treasure",
 				"size" : 12,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -75,7 +69,6 @@
 				"type" : "treasure",
 				"size" : 12,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},

+ 0 - 5
Mods/vcmi/config/vcmi/rmg/hdmod/jebusCross.json

@@ -10,7 +10,6 @@
 				"type" : "playerStart", "size" : 30, "owner" : 1,
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"bannedTowns" : ["necropolis", "conflux"],
 				"monsters" : "weak",
 				"mines" : {"wood" : 4, "ore" : 4, "gems" : 1, "crystal" : 1, "sulfur" : 1, "mercury" : 1, "gold" : 2},
 				"treasure" : [
@@ -24,7 +23,6 @@
 				"type" : "playerStart", "size" : 30, "owner" : 2,
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"bannedTowns" : ["necropolis", "conflux"],
 				"monsters" : "weak",
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -34,7 +32,6 @@
 				"type" : "playerStart", "size" : 30, "owner" : 3,
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"bannedTowns" : ["necropolis", "conflux"],
 				"monsters" : "weak",
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -44,7 +41,6 @@
 				"type" : "playerStart", "size" : 30, "owner" : 4,
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"bannedTowns" : ["necropolis", "conflux"],
 				"monsters" : "weak",
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -54,7 +50,6 @@
 				"type" : "treasure", "size" : 40,
 				"neutralTowns" : { "castles" : 2 },
 				"terrainTypes" : [ "sand" ], "matchTerrainToTown" : false,
-				"bannedTowns" : ["necropolis", "conflux"],
 				"monsters" : "strong",
 				"mines" : {"gold" : 4},
 				"treasure" : [

+ 16 - 16
Mods/vcmi/config/vcmi/rmg/hdmod/longRun.JSON

@@ -13,7 +13,7 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"mines" : { "wood" : 1, "mercury" : 0, "ore" : 1, "sulfur" : 0, "crystal" : 0, "gems" : 0, "gold" : 1 },
 				"treasure" :
 				[
@@ -27,7 +27,7 @@
 				"size" : 60,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand", "subterra" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 1 },
@@ -44,7 +44,7 @@
 				"size" : 100,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1, "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "grass" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 0 },
@@ -61,7 +61,7 @@
 				"size" : 100,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "subterra" ],
 				"mines" : { "wood" : 0, "mercury" : 1, "ore" : 0, "sulfur" : 0, "crystal" : 0, "gems" : 0, "gold" : 2 },
@@ -94,7 +94,7 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -104,7 +104,7 @@
 				"size" : 60,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"terrainTypeLikeZone" : 2,
 				"minesLikeZone" : 2,
 				"treasureLikeZone" : 2
@@ -115,7 +115,7 @@
 				"size" : 100,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1, "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 3,
 				"treasureLikeZone" : 3
@@ -126,7 +126,7 @@
 				"size" : 100,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"terrainTypeLikeZone" : 4,
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 4
@@ -158,7 +158,7 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"mines" : { "wood" : 1, "mercury" : 0, "ore" : 1, "sulfur" : 0, "crystal" : 0, "gems" : 0, "gold" : 1 },
 				"treasure" :
 				[
@@ -172,7 +172,7 @@
 				"size" : 60,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 1 },
@@ -189,7 +189,7 @@
 				"size" : 70,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 2, "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "grass" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 0 },
@@ -206,7 +206,7 @@
 				"size" : 80,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt" ],
 				"mines" : { "wood" : 0, "mercury" : 1, "ore" : 0, "sulfur" : 0, "crystal" : 0, "gems" : 0, "gold" : 5 },
@@ -238,7 +238,7 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -248,7 +248,7 @@
 				"size" : 60,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"terrainTypeLikeZone" : 2,
 				"minesLikeZone" : 2,
 				"treasureLikeZone" : 2
@@ -259,7 +259,7 @@
 				"size" : 70,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 2, "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 3,
 				"treasureLikeZone" : 3
@@ -270,7 +270,7 @@
 				"size" : 80,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"terrainTypeLikeZone" : 4,
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 4

+ 10 - 9
Mods/vcmi/config/vcmi/rmg/hdmod/marathon.JSON

@@ -12,7 +12,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -27,7 +27,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -37,7 +37,7 @@
 				"size" : 14,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : [ "castle", "conflux"],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1 },
 				"treasure" :
 				[
@@ -51,7 +51,7 @@
 				"size" : 14,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : [ "rampart", "conflux" ],
 				"mines" : { "sulfur" : 1, "gems" : 1 },
 				"treasure" :
 				[
@@ -66,7 +66,7 @@
 				"size" : 14,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "necropolis", "dungeon", "fortress" ],
+				"bannedTowns" : ["castle", "stronghold", "conflux"],
 				"mines" : { "mercury" : 1, "crystal" : 1, "gems" : 1 },
 				"treasure" :
 				[
@@ -81,7 +81,7 @@
 				"size" : 14,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "conflux"],
 				"minesLikeZone" : 3,
 				"treasureLikeZone" : 3
 			},
@@ -91,7 +91,7 @@
 				"size" : 14,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["rampart", "conflux"],
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 4
 			},
@@ -101,6 +101,7 @@
 				"size" : 14,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
+				"bannedTowns" : ["castle", "stronghold", "conflux"],
 				"allowedTowns" : [ "rampart", "tower", "inferno", "necropolis", "dungeon", "fortress" ],
 				"minesLikeZone" : 5,
 				"treasureLikeZone" : 5
@@ -330,7 +331,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -345,7 +346,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},

+ 0 - 11
Mods/vcmi/config/vcmi/rmg/hdmod/oceansEleven.JSON

@@ -11,7 +11,6 @@
 				"size" : 8,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"terrainTypes" : [ "grass" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 1 },
 				"treasure" :
@@ -28,7 +27,6 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -42,7 +40,6 @@
 				"type" : "treasure",
 				"size" : 12,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"treasure" :
 				[
@@ -56,7 +53,6 @@
 				"type" : "treasure",
 				"size" : 10,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"treasure" :
 				[
@@ -70,7 +66,6 @@
 				"type" : "treasure",
 				"size" : 10,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"treasureLikeZone" : 4
 			},
@@ -80,7 +75,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt", "sand", "snow", "swamp", "lava" ],
 				"treasure" :
@@ -95,7 +89,6 @@
 				"type" : "treasure",
 				"size" : 10,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"treasureLikeZone" : 4
 			},
@@ -104,7 +97,6 @@
 				"type" : "treasure",
 				"size" : 10,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"treasureLikeZone" : 4
 			},
@@ -113,7 +105,6 @@
 				"type" : "treasure",
 				"size" : 12,
 				"monsters" : "strong",
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"treasureLikeZone" : 3
 			},
@@ -124,7 +115,6 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 2,
 				"treasureLikeZone" : 2
 			},
@@ -134,7 +124,6 @@
 				"size" : 8,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"terrainTypes" : [ "grass" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1

+ 0 - 10
Mods/vcmi/config/vcmi/rmg/hdmod/panic.JSON

@@ -12,8 +12,6 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -29,8 +27,6 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -42,7 +38,6 @@
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
 				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
 				"treasure" :
 				[
@@ -59,7 +54,6 @@
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
 				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 3,
 				"treasureLikeZone" : 3
 			},
@@ -70,7 +64,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"matchTerrainToTown" : false,
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"treasure" :
 				[
 					{ "min" : 6000, "max" : 8000, "density" : 6 },
@@ -84,7 +77,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "gold" : 1 },
 				"treasure" :
 				[
@@ -116,7 +108,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 6,
 				"treasureLikeZone" : 6
 			},
@@ -144,7 +135,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 6,
 				"treasureLikeZone" : 6
 			},

+ 0 - 10
Mods/vcmi/config/vcmi/rmg/hdmod/poorJebus.JSON

@@ -14,8 +14,6 @@
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"mines" : { "wood" : 4, "mercury" : 1, "ore" : 4, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 2 },
 				"treasure" :
 				[
@@ -32,8 +30,6 @@
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -45,8 +41,6 @@
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -58,8 +52,6 @@
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -69,8 +61,6 @@
 				"size" : 40,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand" ],
 				"mines" : { "gold" : 4 },

+ 3 - 12
Mods/vcmi/config/vcmi/rmg/hdmod/reckless.JSON

@@ -13,8 +13,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -31,8 +30,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -44,7 +42,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1 },
@@ -62,7 +59,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 3,
 				"mines" : { "sulfur" : 1, "crystal" : 1, "gems" : 1 },
 				"treasureLikeZone" : 3
@@ -72,7 +68,6 @@
 				"type" : "treasure",
 				"size" : 10,
 				"monsters" : "strong",
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 3,
 				"mines" : { "mercury" : 1, "crystal" : 1, "gems" : 1 },
 				"treasureLikeZone" : 3
@@ -84,7 +79,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 3,
 				"treasureLikeZone" : 3
@@ -96,7 +90,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
 				"allowedTowns" : [ "necropolis" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 3
@@ -106,7 +99,6 @@
 				"type" : "treasure",
 				"size" : 10,
 				"monsters" : "strong",
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 3,
 				"minesLikeZone" : 5,
 				"treasureLikeZone" : 3
@@ -117,8 +109,7 @@
 				"size" : 50,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 4 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "sand" ],
 				"mines" : { "wood" : 2, "ore" : 2, "gold" : 3 },

+ 4 - 4
Mods/vcmi/config/vcmi/rmg/hdmod/roadrunner.JSON

@@ -14,7 +14,7 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
 				"treasure" :
@@ -31,7 +31,7 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -95,7 +95,7 @@
 				"size" : 20,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"treasure" :
 				[
@@ -110,7 +110,7 @@
 				"size" : 20,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["necropolis"],
 				"matchTerrainToTown" : false,
 				"treasureLikeZone" : 7
 			}

+ 0 - 2
Mods/vcmi/config/vcmi/rmg/hdmod/shaaafworld.JSON

@@ -13,7 +13,6 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "grass" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 1 },
@@ -32,7 +31,6 @@
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 2 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"terrainTypeLikeZone" : 1,
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1

+ 4 - 4
Mods/vcmi/config/vcmi/rmg/hdmod/skirmish.JSON

@@ -12,7 +12,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"allowedMonsters" : [ "castle", "rampart", "conflux" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -29,7 +29,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"allowedMonsters" : [ "castle", "rampart", "conflux" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -128,7 +128,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"allowedMonsters" : [ "castle", "rampart", "conflux" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
@@ -145,7 +145,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"allowedMonsters" : [ "castle", "rampart", "conflux" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1

+ 2 - 2
Mods/vcmi/config/vcmi/rmg/hdmod/superslam.JSON

@@ -13,7 +13,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 1 },
 				"treasure" :
@@ -30,7 +30,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["castle", "necropolis", "conflux"],
 				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1

+ 6 - 44
Mods/vcmi/config/vcmi/rmg/hdmod/triad.JSON

@@ -12,8 +12,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "gold" : 1 },
 				"treasure" :
 				[
@@ -28,8 +26,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -39,8 +35,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -51,9 +45,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
 				"treasure" :
 				[
@@ -68,7 +60,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt", "grass", "subterra", "lava" ],
 				"treasure" :
@@ -84,7 +75,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -95,9 +85,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 4
 			},
@@ -107,7 +95,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -117,7 +104,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -128,9 +114,7 @@
 				"owner" : 3,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 4
 			},
@@ -140,7 +124,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -150,7 +133,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -161,7 +143,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
 				"allowedTowns" : [ "tower" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypes" : [ "snow" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 4 },
 				"treasure" :
@@ -209,8 +190,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"mines" : { "gold" : 1 },
 				"treasure" :
 				[
@@ -225,8 +204,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -236,8 +213,6 @@
 				"size" : 12,
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -248,9 +223,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1 },
 				"treasure" :
 				[
@@ -265,7 +238,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "dirt", "grass", "subterra", "lava" ],
 				"treasure" :
@@ -281,7 +253,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -292,9 +263,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 4
 			},
@@ -304,7 +273,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -314,7 +282,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -325,9 +292,7 @@
 				"owner" : 3,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 4,
 				"treasureLikeZone" : 4
 			},
@@ -337,7 +302,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -347,7 +311,6 @@
 				"size" : 10,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 5,
 				"treasureLikeZone" : 5
 			},
@@ -358,7 +321,6 @@
 				"monsters" : "strong",
 				"neutralTowns" : { "castles" : 1 },
 				"allowedTowns" : [ "tower" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypes" : [ "snow" ],
 				"mines" : { "mercury" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 4 },
 				"treasure" :

+ 4 - 16
Mods/vcmi/config/vcmi/rmg/hdmod/vortex.JSON

@@ -13,9 +13,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["tower", "necropolis", "conflux"],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 2 },
 				"treasure" :
 				[
@@ -31,9 +29,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["tower", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -44,9 +40,7 @@
 				"owner" : 3,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["tower", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -57,9 +51,7 @@
 				"owner" : 4,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "inferno", "dungeon", "stronghold", "fortress" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
-				"terrainTypes" : [ "dirt", "grass", "snow", "swamp", "rough", "subterra", "lava" ],
+				"bannedTowns" : ["tower", "necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -69,7 +61,6 @@
 				"size" : 4,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"treasure" :
 				[
 					{ "min" : 18000, "max" : 21000, "density" : 2 },
@@ -83,7 +74,6 @@
 				"size" : 4,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"treasureLikeZone" : 5
 			},
 			"7" :
@@ -92,7 +82,6 @@
 				"size" : 4,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"treasureLikeZone" : 5
 			},
 			"8" :
@@ -101,7 +90,6 @@
 				"size" : 4,
 				"monsters" : "strong",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"treasureLikeZone" : 5
 			},
 			"9" :

+ 4 - 4
Mods/vcmi/config/vcmi/rmg/hdmodUnused/balance m+u 200%.JSON

@@ -14,7 +14,7 @@
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
 				"townsAreSameType" : true,
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -32,7 +32,7 @@
 				"playerTowns" : { "castles" : 1 },
 				"neutralTowns" : { "towns" : 1 },
 				"townsAreSameType" : true,
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -103,7 +103,7 @@
 				"size" : 4,
 				"monsters" : "normal",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["castle"],
 				"mines" : { "crystal" : 1 },
 				"treasureLikeZone" : 6
 			},
@@ -122,7 +122,7 @@
 				"size" : 4,
 				"monsters" : "normal",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedTowns" : [ "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "conflux" ],
+				"bannedTowns" : ["castle"],
 				"minesLikeZone" : 6,
 				"treasureLikeZone" : 6
 			},

File diff suppressed because it is too large
+ 56 - 158
Mods/vcmi/config/vcmi/rmg/hdmodUnused/midnightMix.JSON


+ 2 - 2
Mods/vcmi/config/vcmi/rmg/hdmodUnused/skirmish m-u 200%.JSON

@@ -12,7 +12,7 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -28,7 +28,7 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
+				"bannedTowns" : ["necropolis", "conflux"],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},

+ 0 - 6
Mods/vcmi/config/vcmi/rmg/hdmodUnused/true random.JSON

@@ -12,7 +12,6 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -28,7 +27,6 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -248,7 +246,6 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -264,7 +261,6 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -484,7 +480,6 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"mines" : { "wood" : 1, "ore" : 1 },
 				"treasure" :
 				[
@@ -500,7 +495,6 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},

+ 0 - 6
Mods/vcmi/config/vcmi/rmg/heroes3/newcomers.JSON

@@ -12,7 +12,6 @@
 				"owner" : 1,
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 1 },
 				"treasure" :
 				[
@@ -27,7 +26,6 @@
 				"owner" : 1,
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -38,7 +36,6 @@
 				"owner" : 2,
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -49,7 +46,6 @@
 				"owner" : 2,
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -60,7 +56,6 @@
 				"owner" : 3,
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},
@@ -71,7 +66,6 @@
 				"owner" : 3,
 				"monsters" : "weak",
 				"playerTowns" : { "castles" : 1 },
-				"allowedTowns" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress" ],
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
 			},

+ 0 - 8
Mods/vcmi/config/vcmi/rmg/heroes3/southOfHell.JSON

@@ -12,7 +12,6 @@
 				"owner" : 1,
 				"monsters" : "normal",
 				"playerTowns" : { "towns" : 1, "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "snow" ],
 				"mines" : { "wood" : 1, "mercury" : 1, "ore" : 1, "sulfur" : 1, "crystal" : 1, "gems" : 1, "gold" : 1 },
@@ -30,7 +29,6 @@
 				"owner" : 2,
 				"monsters" : "normal",
 				"playerTowns" : { "towns" : 1, "castles" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"terrainTypeLikeZone" : 1,
 				"minesLikeZone" : 1,
 				"treasureLikeZone" : 1
@@ -43,7 +41,6 @@
 				"monsters" : "strong",
 				"playerTowns" : { "towns" : 2, "castles" : 3 },
 				"allowedTowns" : [ "inferno" ],
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"terrainTypes" : [ "lava" ],
 				"mines" : { "wood" : 2, "mercury" : 2, "ore" : 2, "sulfur" : 2, "crystal" : 2, "gems" : 2, "gold" : 2 },
@@ -60,7 +57,6 @@
 				"size" : 40,
 				"monsters" : "normal",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"minesLikeZone" : 1,
 				"treasure" :
@@ -75,7 +71,6 @@
 				"type" : "treasure",
 				"size" : 10,
 				"monsters" : "normal",
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"treasure" :
 				[
@@ -89,7 +84,6 @@
 				"type" : "treasure",
 				"size" : 15,
 				"monsters" : "normal",
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"treasure" :
 				[
@@ -103,7 +97,6 @@
 				"type" : "treasure",
 				"size" : 15,
 				"monsters" : "normal",
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"treasureLikeZone" : 6
 			},
@@ -142,7 +135,6 @@
 				"size" : 15,
 				"monsters" : "normal",
 				"neutralTowns" : { "towns" : 1 },
-				"allowedMonsters" : [ "castle", "rampart", "tower", "inferno", "necropolis", "dungeon", "stronghold", "fortress", "neutral" ],
 				"matchTerrainToTown" : false,
 				"treasure" :
 				[

+ 14 - 1
config/schemas/template.json

@@ -14,7 +14,10 @@
 				"playerTowns" : {"$ref" : "#/definitions/playerTowns"},				
 				"neuralTowns" : {"$ref" : "#/definitions/neuralTowns"},
 				"townsAreSameType" : {"$ref" : "#/definitions/townsAreSameType"},
+				"terrainTypes": {"$ref" : "#/definitions/terrains"},
+				"bannedTerrains": {"$ref" : "#/definitions/terrains"},
 				"monsters" : {"$ref" : "#/definitions/monsters"},
+				"bannedMonsters" : {"$ref" : "#/definitions/monsters"},
 				"mines" : {"$ref" : "#/definitions/mines"},
 				"treasure" : {
 					"type" : "array",
@@ -42,7 +45,8 @@
 		},
 		"connection" :
 		{
-			"required" : ["a", "b", "guard"],
+			"required" : ["a", "b"],
+			"additionalProperties" : true,
 			"properties" : {
 				"a" : {
 					"type" : "string"
@@ -54,6 +58,12 @@
 				{
 					"type" : "number",
 					"minimum" : 0
+				},
+				"type":
+				{
+					"type" : "string",
+					"additionalProperties" : false,
+					"enum" : ["wide", "fictive", "repulsive"]
 				}
 			}
 		},
@@ -68,6 +78,9 @@
 	{
 		"required" : ["zones", "connections"],
 		"additionalProperties" : false,
+		"description" : {
+			"type": "string"
+		},
 		"zones" : {
 			"type" : "object",
 			"additionalProperties" : {"$ref" : "#/definitions/zone"	}						

+ 27 - 1
lib/GameConstants.cpp

@@ -33,6 +33,7 @@
 #include "StringConstants.h"
 #include "CGeneralTextHandler.h"
 #include "CModHandler.h"//todo: remove
+#include "TerrainHandler.h" //TODO: remove
 #include "BattleFieldHandler.h"
 #include "ObstacleHandler.h"
 
@@ -203,7 +204,7 @@ const FactionID FactionID::NEUTRAL = FactionID(9);
 
 si32 FactionID::decode(const std::string & identifier)
 {
-	auto rawId = VLC->modh->identifiers.getIdentifier(CModHandler::scopeGame(), "faction", identifier);
+	auto rawId = VLC->modh->identifiers.getIdentifier(CModHandler::scopeGame(), entityType(), identifier);
 	if(rawId)
 		return rawId.value();
 	else
@@ -215,6 +216,31 @@ std::string FactionID::encode(const si32 index)
 	return VLC->factions()->getByIndex(index)->getJsonKey();
 }
 
+std::string FactionID::entityType()
+{
+	return "faction";
+}
+
+
+si32 TerrainID::decode(const std::string & identifier)
+{
+	auto rawId = VLC->modh->identifiers.getIdentifier(CModHandler::scopeGame(), entityType(), identifier);
+	if(rawId)
+		return rawId.value();
+	else
+		return static_cast<si32>(ETerrainId::NONE);
+}
+
+std::string TerrainID::encode(const si32 index)
+{
+	return VLC->terrainTypeHandler->getByIndex(index)->getJsonKey();
+}
+
+std::string TerrainID::entityType()
+{
+	return "terrain";
+}
+
 std::ostream & operator<<(std::ostream & os, const EActionType actionType)
 {
 	static const std::map<EActionType, std::string> actionTypeToString =

+ 10 - 2
lib/GameConstants.h

@@ -459,11 +459,19 @@ class FactionID : public BaseForID<FactionID, int32_t>
 	DLL_LINKAGE static const FactionID CONFLUX;
 	DLL_LINKAGE static const FactionID NEUTRAL;
 
-	///json serialization helpers
-	static si32 decode(const std::string & identifier);
+	static si32 decode(const std::string& identifier);
 	static std::string encode(const si32 index);
+	static std::string entityType();
 };
 
+class TerrainID
+{
+	//Dummy class used only for serialization
+public:
+	static si32 decode(const std::string & identifier);
+	static std::string encode(const si32 index);
+	static std::string entityType();
+};
 
 class BuildingID
 {

+ 49 - 43
lib/rmg/CRmgTemplate.cpp

@@ -65,6 +65,7 @@ void CTreasureInfo::serializeJson(JsonSerializeFormat & handler)
 namespace rmg
 {
 
+//FIXME: This is never used, instead TerrainID is used
 class TerrainEncoder
 {
 public:
@@ -145,9 +146,6 @@ ZoneOptions::ZoneOptions():
 	terrainTypeLikeZone(NO_ZONE),
 	treasureLikeZone(NO_ZONE)
 {
-	for(const auto & terr : VLC->terrainTypeHandler->objects)
-		if(terr->isLand() && terr->isPassable())
-			terrainTypes.insert(terr->getId());
 }
 
 TRmgTemplateZoneId ZoneOptions::getId() const
@@ -187,18 +185,36 @@ std::optional<int> ZoneOptions::getOwner() const
 	return owner;
 }
 
-const std::set<TerrainId> & ZoneOptions::getTerrainTypes() const
+const std::set<TerrainId> ZoneOptions::getTerrainTypes() const
 {
-	return terrainTypes;
+	if (terrainTypes.empty())
+	{
+		return vstd::difference(getDefaultTerrainTypes(), bannedTerrains);
+	}
+	else
+	{
+		return terrainTypes;
+	}
 }
 
 void ZoneOptions::setTerrainTypes(const std::set<TerrainId> & value)
 {
-	//assert(value.find(ETerrainType::NONE) == value.end() &&
-	//	   value.find(ETerrainType::WATER) == value.end() && value.find(ETerrainType::ROCK) == value.end());
 	terrainTypes = value;
 }
 
+std::set<TerrainId> ZoneOptions::getDefaultTerrainTypes() const
+{
+	std::set<TerrainId> terrains;
+	for (auto terrain : VLC->terrainTypeHandler->objects)
+	{
+		if (terrain->isLand() && terrain->isPassable())
+		{
+			terrains.insert(terrain->getId());
+		}
+	}
+	return terrains;
+}
+
 std::set<FactionID> ZoneOptions::getDefaultTownTypes() const
 {
 	std::set<FactionID> defaultTowns;
@@ -210,9 +226,17 @@ std::set<FactionID> ZoneOptions::getDefaultTownTypes() const
 	return defaultTowns;
 }
 
-const std::set<FactionID> & ZoneOptions::getTownTypes() const
+const std::set<FactionID> ZoneOptions::getTownTypes() const
 {
-	return townTypes;
+	if (townTypes.empty())
+	{
+		//Assume that all towns are allowed, unless banned
+		return vstd::difference(getDefaultTownTypes(), bannedTownTypes);
+	}
+	else 
+	{
+		return vstd::difference(townTypes, bannedTownTypes);
+	}
 }
 
 void ZoneOptions::setTownTypes(const std::set<FactionID> & value)
@@ -225,9 +249,9 @@ void ZoneOptions::setMonsterTypes(const std::set<FactionID> & value)
 	monsterTypes = value;
 }
 
-const std::set<FactionID> & ZoneOptions::getMonsterTypes() const
+const std::set<FactionID> ZoneOptions::getMonsterTypes() const
 {
-	return monsterTypes;
+	return vstd::difference(monsterTypes, bannedMonsters);
 }
 
 void ZoneOptions::setMinesInfo(const std::map<TResource, ui16> & value)
@@ -350,37 +374,15 @@ void ZoneOptions::serializeJson(JsonSerializeFormat & handler)
 
 	if(terrainTypeLikeZone == NO_ZONE)
 	{
-		JsonNode node;
-		if(handler.saving)
-		{
-			node.setType(JsonNode::JsonType::DATA_VECTOR);
-			for(const auto & ttype : terrainTypes)
-			{
-				JsonNode n;
-				n.String() = VLC->terrainTypeHandler->getById(ttype)->getJsonKey();
-				node.Vector().push_back(n);
-			}
-		}
-		handler.serializeRaw("terrainTypes", node, std::nullopt);
-		if(!handler.saving)
-		{
-			if(!node.Vector().empty())
-			{
-				terrainTypes.clear();
-				for(const auto & ttype : node.Vector())
-				{
-					VLC->modh->identifiers.requestIdentifier("terrain", ttype, [this](int32_t identifier)
-					{
-						terrainTypes.emplace(identifier);
-					});
-				}
-			}
-		}
+		handler.serializeIdArray<TerrainId, TerrainID>("terrainTypes", terrainTypes, std::set<TerrainId>());
+		handler.serializeIdArray<TerrainId, TerrainID>("bannedTerrains", bannedTerrains, std::set<TerrainId>());
 	}
 
 	handler.serializeBool("townsAreSameType", townsAreSameType, false);
-	handler.serializeIdArray<FactionID, FactionID>("allowedMonsters", monsterTypes, VLC->townh->getAllowedFactions(false));
-	handler.serializeIdArray<FactionID, FactionID>("allowedTowns", townTypes, VLC->townh->getAllowedFactions(true));
+	handler.serializeIdArray<FactionID>("allowedMonsters", monsterTypes, std::set<FactionID>());
+	handler.serializeIdArray<FactionID>("bannedMonsters", bannedMonsters, std::set<FactionID>());
+	handler.serializeIdArray<FactionID>("allowedTowns", townTypes, std::set<FactionID>());
+	handler.serializeIdArray<FactionID>("bannedTowns", bannedTownTypes, std::set<FactionID>());
 
 	{
 		//TODO: add support for std::map to serializeEnum
@@ -733,8 +735,6 @@ void CRmgTemplate::serializeJson(JsonSerializeFormat & handler)
 			}
 		}
 	}
-	if(!handler.saving)
-		afterLoad();
 }
 
 std::set<TerrainId> CRmgTemplate::inheritTerrainType(std::shared_ptr<ZoneOptions> zone, uint32_t iteration /* = 0 */)
@@ -750,6 +750,7 @@ std::set<TerrainId> CRmgTemplate::inheritTerrainType(std::shared_ptr<ZoneOptions
 		const auto otherZone = zones.at(zone->getTerrainTypeLikeZone());
 		zone->setTerrainTypes(inheritTerrainType(otherZone, iteration));
 	}
+	//This implicitely excludes banned terrains
 	return zone->getTerrainTypes();
 }
 
@@ -795,12 +796,17 @@ void CRmgTemplate::afterLoad()
 		inheritTerrainType(zone);
 		inheritMineTypes(zone);
 		inheritTreasureInfo(zone);
+
+		//TODO: Inherit monster types as well
+		auto monsterTypes = zone->getMonsterTypes();
+		if (monsterTypes.empty())
+		{
+			zone->setMonsterTypes(VLC->townh->getAllowedFactions(false));
+		}
 	}
 
 	for(const auto & connection : connectedZoneIds)
 	{
-		//TODO: Remember connection details and allow to access them from anywhere
-
 		auto id1 = connection.getZoneA();
 		auto id2 = connection.getZoneB();
 

+ 8 - 4
lib/rmg/CRmgTemplate.h

@@ -139,14 +139,15 @@ public:
 	void setSize(int value);
 	std::optional<int> getOwner() const;
 
-	const std::set<TerrainId> & getTerrainTypes() const;
+	const std::set<TerrainId> getTerrainTypes() const;
 	void setTerrainTypes(const std::set<TerrainId> & value);
+	std::set<TerrainId> getDefaultTerrainTypes() const;
 
 	const CTownInfo & getPlayerTowns() const;
 	const CTownInfo & getNeutralTowns() const;
 	std::set<FactionID> getDefaultTownTypes() const;
-	const std::set<FactionID> & getTownTypes() const;
-	const std::set<FactionID> & getMonsterTypes() const;
+	const std::set<FactionID> getTownTypes() const;
+	const std::set<FactionID> getMonsterTypes() const;
 
 	void setTownTypes(const std::set<FactionID> & value);
 	void setMonsterTypes(const std::set<FactionID> & value);
@@ -185,10 +186,13 @@ protected:
 	CTownInfo neutralTowns;
 	bool matchTerrainToTown;
 	std::set<TerrainId> terrainTypes;
+	std::set<TerrainId> bannedTerrains;
 	bool townsAreSameType;
 
 	std::set<FactionID> townTypes;
+	std::set<FactionID> bannedTownTypes;
 	std::set<FactionID> monsterTypes;
+	std::set<FactionID> bannedMonsters;
 
 	std::map<TResource, ui16> mines; //obligatory mines to spawn in this zone
 
@@ -245,6 +249,7 @@ public:
 	void validate() const; /// Tests template on validity and throws exception on failure
 
 	void serializeJson(JsonSerializeFormat & handler);
+	void afterLoad();
 
 private:
 	std::string id;
@@ -255,7 +260,6 @@ private:
 	std::vector<rmg::ZoneConnection> connectedZoneIds;
 	std::set<EWaterContent::EWaterContent> allowedWaterContent;
 
-	void afterLoad();
 	std::set<TerrainId> inheritTerrainType(std::shared_ptr<rmg::ZoneOptions> zone, uint32_t iteration = 0);
 	std::map<TResource, ui16> inheritMineTypes(std::shared_ptr<rmg::ZoneOptions> zone, uint32_t iteration = 0);
 	std::vector<CTreasureInfo> inheritTreasureInfo(std::shared_ptr<rmg::ZoneOptions> zone, uint32_t iteration = 0);

+ 8 - 0
lib/rmg/CRmgTemplateStorage.cpp

@@ -26,6 +26,14 @@ void CRmgTemplateStorage::loadObject(std::string scope, std::string name, const
 	loadObject(scope, name, data);
 }
 
+void CRmgTemplateStorage::afterLoadFinalization()
+{
+	for (auto& temp : templates)
+	{
+		temp.second.afterLoad();
+	}
+}
+
 void CRmgTemplateStorage::loadObject(std::string scope, std::string name, const JsonNode & data)
 {
 	try

+ 2 - 0
lib/rmg/CRmgTemplateStorage.h

@@ -30,6 +30,8 @@ public:
 	/// loads single object into game. Scope is namespace of this object, same as name of source mod
 	virtual void loadObject(std::string scope, std::string name, const JsonNode & data) override;
 	virtual void loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) override;
+
+	void afterLoadFinalization() override;
 	
 	const CRmgTemplate* getTemplate(const std::string & templateName) const;
 	std::vector<const CRmgTemplate *> getTemplates() const;

+ 15 - 6
lib/rmg/modificators/TerrainPainter.cpp

@@ -73,13 +73,22 @@ void TerrainPainter::initTerrainType()
 			auto terrainTypes = zone.getTerrainTypes();
 			if (terrainTypes.empty())
 			{
-				logGlobal->warn("No terrain types found, falling back to DIRT");
-				zone.setTerrainType(ETerrainId::DIRT);
-			}
-			else
-			{
-				zone.setTerrainType(*RandomGeneratorUtil::nextItem(terrainTypes, zone.getRand()));
+				//Fill with all terain types by default
+				{
+					for (auto terrain : VLC->terrainTypeHandler->objects)
+					{
+						if (terrain->isLand() && terrain->isPassable())
+						{
+							if ((terrain->isSurface() && !zone.isUnderground()) ||
+								(terrain->isUnderground() && zone.isUnderground()))
+							{
+								terrainTypes.insert(TerrainId(terrain->getId()));
+							}
+						}
+					}
+				}
 			}
+			zone.setTerrainType(*RandomGeneratorUtil::nextItem(terrainTypes, zone.getRand()));
 		}
 
 		//Now, replace disallowed terrains on surface and in the underground

+ 13 - 5
lib/serializer/JsonSerializeFormat.h

@@ -10,6 +10,8 @@
 #pragma once
 
 #include "../JsonNode.h"
+#include "../CModHandler.h"
+#include "../VCMI_Lib.h"
 
 VCMI_LIB_NAMESPACE_BEGIN
 
@@ -334,6 +336,8 @@ public:
 	}
 
 	///si32-convertible identifier set <-> Json array of string
+	///Type U is only used for code & decode
+	///TODO: Auto deduce U based on T?
 	template <typename T, typename U = T>
 	void serializeIdArray(const std::string & fieldName, std::set<T> & value, const std::set<T> & defaultValue)
 	{
@@ -348,12 +352,14 @@ public:
 				si32 item = static_cast<si32>(vitem);
 				temp.push_back(item);
 			}
+			serializeInternal(fieldName, temp, &U::decode, &U::encode);
 		}
 
-		serializeInternal(fieldName, temp, &U::decode, &U::encode);
 		if(!saving)
 		{
-			if(temp.empty())
+			JsonNode node;
+			serializeRaw(fieldName, node, std::nullopt);
+			if(node.Vector().empty())
 			{
 				value = defaultValue;
 			}
@@ -361,10 +367,12 @@ public:
 			{
 				value.clear();
 
-				for(const si32 item : temp)
+				for(const auto & id : node.Vector())
 				{
-					T vitem = static_cast<T>(item);
-					value.insert(vitem);
+					VLC->modh->identifiers.requestIdentifier(U::entityType(), id, [&value](int32_t identifier)
+					{
+						value.emplace(identifier);
+					});
 				}
 			}
 		}

Some files were not shown because too many files changed in this diff