mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	- Implemented object per zone limit
- Various tweaks for Travis & repo
This commit is contained in:
		| @@ -1,817 +0,0 @@ | ||||
| { | ||||
| 	"core:creatureBank" : { | ||||
| 		"types" : { | ||||
| 			"huntingLodge" : { | ||||
| 				"name" : "Hunting Lodge", | ||||
| 				"index" : 11, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 3, "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 4, "type" : "woodElf" }, | ||||
| 							{ "amount": 3, "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 4, "type" : "woodElf" } | ||||
| 						], | ||||
| 						"combat_value": 100, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"wood" : 15, | ||||
| 								"gold" : 500 | ||||
| 							} | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 4, "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 6, "type" : "woodElf" }, | ||||
| 							{ "amount": 4, "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 6, "type" : "woodElf" } | ||||
| 						], | ||||
| 						"combat_value": 150, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"wood" : 20, | ||||
| 								"gold" : 500 | ||||
| 							}, | ||||
| 							"value": 3000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 5, "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 8, "type" : "woodElf" }, | ||||
| 							{ "amount": 5, "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 8, "type" : "woodElf" } | ||||
| 						], | ||||
| 						"combat_value": 200, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"wood" : 25, | ||||
| 								"gold" : 500 | ||||
| 							}, | ||||
| 							"value": 4000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 6,  "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 10, "type" : "woodElf" }, | ||||
| 							{ "amount": 6,  "type" : "dendroidGuard" }, | ||||
| 							{ "amount": 10, "type" : "woodElf" } | ||||
| 						], | ||||
| 						"combat_value": 300, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"wood" : 40, | ||||
| 								"gold" : 1000 | ||||
| 							}, | ||||
| 							"value": 6000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"snowGrotto" :  | ||||
| 			{ | ||||
| 				"name" : "Snow-covered Grotto", | ||||
| 				"index" : 12, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 5,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 20, "type" :  "masterGremlin" }, | ||||
| 							{ "amount": 5,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 20, "type" :  "masterGremlin" } | ||||
| 						], | ||||
| 						"combat_value": 100, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 15, | ||||
| 								"gold" : 500 | ||||
| 							} | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 6,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 30, "type" :  "masterGremlin" }, | ||||
| 							{ "amount": 6,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 30, "type" :  "masterGremlin" } | ||||
| 						], | ||||
| 						"combat_value": 150, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 20, | ||||
| 								"gold" : 500 | ||||
| 							}, | ||||
| 							"value": 3000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 7,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 40, "type" :  "masterGremlin" }, | ||||
| 							{ "amount": 7,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 40, "type" :  "masterGremlin" } | ||||
| 						], | ||||
| 						"combat_value": 200, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 30, | ||||
| 								"gold" : 500 | ||||
| 							}, | ||||
| 							"value": 4000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 8,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 50, "type" :  "masterGremlin" }, | ||||
| 							{ "amount": 8,  "type" :  "ironGolem" }, | ||||
| 							{ "amount": 50, "type" :  "masterGremlin" } | ||||
| 						], | ||||
| 						"combat_value": 300, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 40, | ||||
| 								"gold" : 1000 | ||||
| 							}, | ||||
| 							"value": 6000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"martialSpiritPalace" :  | ||||
| 			{ | ||||
| 				"name" : "Palace of Martial Spirit", | ||||
| 				"index" : 13, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 10, "type" :  "godWar" }, | ||||
| 							{ "amount": 10, "type" :  "godWar" }, | ||||
| 							{ "amount": 10, "type" :  "godWar" }, | ||||
| 							{ "amount": 10, "type" :  "godWar" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godWar" } | ||||
| 							], | ||||
| 							"value": 38000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 15, "type" :  "godWar" }, | ||||
| 							{ "amount": 15, "type" :  "godWar" }, | ||||
| 							{ "amount": 15, "type" :  "godWar" }, | ||||
| 							{ "amount": 15, "type" :  "godWar" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godWar" } | ||||
| 							], | ||||
| 							"value": 57000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 20, "type" :  "godWar" }, | ||||
| 							{ "amount": 20, "type" :  "godWar" }, | ||||
| 							{ "amount": 20, "type" :  "godWar" }, | ||||
| 							{ "amount": 20, "type" :  "godWar" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godWar" } | ||||
| 							], | ||||
| 							"value": 75000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 30, "type" :  "godWar" }, | ||||
| 							{ "amount": 30, "type" :  "godWar" }, | ||||
| 							{ "amount": 30, "type" :  "godWar" }, | ||||
| 							{ "amount": 30, "type" :  "godWar" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godWar" } | ||||
| 							], | ||||
| 							"value": 90000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"pacificationCitadel" : | ||||
| 			{ | ||||
| 				"name" : "Citadel of Pacification", | ||||
| 				"index" : 14, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 10, "type" :  "godPeace" }, | ||||
| 							{ "amount": 10, "type" :  "godPeace" }, | ||||
| 							{ "amount": 10, "type" :  "godPeace" }, | ||||
| 							{ "amount": 10, "type" :  "godPeace" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godPeace" } | ||||
| 							], | ||||
| 							"value": 38000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 15, "type" :  "godPeace" }, | ||||
| 							{ "amount": 15, "type" :  "godPeace" }, | ||||
| 							{ "amount": 15, "type" :  "godPeace" }, | ||||
| 							{ "amount": 15, "type" :  "godPeace" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godPeace" } | ||||
| 							], | ||||
| 							"value": 57000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 20, "type" :  "godPeace" }, | ||||
| 							{ "amount": 20, "type" :  "godPeace" }, | ||||
| 							{ "amount": 20, "type" :  "godPeace" }, | ||||
| 							{ "amount": 20, "type" :  "godPeace" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godPeace" } | ||||
| 							], | ||||
| 							"value": 75000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 30, "type" :  "godPeace" }, | ||||
| 							{ "amount": 30, "type" :  "godPeace" }, | ||||
| 							{ "amount": 30, "type" :  "godPeace" }, | ||||
| 							{ "amount": 30, "type" :  "godPeace" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godPeace" } | ||||
| 							], | ||||
| 							"value": 90000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"magiciansMonastery" : | ||||
| 			{ | ||||
| 				"name" : "Monastery of Magicians", | ||||
| 				"index" : 15, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 10, "type" :  "godMana" }, | ||||
| 							{ "amount": 10, "type" :  "godMana" }, | ||||
| 							{ "amount": 10, "type" :  "godMana" }, | ||||
| 							{ "amount": 10, "type" :  "godMana" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godMana" } | ||||
| 							], | ||||
| 							"value": 38000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 15, "type" :  "godMana" }, | ||||
| 							{ "amount": 15, "type" :  "godMana" }, | ||||
| 							{ "amount": 15, "type" :  "godMana" }, | ||||
| 							{ "amount": 15, "type" :  "godMana" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godMana" } | ||||
| 							], | ||||
| 							"value": 57000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 20, "type" :  "godMana" }, | ||||
| 							{ "amount": 20, "type" :  "godMana" }, | ||||
| 							{ "amount": 20, "type" :  "godMana" }, | ||||
| 							{ "amount": 20, "type" :  "godMana" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godMana" } | ||||
| 							], | ||||
| 							"value": 75000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 30, "type" :  "godMana" }, | ||||
| 							{ "amount": 30, "type" :  "godMana" }, | ||||
| 							{ "amount": 30, "type" :  "godMana" }, | ||||
| 							{ "amount": 30, "type" :  "godMana" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godMana" } | ||||
| 							], | ||||
| 							"value": 90000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"legendsLibrary" : | ||||
| 			{ | ||||
| 				"name" : "Library of Legends", | ||||
| 				"index" : 16, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 10, "type" :  "godLore" }, | ||||
| 							{ "amount": 10, "type" :  "godLore" }, | ||||
| 							{ "amount": 10, "type" :  "godLore" }, | ||||
| 							{ "amount": 10, "type" :  "godLore" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godLore" } | ||||
| 							], | ||||
| 							"value": 38000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 15, "type" :  "godLore" }, | ||||
| 							{ "amount": 15, "type" :  "godLore" }, | ||||
| 							{ "amount": 15, "type" :  "godLore" }, | ||||
| 							{ "amount": 15, "type" :  "godLore" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godLore" } | ||||
| 							], | ||||
| 							"value": 57000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 20, "type" :  "godLore" }, | ||||
| 							{ "amount": 20, "type" :  "godLore" }, | ||||
| 							{ "amount": 20, "type" :  "godLore" }, | ||||
| 							{ "amount": 20, "type" :  "godLore" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godLore" } | ||||
| 							], | ||||
| 							"value": 75000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 30, "type" :  "godLore" }, | ||||
| 							{ "amount": 30, "type" :  "godLore" }, | ||||
| 							{ "amount": 30, "type" :  "godLore" }, | ||||
| 							{ "amount": 30, "type" :  "godLore" } | ||||
| 						], | ||||
| 						"combat_value": 2000, | ||||
| 						"reward" : { | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 1, "type" :  "godLore" } | ||||
| 							], | ||||
| 							"value": 90000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"transylvanianTavern" : | ||||
| 			{ | ||||
| 				"name" : "Transylvanian Tavern", | ||||
| 				"index" : 17, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 2, "type" :  "vampire" }, | ||||
| 							{ "amount": 2, "type" :  "vampire" }, | ||||
| 							{ "amount": 2, "type" :  "vampire" }, | ||||
| 							{ "amount": 2, "type" :  "vampire" }, | ||||
| 							{ "amount": 2, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 100, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"gold" : 1500 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 3, "type" :  "vampireLord" } | ||||
| 							] | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 3, "type" :  "vampire" }, | ||||
| 							{ "amount": 3, "type" :  "vampire" }, | ||||
| 							{ "amount": 3, "type" :  "vampire" }, | ||||
| 							{ "amount": 3, "type" :  "vampire" }, | ||||
| 							{ "amount": 3, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 150, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"gold" : 2500 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 5, "type" :  "vampireLord" } | ||||
| 							], | ||||
| 							"value": 3000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 4, "type" :  "vampire" }, | ||||
| 							{ "amount": 4, "type" :  "vampire" }, | ||||
| 							{ "amount": 4, "type" :  "vampire" }, | ||||
| 							{ "amount": 4, "type" :  "vampire" }, | ||||
| 							{ "amount": 4, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 200, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"gold" : 3500 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 7, "type" :  "vampireLord" } | ||||
| 							], | ||||
| 							"value": 4000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 6, "type" :  "vampire" }, | ||||
| 							{ "amount": 6, "type" :  "vampire" }, | ||||
| 							{ "amount": 6, "type" :  "vampire" }, | ||||
| 							{ "amount": 6, "type" :  "vampire" }, | ||||
| 							{ "amount": 6, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 250, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"gold" : 5000 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 9, "type" :  "vampireLord" } | ||||
| 							], | ||||
| 							"value": 5000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"homeofthebat" : | ||||
| 			{ | ||||
| 				"name" : "Home of the Bat", | ||||
| 				"index" : 18, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 2, "type" :  "vampire" }, | ||||
| 							{ "amount": 2, "type" :  "vampire" }, | ||||
| 							{ "amount": 2, "type" :  "vampire", "upgrade_chance": 50 }, | ||||
| 							{ "amount": 2, "type" :  "vampire" }, | ||||
| 							{ "amount": 2, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 100, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 2, | ||||
| 								"sulfur" : 2, | ||||
| 								"crystal" : 2, | ||||
| 								"gems" : 2 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 3, "type" :  "vampireLord" } | ||||
| 							] | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 3, "type" :  "vampire" }, | ||||
| 							{ "amount": 3, "type" :  "vampire" }, | ||||
| 							{ "amount": 3, "type" :  "vampire", "upgrade_chance": 70 }, | ||||
| 							{ "amount": 3, "type" :  "vampire" }, | ||||
| 							{ "amount": 3, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 150, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 3, | ||||
| 								"sulfur" : 3, | ||||
| 								"crystal" : 3, | ||||
| 								"gems" : 3 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 5, "type" :  "vampireLord" } | ||||
| 							], | ||||
| 							"value": 3000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 4, "type" :  "vampire" }, | ||||
| 							{ "amount": 4, "type" :  "vampire" }, | ||||
| 							{ "amount": 4, "type" :  "vampire", "upgrade_chance": 80 }, | ||||
| 							{ "amount": 4, "type" :  "vampire" }, | ||||
| 							{ "amount": 4, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 200, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 4, | ||||
| 								"sulfur" : 4, | ||||
| 								"crystal" : 4, | ||||
| 								"gems" : 4 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 7, "type" :  "vampireLord" } | ||||
| 							], | ||||
| 							"value": 4000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 6, "type" :  "vampire" }, | ||||
| 							{ "amount": 6, "type" :  "vampire" }, | ||||
| 							{ "amount": 6, "type" :  "vampire", "upgrade_chance": 50 }, | ||||
| 							{ "amount": 6, "type" :  "vampire" }, | ||||
| 							{ "amount": 6, "type" :  "vampire" } | ||||
| 						], | ||||
| 						"combat_value": 250, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 5, | ||||
| 								"sulfur" : 5, | ||||
| 								"crystal" : 5, | ||||
| 								"gems" : 5 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 9, "type" :  "vampireLord" } | ||||
| 							], | ||||
| 							"value": 5000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"lostBottle" : | ||||
| 			{ | ||||
| 				"name" : "Lost Bottle", | ||||
| 				"index" : 19, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 2, "type" :  "genie" }, | ||||
| 							{ "amount": 2, "type" :  "genie" }, | ||||
| 							{ "amount": 2, "type" :  "genie", "upgrade_chance": 50 }, | ||||
| 							{ "amount": 2, "type" :  "genie" }, | ||||
| 							{ "amount": 2, "type" :  "genie" } | ||||
| 						], | ||||
| 						"combat_value": 100, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 2, | ||||
| 								"sulfur" : 2, | ||||
| 								"crystal" : 2, | ||||
| 								"gems" : 2 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 3, "type" :  "genie" } | ||||
| 							] | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 3, "type" :  "genie" }, | ||||
| 							{ "amount": 3, "type" :  "genie" }, | ||||
| 							{ "amount": 3, "type" :  "genie", "upgrade_chance": 70 }, | ||||
| 							{ "amount": 3, "type" :  "genie" }, | ||||
| 							{ "amount": 3, "type" :  "genie" } | ||||
| 						], | ||||
| 						"combat_value": 150, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 3, | ||||
| 								"sulfur" : 3, | ||||
| 								"crystal" : 3, | ||||
| 								"gems" : 3 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 5, "type" :  "genie" } | ||||
| 							], | ||||
| 							"value": 3000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 4, "type" :  "genie" }, | ||||
| 							{ "amount": 4, "type" :  "genie" }, | ||||
| 							{ "amount": 4, "type" :  "genie", "upgrade_chance": 80 }, | ||||
| 							{ "amount": 4, "type" :  "genie" }, | ||||
| 							{ "amount": 4, "type" :  "genie" } | ||||
| 						], | ||||
| 						"combat_value": 200, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 4, | ||||
| 								"sulfur" : 4, | ||||
| 								"crystal" : 4, | ||||
| 								"gems" : 4 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 7, "type" :  "genie" } | ||||
| 							], | ||||
| 							"value": 4000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 6, "type" :  "genie" }, | ||||
| 							{ "amount": 6, "type" :  "genie" }, | ||||
| 							{ "amount": 6, "type" :  "genie", "upgrade_chance": 90 }, | ||||
| 							{ "amount": 6, "type" :  "genie" }, | ||||
| 							{ "amount": 6, "type" :  "genie" } | ||||
| 						], | ||||
| 						"combat_value": 250, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"mercury" : 5, | ||||
| 								"sulfur" : 5, | ||||
| 								"crystal" : 5, | ||||
| 								"gems" : 5 | ||||
| 							}, | ||||
| 							"creatures": [ | ||||
| 								{ "amount": 9, "type" :  "genie" } | ||||
| 							], | ||||
| 							"value": 5000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"grotto" : | ||||
| 			{ | ||||
| 				"name" : "Grotto", | ||||
| 				"index" : 20, | ||||
| 				"levels": [ | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 3, "type" :  "harpy" }, | ||||
| 							{ "amount": 3, "type" :  "beholder" }, | ||||
| 							{ "amount": 3, "type" :  "harpy" }, | ||||
| 							{ "amount": 3, "type" :  "beholder" } | ||||
| 						], | ||||
| 						"combat_value": 200, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 20, | ||||
| 								"gold" : 1000 | ||||
| 							} | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 4, "type" :  "harpy" }, | ||||
| 							{ "amount": 4, "type" :  "beholder" }, | ||||
| 							{ "amount": 4, "type" :  "harpy" }, | ||||
| 							{ "amount": 4, "type" :  "beholder" } | ||||
| 						], | ||||
| 						"combat_value": 300, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 25, | ||||
| 								"gold" : 1000 | ||||
| 							}, | ||||
| 							"value": 3000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 30, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 5, "type" :  "harpy" }, | ||||
| 							{ "amount": 5, "type" :  "beholder" }, | ||||
| 							{ "amount": 5, "type" :  "harpy" }, | ||||
| 							{ "amount": 5, "type" :  "beholder" } | ||||
| 						], | ||||
| 						"combat_value": 400, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 30, | ||||
| 								"gold" : 1500 | ||||
| 							}, | ||||
| 							"value": 4000 | ||||
| 						} | ||||
| 					}, | ||||
| 					{ | ||||
| 						"chance": 10, | ||||
| 						"guards": [ | ||||
| 							{ "amount": 6, "type" :  "harpy" }, | ||||
| 							{ "amount": 6, "type" :  "beholder" }, | ||||
| 							{ "amount": 6, "type" :  "harpy" }, | ||||
| 							{ "amount": 6, "type" :  "beholder" } | ||||
| 						], | ||||
| 						"combat_value": 500, | ||||
| 						"reward" : { | ||||
| 							"resources": | ||||
| 							{ | ||||
| 								"ore" : 35, | ||||
| 								"gold" : 2000 | ||||
| 							}, | ||||
| 							"value": 5000 | ||||
| 						} | ||||
| 					} | ||||
| 				] | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -1,31 +0,0 @@ | ||||
| { | ||||
| 	"core:creatureGeneratorCommon" : { | ||||
| 		"types" : { | ||||
| 			"supremeArchangel" : { "index" : 80, "creatures" : [[ "supremeArchangel" ]] }, | ||||
| 			"diamondDragon" : { "index" : 81, "creatures" : [[ "diamondDragon" ]] }, | ||||
| 			"lordofThunder" : { "index" : 82, "creatures" : [[ "lordofThunder" ]] }, | ||||
| 			"hellBaron" : { "index" : 83, "creatures" : [[ "hellBaron" ]] }, | ||||
| 			"bloodDragon" : { "index" : 84, "creatures" : [[ "bloodDragon" ]] }, | ||||
|  | ||||
| 			"darknessDragon" : { "index" : 85, "creatures" : [[ "darknessDragon" ]] }, | ||||
| 			"ghostBehemoth" : { "index" : 86, "creatures" : [[ "ghostBehemoth" ]] }, | ||||
| 			"hellHydra" : { "index" : 87, "creatures" : [[ "hellHydra" ]] }, | ||||
| 			"sacredPhoenix" : { "index" : 88, "creatures" : [[ "sacredPhoenix" ]] }, | ||||
| 			"lavaSharpshooter" : { "index" : 89, "creatures" : [[ "lavaSharpshooter" ]] }, | ||||
|  | ||||
| 			"arcticSharpshooter" : { "index" : 90, "creatures" : [[ "arcticSharpshooter" ]] }, | ||||
| 			"gorynych" : { "index" : 91, "creatures" : [[ "gorynych" ]] }, | ||||
| 			"nightmare" : { "index" : 92, "creatures" : [[ "nightmare" ]] }, | ||||
| 			"minotaurKing2" : { "index" : 93, "creatures" : [[ "minotaurKing2" ]] }, | ||||
| 			"warZealot" : { "index" : 94, "creatures" : [[ "warZealot" ]] }, | ||||
|  | ||||
| 			"santaGremlin" : { "index" : 95, "creatures" : [[ "santaGremlin" ]] }, | ||||
| 			"sylvanCentaur" : { "index" : 96, "creatures" : [[ "sylvanCentaur" ]] }, | ||||
| 			"sorceress" : { "index" : 97, "creatures" : [[ "sorceress" ]] }, | ||||
| 			"werewolf" : { "index" : 98, "creatures" : [[ "werewolf" ]] }, | ||||
| 			"hellSteed" : { "index" : 99, "creatures" : [[ "hellSteed" ]] }, | ||||
|  | ||||
| 			"dracolich" : { "index" :100, "creatures" : [[ "dracolich" ]] } | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -1,72 +0,0 @@ | ||||
| { | ||||
| 	"name" : "In The Wake of Gods", | ||||
| 	"description" : "Unnofficial addon for Heroes of Might and Magic III", | ||||
|  | ||||
| 	"version" : "0.0.0", | ||||
| 	"author" : "WoG Team", | ||||
| 	"contact" : "http://forum.vcmi.eu/index.php", | ||||
| 	"modType" : "Expansion", | ||||
|  | ||||
| 	"artifacts" :  | ||||
| 	[ | ||||
| 		"config/wog/artifacts.json" | ||||
| 	], | ||||
|  | ||||
| 	"creatures" :  | ||||
| 	[ | ||||
| 		"config/wog/creatures.json" | ||||
| 	], | ||||
|  | ||||
| 	"heroClasses" :  | ||||
| 	[ | ||||
| 		"config/wog/heroClasses.json" | ||||
| 	], | ||||
|  | ||||
| 	"objects" : | ||||
| 	[ | ||||
| 		"config/wog/dwellings.json", | ||||
| 		"config/wog/creatureBanks.json" | ||||
| 	], | ||||
|  | ||||
| 	"filesystem": | ||||
| 	{ | ||||
| 		"" : | ||||
| 		[ | ||||
| 			{ "type" : "map", "path" : "/Config/wogFileOverrides.json"} | ||||
| 		], | ||||
| 		"CONFIG/" : | ||||
| 		[ | ||||
| 			{ "type" : "dir", "path" : "/Config"} | ||||
| 		], | ||||
| 		"DATA/" : | ||||
| 		[ | ||||
| 			{"type" : "lod", "path" : "/Data/hmm35wog.pac"}, | ||||
| 			{"type" : "dir", "path" : "/Data"} | ||||
| 		], | ||||
| 		"SPRITES/": | ||||
| 		[ | ||||
| 			{"type" : "lod", "path" : "/Data/hmm35wog.pac"}, | ||||
| 			{"type" : "lod", "path" : "/Data/wog - animated objects.pac"}, | ||||
| 			{"type" : "lod", "path" : "/Data/wog - animated trees.pac"}, | ||||
| 			{"type" : "lod", "path" : "/Data/wog - battle decorations.pac"} | ||||
| 		], | ||||
| 		"SOUNDS/": | ||||
| 		[ | ||||
| 			{"type" : "snd", "path" : "/Data/wog - sounds.snd"}, | ||||
| 			{"type" : "snd", "path" : "/Data/wog.snd"} | ||||
| 		], | ||||
| 		"MUSIC/": | ||||
| 		[ | ||||
| 			{"type" : "dir", "path" : "/Mp3"} | ||||
| 		], | ||||
| 		"VIDEO/": | ||||
| 		[ | ||||
| 			{"type" : "vid", "path" : "/Data/wog - video.vid"}, | ||||
| 			{"type" : "vid", "path" : "/Data/wog.vid"} | ||||
| 		], | ||||
| 		"MAPS/": | ||||
| 		[ | ||||
| 			{"type" : "dir", "path" : "/Maps"} | ||||
| 		] | ||||
| 	} | ||||
| } | ||||
| @@ -75,6 +75,8 @@ public: | ||||
| 	void readMap(CBinaryReader & reader); | ||||
| 	void readJson(const JsonNode & node); | ||||
|  | ||||
| 	bool operator==(const ObjectTemplate& ot) const { return (id == ot.id && subid == ot.subid); } | ||||
|  | ||||
| 	template <typename Handler> void serialize(Handler &h, const int version) | ||||
| 	{ | ||||
| 		h & usedTiles & allowedTerrains & animationFile & stringID; | ||||
|   | ||||
| @@ -700,6 +700,12 @@ bool CRmgTemplateZone::createTreasurePile (CMapGenerator* gen, int3 &pos) | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			//remove from possible objects | ||||
| 			auto oiptr = std::find(possibleObjects.begin(), possibleObjects.end(), oi); | ||||
| 			assert (oiptr != possibleObjects.end()); | ||||
| 			oiptr->maxPerZone--; | ||||
| 			//TODO | ||||
|  | ||||
| 			//update treasure pile area | ||||
| 			int3 visitablePos = info.nextTreasurePos; | ||||
|  | ||||
| @@ -1230,7 +1236,7 @@ bool CRmgTemplateZone::canObstacleBePlacedHere(CMapGenerator* gen, ObjectTemplat | ||||
| 	return true; | ||||
| } | ||||
|  | ||||
| bool CRmgTemplateZone::isAccessibleFromAnywhere (CMapGenerator* gen, ObjectTemplate &appearance,  int3 &tile, std::set<int3> &tilesBlockedByObject) const | ||||
| bool CRmgTemplateZone::isAccessibleFromAnywhere (CMapGenerator* gen, ObjectTemplate &appearance,  int3 &tile, const std::set<int3> &tilesBlockedByObject) const | ||||
| { | ||||
| 	bool accessible = false; | ||||
| 	for (int x = -1; x < 2; x++) | ||||
| @@ -1453,7 +1459,7 @@ ObjectInfo CRmgTemplateZone::getRandomObject (CMapGenerator* gen, CTreasurePileI | ||||
| 	//roulette wheel | ||||
| 	for (auto oi : possibleObjects) | ||||
| 	{ | ||||
| 		if (oi.value >= minValue && oi.value <= value) | ||||
| 		if (oi.value >= minValue && oi.value <= value && oi.maxPerZone > 0) | ||||
| 		{ | ||||
| 			int3 newVisitableOffset = oi.templ.getVisitableOffset(); //visitablePos assumes object will be shifter by visitableOffset | ||||
| 			int3 newVisitablePos = info.nextTreasurePos; | ||||
| @@ -1592,6 +1598,7 @@ ObjectInfo CRmgTemplateZone::getRandomObject (CMapGenerator* gen, CTreasurePileI | ||||
| void CRmgTemplateZone::addAllPossibleObjects (CMapGenerator* gen) | ||||
| { | ||||
| 	ObjectInfo oi; | ||||
| 	oi.maxPerMap = std::numeric_limits<ui32>().max(); | ||||
|  | ||||
| 	for (auto primaryID : VLC->objtypeh->knownObjects())  | ||||
| 	{  | ||||
| @@ -1611,6 +1618,7 @@ void CRmgTemplateZone::addAllPossibleObjects (CMapGenerator* gen) | ||||
| 						oi.value = handler->getRMGInfo().value; | ||||
| 						oi.probability = handler->getRMGInfo().rarity; | ||||
| 						oi.templ = temp; | ||||
| 						oi.maxPerZone = handler->getRMGInfo().zoneLimit; | ||||
| 						possibleObjects.push_back (oi); | ||||
| 					} | ||||
| 				} | ||||
| @@ -1618,6 +1626,9 @@ void CRmgTemplateZone::addAllPossibleObjects (CMapGenerator* gen) | ||||
| 		}  | ||||
| 	} | ||||
|  | ||||
| 	//all following objects are unlimited | ||||
| 	oi.maxPerZone = std::numeric_limits<ui32>().max(); | ||||
|  | ||||
| 	//dwellings | ||||
|  | ||||
| 	auto subObjects = VLC->objtypeh->knownSubObjects(Obj::CREATURE_GENERATOR1); | ||||
|   | ||||
| @@ -71,9 +71,13 @@ struct DLL_LINKAGE ObjectInfo | ||||
| 	ObjectTemplate templ; | ||||
| 	ui32 value; | ||||
| 	ui16 probability; | ||||
| 	ui32 maxPerZone; | ||||
| 	ui32 maxPerMap; | ||||
| 	std::function<CGObjectInstance *()> generateObject; | ||||
|  | ||||
| 	void setTemplate (si32 type, si32 subtype, ETerrainType terrain); | ||||
|  | ||||
| 	bool operator==(const ObjectInfo& oi) const { return (templ == oi.templ); } | ||||
| }; | ||||
|  | ||||
| struct DLL_LINKAGE CTreasurePileInfo | ||||
| @@ -207,7 +211,7 @@ private: | ||||
|  | ||||
| 	bool pointIsIn(int x, int y); | ||||
| 	void addAllPossibleObjects (CMapGenerator* gen); //add objects, including zone-specific, to possibleObjects | ||||
| 	bool isAccessibleFromAnywhere (CMapGenerator* gen, ObjectTemplate &appearance,  int3 &tile, std::set<int3> &tilesBlockedByObject) const; | ||||
| 	bool isAccessibleFromAnywhere (CMapGenerator* gen, ObjectTemplate &appearance, int3 &tile, const std::set<int3> &tilesBlockedByObject) const; | ||||
| 	bool findPlaceForObject(CMapGenerator* gen, CGObjectInstance* obj, si32 min_dist, int3 &pos); | ||||
| 	bool findPlaceForTreasurePile(CMapGenerator* gen, si32 min_dist, int3 &pos); | ||||
| 	bool canObstacleBePlacedHere(CMapGenerator* gen, ObjectTemplate &temp, int3 &pos); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user