1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Simplify town buildings configuration

Goal is to minimize amount of copy-pasted parts of town building
configuration and to reduce chance of modders accidentally breaking it.

For example, Grail in any town produces 5k gold and requires artifact to
be built. No need to copy-paste this in any town. And if modder wants to
more unique Grail, he provide custom parameters that will override
default properties.

As a bonus, since all building ID's are now in config, modders can use
it for reference instead of searching for examples

Changes:

- All H3 buildings now have entry in buildingsLibrary.json.
- Moved all common parameters of town buildings to buildingsLibrary.json
- Added all new building ID's to buildingsLibrary.json - level 8
dwelling, additional upgrades of dwellings & hordes
- Removed hardcoded mapping of strings to building ID's from code.

Should not break any existing mods, or cause them to fail validation
This commit is contained in:
Ivan Savenko
2025-07-14 15:31:01 +03:00
parent 2774502526
commit ae284e9c16
12 changed files with 258 additions and 231 deletions

View File

@@ -76,6 +76,20 @@
}, },
"resourceSilo": { "id" : 15, "requires" : [ "marketplace" ] }, "resourceSilo": { "id" : 15, "requires" : [ "marketplace" ] },
"blacksmith": { "id" : 16 }, "blacksmith": { "id" : 16 },
"special1": { "id" : 17 },
"ship" : { "id" : 20, "upgrades" : "shipyard" },
"special2": { "id" : 21 },
"special3": { "id" : 22 },
"special4": { "id" : 23 },
"grail" : {
"id" : 26,
"mode" : "grail",
"produce": { "gold": 5000 },
},
"extraTownHall": { "id" : 27, "requires" : [ "townHall" ], "mode" : "auto" },
"extraCityHall": { "id" : 28, "requires" : [ "cityHall" ], "mode" : "auto" },
"extraCapitol": { "id" : 29, "requires" : [ "capitol" ], "mode" : "auto" },
// Previously hardcoded buildings that might be used by mods // Previously hardcoded buildings that might be used by mods
// Section 1 - building with bonuses during sieges // Section 1 - building with bonuses during sieges
@@ -262,5 +276,77 @@
"val": 2 "val": 2
} }
] ]
} },
// Section 5 - H3 creature-related buildings
"horde1" : { "id" : 18 },
"horde1Upgr" : { "id" : 19, "mode" : "auto" },
"horde2" : { "id" : 24 },
"horde2Upgr" : { "id" : 25, "mode" : "auto" },
"dwellingLvl1": { "id" : 30 },
"dwellingLvl2": { "id" : 31 },
"dwellingLvl3": { "id" : 32 },
"dwellingLvl4": { "id" : 33 },
"dwellingLvl5": { "id" : 34 },
"dwellingLvl6": { "id" : 35 },
"dwellingLvl7": { "id" : 36 },
"dwellingUpLvl1": { "id" : 37 },
"dwellingUpLvl2": { "id" : 38 },
"dwellingUpLvl3": { "id" : 39 },
"dwellingUpLvl4": { "id" : 40 },
"dwellingUpLvl5": { "id" : 41 },
"dwellingUpLvl6": { "id" : 42 },
"dwellingUpLvl7": { "id" : 43 },
// Section 6 - VCMI extended creature-related buildings
"dwellingUp2Lvl1": { "id" : 44 },
"dwellingUp2Lvl2": { "id" : 45 },
"dwellingUp2Lvl3": { "id" : 46 },
"dwellingUp2Lvl4": { "id" : 47 },
"dwellingUp2Lvl5": { "id" : 48 },
"dwellingUp2Lvl6": { "id" : 49 },
"dwellingUp2Lvl7": { "id" : 50 },
"dwellingUp3Lvl1": { "id" : 51 },
"dwellingUp3Lvl2": { "id" : 52 },
"dwellingUp3Lvl3": { "id" : 53 },
"dwellingUp3Lvl4": { "id" : 54 },
"dwellingUp3Lvl5": { "id" : 55 },
"dwellingUp3Lvl6": { "id" : 56 },
"dwellingUp3Lvl7": { "id" : 57 },
"dwellingUp4Lvl1": { "id" : 58 },
"dwellingUp4Lvl2": { "id" : 59 },
"dwellingUp4Lvl3": { "id" : 60 },
"dwellingUp4Lvl4": { "id" : 61 },
"dwellingUp4Lvl5": { "id" : 62 },
"dwellingUp4Lvl6": { "id" : 63 },
"dwellingUp4Lvl7": { "id" : 64 },
"dwellingUp5Lvl1": { "id" : 65 },
"dwellingUp5Lvl2": { "id" : 66 },
"dwellingUp5Lvl3": { "id" : 67 },
"dwellingUp5Lvl4": { "id" : 68 },
"dwellingUp5Lvl5": { "id" : 69 },
"dwellingUp5Lvl6": { "id" : 70 },
"dwellingUp5Lvl7": { "id" : 71 },
"horde1Upgr2" : { "id" : 100, "mode" : "auto" },
"horde1Upgr3" : { "id" : 101, "mode" : "auto" },
"horde1Upgr4" : { "id" : 102, "mode" : "auto" },
"horde1Upgr5" : { "id" : 103, "mode" : "auto" },
"horde2Upgr2" : { "id" : 110, "mode" : "auto" },
"horde2Upgr3" : { "id" : 111, "mode" : "auto" },
"horde2Upgr4" : { "id" : 112, "mode" : "auto" },
"horde2Upgr5" : { "id" : 113, "mode" : "auto" },
"dwellingLvl8": { "id" : 150 },
"dwellingUpLvl8": { "id" : 151 },
"dwellingUp2Lvl8": { "id" : 152 },
"dwellingUp3Lvl8": { "id" : 153 },
"dwellingUp4Lvl8": { "id" : 154 },
"dwellingUp5Lvl8": { "id" : 155 }
} }

View File

@@ -187,9 +187,9 @@
], ],
"requires" : [ "shipyard" ] "requires" : [ "shipyard" ]
}, },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl3" }, "horde1": { "upgrades" : "dwellingLvl3" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl3", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl3", "requires" : [ "horde1" ] },
"ship": { "id" : 20, "upgrades" : "shipyard" }, "ship": { },
"special2": { "special2": {
"requires" : [ "dwellingLvl4" ], "requires" : [ "dwellingLvl4" ],
"mapObjectLikeBonuses" : "stables", "mapObjectLikeBonuses" : "stables",
@@ -219,23 +219,23 @@
], ],
"upgrades" : "tavern" "upgrades" : "tavern"
}, },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }, "bonuses": [ { "type": "MORALE", "val": 2, "propagator": "PLAYER" } ] }, "grail": { },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl4" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl4" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "allOf", [ "blacksmith" ], [ "dwellingLvl1" ] ] }, "dwellingLvl4": { "requires" : [ "allOf", [ "blacksmith" ], [ "dwellingLvl1" ] ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl4" ] ] }, "dwellingLvl5": { "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl4" ] ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "special2" ] }, "dwellingLvl6": { "requires" : [ "special2" ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "dwellingLvl5" ] }, "dwellingLvl7": { "requires" : [ "dwellingLvl5" ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4" }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4" },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5" }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5" },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7" }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7" },
"horde2" : null, "horde2" : null,
"horde2Upgr" : null, "horde2Upgr" : null,

View File

@@ -183,9 +183,9 @@
"blacksmith": { "warMachine" : "ballista" }, "blacksmith": { "warMachine" : "ballista" },
"special1": { "requires" : [ "marketplace" ], "marketModes" : ["resource-artifact", "artifact-resource"] }, "special1": { "requires" : [ "marketplace" ], "marketModes" : ["resource-artifact", "artifact-resource"] },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" }, "horde1": { "upgrades" : "dwellingLvl1" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ] },
"ship": { "id" : 20, "upgrades" : "shipyard" }, "ship": { },
"special2": { "special2": {
"requires" : [ "mageGuild1" ], "requires" : [ "mageGuild1" ],
"marketModes" : ["resource-skill"], "marketModes" : ["resource-skill"],
@@ -196,26 +196,26 @@
"earthMagic" "earthMagic"
] ]
}, },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }}, "grail": { },
"extraTownHall": { "id" : 27, "requires" : [ "townHall" ], "mode" : "auto" }, "extraTownHall": { },
"extraCityHall": { "id" : 28, "requires" : [ "cityHall" ], "mode" : "auto" }, "extraCityHall": { },
"extraCapitol": { "id" : 29, "requires" : [ "capitol" ], "mode" : "auto" }, "extraCapitol": { },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "allOf", [ "dwellingLvl1" ], [ "mageGuild1" ] ] }, "dwellingLvl2": { "requires" : [ "allOf", [ "dwellingLvl1" ], [ "mageGuild1" ] ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "allOf", [ "dwellingLvl1" ], [ "mageGuild1" ] ] }, "dwellingLvl3": { "requires" : [ "allOf", [ "dwellingLvl1" ], [ "mageGuild1" ] ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl2" ] }, "dwellingLvl4": { "requires" : [ "dwellingLvl2" ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl3" ] }, "dwellingLvl5": { "requires" : [ "dwellingLvl3" ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl5" ] ] }, "dwellingLvl6": { "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl5" ] ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "dwellingLvl6" ] }, "dwellingLvl7": { "requires" : [ "dwellingLvl6" ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4", "requires" : [ "dwellingLvl2" ] }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4", "requires" : [ "dwellingLvl2" ] },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5" }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5" },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6", "requires" : [ "mageGuild2" ] }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6", "requires" : [ "mageGuild2" ] },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7" }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7" },
"horde2" : null, "horde2" : null,
"horde2Upgr" : null, "horde2Upgr" : null,

View File

@@ -178,8 +178,8 @@
"blacksmith": { "warMachine" : "ballista" }, "blacksmith": { "warMachine" : "ballista" },
"special1": { "requires" : [ "marketplace" ], "marketModes" : ["resource-artifact", "artifact-resource"] }, "special1": { "requires" : [ "marketplace" ], "marketModes" : ["resource-artifact", "artifact-resource"] },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" }, "horde1": { "upgrades" : "dwellingLvl1" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ] },
"special2": { "special2": {
"requires" : [ "mageGuild1" ], "requires" : [ "mageGuild1" ],
"configuration" : { "configuration" : {
@@ -211,24 +211,23 @@
] ]
} }
}, },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }, "grail": { "bonuses": [ { "type": "PRIMARY_SKILL", "subtype": "primarySkill.spellpower", "val": 12 } ] },
"bonuses": [ { "type": "PRIMARY_SKILL", "subtype": "primarySkill.spellpower", "val": 12 } ] },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "allOf", [ "dwellingLvl2" ], [ "dwellingLvl3" ] ] }, "dwellingLvl4": { "requires" : [ "allOf", [ "dwellingLvl2" ], [ "dwellingLvl3" ] ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl4" ] }, "dwellingLvl5": { "requires" : [ "dwellingLvl4" ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "dwellingLvl4" ] }, "dwellingLvl6": { "requires" : [ "dwellingLvl4" ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "allOf", [ "mageGuild2" ], [ "dwellingLvl5" ], [ "dwellingLvl6" ] ] }, "dwellingLvl7": { "requires" : [ "allOf", [ "mageGuild2" ], [ "dwellingLvl5" ], [ "dwellingLvl6" ] ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4" }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4" },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5" }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5" },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7", "requires" : [ "mageGuild3" ] }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7", "requires" : [ "mageGuild3" ] },
"horde2" : null, "horde2" : null,
"horde2Upgr" : null, "horde2Upgr" : null,

View File

@@ -186,9 +186,9 @@
] ]
} }
}, },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" }, "horde1": { "upgrades" : "dwellingLvl1" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ] },
"ship": { "id" : 20, "upgrades" : "shipyard" }, "ship": { },
"special2": { "special2": {
"bonuses": [ "bonuses": [
{ {
@@ -209,29 +209,29 @@
], ],
"requires" : [ "special2" ] "requires" : [ "special2" ]
}, },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }, "grail": {
"bonuses": [ "bonuses": [
{ "type": "PRIMARY_SKILL", "subtype": "primarySkill.attack", "val": 10 }, { "type": "PRIMARY_SKILL", "subtype": "primarySkill.attack", "val": 10 },
{ "type": "PRIMARY_SKILL", "subtype": "primarySkill.defence", "val": 10 } { "type": "PRIMARY_SKILL", "subtype": "primarySkill.defence", "val": 10 }
] ]
}, },
"extraCapitol": { "id" : 29, "requires" : [ "capitol" ], "mode" : "auto" }, "extraCapitol": { "requires" : [ "capitol" ] },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl3" ] }, "dwellingLvl4": { "requires" : [ "dwellingLvl3" ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "allOf", [ "dwellingLvl2" ], [ "dwellingLvl3" ] ] }, "dwellingLvl5": { "requires" : [ "allOf", [ "dwellingLvl2" ], [ "dwellingLvl3" ] ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "dwellingLvl2" ] }, "dwellingLvl6": { "requires" : [ "dwellingLvl2" ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl6" ] ] }, "dwellingLvl7": { "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl6" ] ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1", "requires" : [ "tavern" ] }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1", "requires" : [ "tavern" ] },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4" }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4" },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5", "requires" : [ "resourceSilo" ] }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5", "requires" : [ "resourceSilo" ] },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7" }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7" },
"horde2" : null, "horde2" : null,
"horde2Upgr" : null, "horde2Upgr" : null,

View File

@@ -178,8 +178,8 @@
"resourceSilo": { "produce": { "mercury": 1 } }, "resourceSilo": { "produce": { "mercury": 1 } },
"blacksmith": { "warMachine" : "ammoCart" }, "blacksmith": { "warMachine" : "ammoCart" },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" }, "horde1": { "upgrades" : "dwellingLvl1" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ] },
"special2": { "special2": {
"bonuses": [ "bonuses": [
{ {
@@ -203,25 +203,25 @@
] ]
} }
}, },
"horde2": { "id" : 24, "upgrades" : "dwellingLvl3" }, "horde2": { "upgrades" : "dwellingLvl3" },
"horde2Upgr": { "id" : 25, "upgrades" : "dwellingUpLvl3", "requires" : [ "horde2" ], "mode" : "auto" }, "horde2Upgr": { "upgrades" : "dwellingUpLvl3", "requires" : [ "horde2" ] },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }}, "grail": { },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl2" ] }, "dwellingLvl4": { "requires" : [ "dwellingLvl2" ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl4" ] }, "dwellingLvl5": { "requires" : [ "dwellingLvl4" ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl4" ] ] }, "dwellingLvl6": { "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl4" ] ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "allOf", [ "dwellingLvl5" ], [ "dwellingLvl6" ] ] }, "dwellingLvl7": { "requires" : [ "allOf", [ "dwellingLvl5" ], [ "dwellingLvl6" ] ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4" }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4" },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5", "requires" : [ "mageGuild2" ] }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5", "requires" : [ "mageGuild2" ] },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7" }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7" },
"ship" : null, "ship" : null,
"shipyard" : null, "shipyard" : null,

View File

@@ -184,34 +184,33 @@
"blacksmith": { "warMachine" : "firstAidTent" }, "blacksmith": { "warMachine" : "firstAidTent" },
"special1": { "requires" : [ "fort" ], "bonuses": [ { "type": "DARKNESS", "val": 20 } ] }, "special1": { "requires" : [ "fort" ], "bonuses": [ { "type": "DARKNESS", "val": 20 } ] },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1", "requires" : [ "special3" ] }, "horde1": { "upgrades" : "dwellingLvl1", "requires" : [ "special3" ] },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ] },
"ship": { "id" : 20, "upgrades" : "shipyard" }, "ship": { },
"special2": { "requires" : [ "mageGuild1" ], "special2": { "requires" : [ "mageGuild1" ],
"bonuses": [ { "type": "UNDEAD_RAISE_PERCENTAGE", "val": 10, "propagator": "PLAYER" } ] }, "bonuses": [ { "type": "UNDEAD_RAISE_PERCENTAGE", "val": 10, "propagator": "PLAYER" } ] },
"special3": { "requires" : [ "dwellingLvl1" ], "marketModes" : ["creature-undead"] }, "special3": { "requires" : [ "dwellingLvl1" ], "marketModes" : ["creature-undead"] },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }, "grail": { "bonuses": [ { "type": "UNDEAD_RAISE_PERCENTAGE", "val": 20, "propagator": "PLAYER" } ] },
"bonuses": [ { "type": "UNDEAD_RAISE_PERCENTAGE", "val": 20, "propagator": "PLAYER" } ] },
"extraTownHall": { "id" : 27, "requires" : [ "townHall" ], "mode" : "auto" }, "extraTownHall": { },
"extraCityHall": { "id" : 28, "requires" : [ "cityHall" ], "mode" : "auto" }, "extraCityHall": { },
"extraCapitol": { "id" : 29, "requires" : [ "capitol" ], "mode" : "auto" }, "extraCapitol": { },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl2" ] }, "dwellingLvl4": { "requires" : [ "dwellingLvl2" ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl2" ] ] }, "dwellingLvl5": { "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl2" ] ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl5" ] ] }, "dwellingLvl6": { "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl5" ] ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "dwellingLvl6" ] }, "dwellingLvl7": { "requires" : [ "dwellingLvl6" ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4", "requires" : [ "special2" ] }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4", "requires" : [ "special2" ] },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5" }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5" },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7" }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7" },
"horde2" : null, "horde2" : null,
"horde2Upgr" : null, "horde2Upgr" : null,

View File

@@ -182,8 +182,8 @@
"blacksmith": { "warMachine" : "firstAidTent" }, "blacksmith": { "warMachine" : "firstAidTent" },
"special1": { "type" : "mysticPond" }, "special1": { "type" : "mysticPond" },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl2" }, "horde1": { "upgrades" : "dwellingLvl2" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl2", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl2", "requires" : [ "horde1" ] },
"special2": { "special2": {
"bonuses": [ "bonuses": [
{ {
@@ -194,29 +194,29 @@
"upgrades" : "special1" "upgrades" : "special1"
}, },
"special3": { "type" : "treasury", "requires" : [ "horde1" ] }, "special3": { "type" : "treasury", "requires" : [ "horde1" ] },
"horde2": { "id" : 24, "upgrades" : "dwellingLvl5" }, "horde2": { "upgrades" : "dwellingLvl5" },
"horde2Upgr": { "id" : 25, "upgrades" : "dwellingUpLvl5", "requires" : [ "horde2" ], "mode" : "auto" }, "horde2Upgr": { "upgrades" : "dwellingUpLvl5", "requires" : [ "horde2" ] },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }, "bonuses": [ { "type": "LUCK", "val": 2, "propagator": "PLAYER" } ] }, "grail": { "bonuses": [ { "type": "LUCK", "val": 2, "propagator": "PLAYER" } ] },
"extraTownHall": { "id" : 27, "requires" : [ "townHall" ], "mode" : "auto" }, "extraTownHall": { },
"extraCityHall": { "id" : 28, "requires" : [ "cityHall" ], "mode" : "auto" }, "extraCityHall": { },
"extraCapitol": { "id" : 29, "requires" : [ "capitol" ], "mode" : "auto" }, "extraCapitol": { },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl3" ] }, "dwellingLvl4": { "requires" : [ "dwellingLvl3" ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl3" ] }, "dwellingLvl5": { "requires" : [ "dwellingLvl3" ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl5" ] ] }, "dwellingLvl6": { "requires" : [ "allOf", [ "dwellingLvl4" ], [ "dwellingLvl5" ] ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "allOf", [ "dwellingLvl6" ], [ "mageGuild2" ] ] }, "dwellingLvl7": { "requires" : [ "allOf", [ "dwellingLvl6" ], [ "mageGuild2" ] ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4" }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4" },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5" }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5" },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7", "requires" : [ "mageGuild3" ] }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7", "requires" : [ "mageGuild3" ] },
"ship" : null, "ship" : null,
"shipyard" : null, "shipyard" : null,

View File

@@ -172,8 +172,8 @@
"blacksmith": { "warMachine" : "ammoCart" }, "blacksmith": { "warMachine" : "ammoCart" },
"special1": { "type" : "escapeTunnel", "requires" : [ "fort" ] }, "special1": { "type" : "escapeTunnel", "requires" : [ "fort" ] },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl1" }, "horde1": { "upgrades" : "dwellingLvl1" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl1", "requires" : [ "horde1" ] },
"special2": { "requires" : [ "marketplace" ], "marketModes" : ["creature-resource"] }, "special2": { "requires" : [ "marketplace" ], "marketModes" : ["creature-resource"] },
"special3": { "warMachine" : "ballista", "requires" : [ "blacksmith" ] }, "special3": { "warMachine" : "ballista", "requires" : [ "blacksmith" ] },
"special4": { "special4": {
@@ -188,24 +188,23 @@
] ]
} }
}, },
"grail": { "id" : 26, "mode" : "grail", "produce": { "gold": 5000 }, "grail": { "bonuses": [ { "type": "PRIMARY_SKILL", "subtype": "primarySkill.attack", "val": 20 } ] },
"bonuses": [ { "type": "PRIMARY_SKILL", "subtype": "primarySkill.attack", "val": 20 } ] },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "dwellingLvl3" ] }, "dwellingLvl4": { "requires" : [ "dwellingLvl3" ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl2" ] }, "dwellingLvl5": { "requires" : [ "dwellingLvl2" ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "dwellingLvl4" ] }, "dwellingLvl6": { "requires" : [ "dwellingLvl4" ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "dwellingLvl5" ] }, "dwellingLvl7": { "requires" : [ "dwellingLvl5" ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2", "requires" : [ "dwellingUpLvl1" ] }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2", "requires" : [ "dwellingUpLvl1" ] },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3", "requires" : [ "blacksmith" ] }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3", "requires" : [ "blacksmith" ] },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4", "requires" : [ "mageGuild1" ] }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4", "requires" : [ "mageGuild1" ] },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5" }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5" },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7" }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7" },
"horde2" : null, "horde2" : null,
"horde2Upgr" : null, "horde2Upgr" : null,

View File

@@ -177,8 +177,8 @@
"blacksmith": { "warMachine" : "ammoCart" }, "blacksmith": { "warMachine" : "ammoCart" },
"special1": { "requires" : [ "marketplace" ], "marketModes" : ["resource-artifact", "artifact-resource"] }, "special1": { "requires" : [ "marketplace" ], "marketModes" : ["resource-artifact", "artifact-resource"] },
"horde1": { "id" : 18, "upgrades" : "dwellingLvl2" }, "horde1": { "upgrades" : "dwellingLvl2" },
"horde1Upgr": { "id" : 19, "upgrades" : "dwellingUpLvl2", "requires" : [ "horde1" ], "mode" : "auto" }, "horde1Upgr": { "upgrades" : "dwellingUpLvl2", "requires" : [ "horde1" ] },
"special2": { "special2": {
"requires" : [ "fort" ], "requires" : [ "fort" ],
"bonuses": [ "bonuses": [
@@ -199,7 +199,6 @@
} }
}, },
"grail": { "grail": {
"produce" : { "gold": 5000 },
"bonuses": [ "bonuses": [
{ "type": "PRIMARY_SKILL", "subtype": "primarySkill.knowledge", "val": 15 }, { "type": "PRIMARY_SKILL", "subtype": "primarySkill.knowledge", "val": 15 },
{ "type": "COMBAT_MANA_BONUS", "val": 150 }, { "type": "COMBAT_MANA_BONUS", "val": 150 },
@@ -207,21 +206,21 @@
] ]
}, },
"dwellingLvl1": { "id" : 30, "requires" : [ "fort" ] }, "dwellingLvl1": { "requires" : [ "fort" ] },
"dwellingLvl2": { "id" : 31, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl2": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl3": { "id" : 32, "requires" : [ "dwellingLvl1" ] }, "dwellingLvl3": { "requires" : [ "dwellingLvl1" ] },
"dwellingLvl4": { "id" : 33, "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl2" ], [ "dwellingLvl3" ] ] }, "dwellingLvl4": { "requires" : [ "allOf", [ "mageGuild1" ], [ "dwellingLvl2" ], [ "dwellingLvl3" ] ] },
"dwellingLvl5": { "id" : 34, "requires" : [ "dwellingLvl4" ] }, "dwellingLvl5": { "requires" : [ "dwellingLvl4" ] },
"dwellingLvl6": { "id" : 35, "requires" : [ "dwellingLvl4" ] }, "dwellingLvl6": { "requires" : [ "dwellingLvl4" ] },
"dwellingLvl7": { "id" : 36, "requires" : [ "allOf", [ "dwellingLvl5" ], [ "dwellingLvl6" ] ] }, "dwellingLvl7": { "requires" : [ "allOf", [ "dwellingLvl5" ], [ "dwellingLvl6" ] ] },
"dwellingUpLvl1": { "id" : 37, "upgrades" : "dwellingLvl1" }, "dwellingUpLvl1": { "upgrades" : "dwellingLvl1" },
"dwellingUpLvl2": { "id" : 38, "upgrades" : "dwellingLvl2" }, "dwellingUpLvl2": { "upgrades" : "dwellingLvl2" },
"dwellingUpLvl3": { "id" : 39, "upgrades" : "dwellingLvl3" }, "dwellingUpLvl3": { "upgrades" : "dwellingLvl3" },
"dwellingUpLvl4": { "id" : 40, "upgrades" : "dwellingLvl4", "requires" : [ "special3" ] }, "dwellingUpLvl4": { "upgrades" : "dwellingLvl4", "requires" : [ "special3" ] },
"dwellingUpLvl5": { "id" : 41, "upgrades" : "dwellingLvl5" }, "dwellingUpLvl5": { "upgrades" : "dwellingLvl5" },
"dwellingUpLvl6": { "id" : 42, "upgrades" : "dwellingLvl6" }, "dwellingUpLvl6": { "upgrades" : "dwellingLvl6" },
"dwellingUpLvl7": { "id" : 43, "upgrades" : "dwellingLvl7" }, "dwellingUpLvl7": { "upgrades" : "dwellingLvl7" },
"horde2" : null, "horde2" : null,
"horde2Upgr" : null, "horde2Upgr" : null,

View File

@@ -127,54 +127,6 @@ namespace NPathfindingLayer
namespace MappedKeys namespace MappedKeys
{ {
static const std::map<std::string, BuildingID> BUILDING_NAMES_TO_TYPES =
{
{ "special1", BuildingID::SPECIAL_1 },
{ "special2", BuildingID::SPECIAL_2 },
{ "special3", BuildingID::SPECIAL_3 },
{ "special4", BuildingID::SPECIAL_4 },
{ "grail", BuildingID::GRAIL },
{ "mageGuild1", BuildingID::MAGES_GUILD_1 },
{ "mageGuild2", BuildingID::MAGES_GUILD_2 },
{ "mageGuild3", BuildingID::MAGES_GUILD_3 },
{ "mageGuild4", BuildingID::MAGES_GUILD_4 },
{ "mageGuild5", BuildingID::MAGES_GUILD_5 },
{ "tavern", BuildingID::TAVERN },
{ "shipyard", BuildingID::SHIPYARD },
{ "fort", BuildingID::FORT },
{ "citadel", BuildingID::CITADEL },
{ "castle", BuildingID::CASTLE },
{ "villageHall", BuildingID::VILLAGE_HALL },
{ "townHall", BuildingID::TOWN_HALL },
{ "cityHall", BuildingID::CITY_HALL },
{ "capitol", BuildingID::CAPITOL },
{ "marketplace", BuildingID::MARKETPLACE },
{ "resourceSilo", BuildingID::RESOURCE_SILO },
{ "blacksmith", BuildingID::BLACKSMITH },
{ "horde1", BuildingID::HORDE_1 },
{ "horde1Upgr", BuildingID::HORDE_1_UPGR },
{ "horde2", BuildingID::HORDE_2 },
{ "horde2Upgr", BuildingID::HORDE_2_UPGR },
{ "ship", BuildingID::SHIP },
{ "dwellingLvl1", BuildingID::DWELL_LVL_1 },
{ "dwellingLvl2", BuildingID::DWELL_LVL_2 },
{ "dwellingLvl3", BuildingID::DWELL_LVL_3 },
{ "dwellingLvl4", BuildingID::DWELL_LVL_4 },
{ "dwellingLvl5", BuildingID::DWELL_LVL_5 },
{ "dwellingLvl6", BuildingID::DWELL_LVL_6 },
{ "dwellingLvl7", BuildingID::DWELL_LVL_7 },
{ "dwellingLvl8", BuildingID::DWELL_LVL_8 },
{ "dwellingUpLvl1", BuildingID::DWELL_LVL_1_UP },
{ "dwellingUpLvl2", BuildingID::DWELL_LVL_2_UP },
{ "dwellingUpLvl3", BuildingID::DWELL_LVL_3_UP },
{ "dwellingUpLvl4", BuildingID::DWELL_LVL_4_UP },
{ "dwellingUpLvl5", BuildingID::DWELL_LVL_5_UP },
{ "dwellingUpLvl6", BuildingID::DWELL_LVL_6_UP },
{ "dwellingUpLvl7", BuildingID::DWELL_LVL_7_UP },
{ "dwellingUpLvl8", BuildingID::DWELL_LVL_8_UP },
};
static const std::map<std::string, BuildingSubID::EBuildingSubID> SPECIAL_BUILDINGS = static const std::map<std::string, BuildingSubID::EBuildingSubID> SPECIAL_BUILDINGS =
{ {
{ "mysticPond", BuildingSubID::MYSTIC_POND }, { "mysticPond", BuildingSubID::MYSTIC_POND },

View File

@@ -266,16 +266,9 @@ void CTownHandler::loadBuilding(CTown * town, const std::string & stringID, cons
assert(!source.getModScope().empty()); assert(!source.getModScope().empty());
auto * ret = new CBuilding(); auto * ret = new CBuilding();
ret->bid = vstd::find_or(MappedKeys::BUILDING_NAMES_TO_TYPES, stringID, BuildingID::NONE); ret->bid = BuildingID(source["id"].Integer());
ret->subId = BuildingSubID::NONE; ret->subId = BuildingSubID::NONE;
if(ret->bid == BuildingID::NONE && !source["id"].isNull())
{
// FIXME: A lot of false-positives with no clear way to handle them in mods
//logMod->warn("Building %s: id field is deprecated", stringID);
ret->bid = source["id"].isNull() ? BuildingID(BuildingID::NONE) : BuildingID(source["id"].Float());
}
if (ret->bid == BuildingID::NONE) if (ret->bid == BuildingID::NONE)
logMod->error("Building '%s' isn't recognized and won't work properly. Correct the typo or update VCMI.", stringID); logMod->error("Building '%s' isn't recognized and won't work properly. Correct the typo or update VCMI.", stringID);