1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-05-15 22:16:37 +02:00

fixed base merging and limiter creation

This commit is contained in:
Henning Koehler 2017-09-14 19:03:25 +12:00
parent 6ae103dd63
commit 16f59fb213
3 changed files with 11 additions and 8 deletions

View File

@ -35,10 +35,12 @@
], ],
"specialty" : { "specialty" : {
"base" : { "base" : {
"limiter" : { "limiters" : [
{
"parameters" : [ "archer", true ], "parameters" : [ "archer", true ],
"type" : "CREATURE_TYPE_LIMITER" "type" : "CREATURE_TYPE_LIMITER"
} }
]
}, },
"bonuses" : { "bonuses" : {
"attack" : { "attack" : {

View File

@ -536,14 +536,15 @@ std::vector<std::shared_ptr<Bonus>> SpecialtyInfoToBonuses(const SSpecialtyInfo
void CHeroHandler::beforeValidate(JsonNode & object) void CHeroHandler::beforeValidate(JsonNode & object)
{ {
//handle "base" specialty info //handle "base" specialty info
const JsonNode & specialtyNode = object["specialty"]; JsonNode & specialtyNode = object["specialty"];
if(specialtyNode.getType() == JsonNode::JsonType::DATA_STRUCT) if(specialtyNode.getType() == JsonNode::JsonType::DATA_STRUCT)
{ {
const JsonNode & base = specialtyNode["base"]; const JsonNode & base = specialtyNode["base"];
if(!base.isNull()) if(!base.isNull())
{ {
for(auto keyValue : specialtyNode["bonuses"].Struct()) JsonMap & bonuses = specialtyNode["bonuses"].Struct();
JsonUtils::inherit(keyValue.second, base); for(std::pair<std::string, JsonNode> keyValue : bonuses)
JsonUtils::inherit(bonuses[keyValue.first], base);
} }
} }
} }

View File

@ -1212,7 +1212,7 @@ JsonNode Bonus::toJsonNode() const
if(valType != ADDITIVE_VALUE) if(valType != ADDITIVE_VALUE)
root["valType"].String() = vstd::findKey(bonusValueMap, valType); root["valType"].String() = vstd::findKey(bonusValueMap, valType);
if(limiter) if(limiter)
root["limiter"] = limiter->toJsonNode(); root["limiters"].Vector().push_back(limiter->toJsonNode());
if(updater) if(updater)
root["updater"] = updater->toJsonNode(); root["updater"] = updater->toJsonNode();
return root; return root;