1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Fix loading of subtypes for HAS_ANOTHER_BONUS limiter

This commit is contained in:
Ivan Savenko
2025-07-14 21:04:46 +03:00
parent c4cb794760
commit aeddeb2612

View File

@@ -552,12 +552,11 @@ static std::shared_ptr<const ILimiter> parseHasAnotherBonusLimiter(const JsonNod
{ {
auto bonusLimiter = std::make_shared<HasAnotherBonusLimiter>(); auto bonusLimiter = std::make_shared<HasAnotherBonusLimiter>();
static const JsonNode nullNode;
const JsonNode & parameters = limiter["parameters"]; const JsonNode & parameters = limiter["parameters"];
const JsonNode & jsonType = limiter.Struct().count("bonusType") ? limiter["bonusType"] : parameters[0]; const JsonNode & jsonType = limiter.Struct().count("bonusType") ? limiter["bonusType"] : parameters[0];
const JsonNode & jsonSubtype = limiter.Struct().count("bonusSubtype") ? limiter["bonusSubtype"] : (parameters.Vector().size() > 2 ? parameters[1] : nullNode); const JsonNode & jsonSubtype = limiter.Struct().count("bonusSubtype") ? limiter["bonusSubtype"] : parameters[1];
const JsonNode & jsonSourceType = limiter.Struct().count("bonusSourceType") ? limiter["bonusSourceType"] : (parameters.Vector().size() > 2 ? parameters[2]["type"] : parameters[1]["type"]); const JsonNode & jsonSourceType = limiter.Struct().count("bonusSourceType") ? limiter["bonusSourceType"] : parameters[2]["type"];
const JsonNode & jsonSourceID = limiter.Struct().count("bonusSourceID") ? limiter["bonusSourceID"] : (parameters.Vector().size() > 2 ? parameters[2]["id"] : parameters[1]["id"]); const JsonNode & jsonSourceID = limiter.Struct().count("bonusSourceID") ? limiter["bonusSourceID"] : parameters[2]["id"];
if (!jsonType.isNull()) if (!jsonType.isNull())
{ {
@@ -565,7 +564,10 @@ static std::shared_ptr<const ILimiter> parseHasAnotherBonusLimiter(const JsonNod
{ {
bonusLimiter->type = static_cast<BonusType>(bonusID); bonusLimiter->type = static_cast<BonusType>(bonusID);
if (!jsonSubtype.isNull()) if (!jsonSubtype.isNull())
{
loadBonusSubtype(bonusLimiter->subtype, bonusLimiter->type, jsonSubtype); loadBonusSubtype(bonusLimiter->subtype, bonusLimiter->type, jsonSubtype);
bonusLimiter->isSubtypeRelevant = true;
}
}); });
} }