1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-21 00:19:29 +02:00

Remove artifact from slot as reward

This commit is contained in:
Ivan Savenko
2025-05-01 21:02:56 +03:00
parent 6688d28198
commit 0212b6e37d
9 changed files with 72 additions and 2 deletions

View File

@ -113,6 +113,12 @@ JsonRandomizationException::JsonRandomizationException(const std::string & messa
return loadVariable(IdentifierType::entityType(), value.String(), variables, IdentifierType::NONE);
}
template<>
ArtifactPosition JsonRandom::decodeKey(const JsonNode & value, const Variables & variables)
{
return ArtifactPosition::decode(value.String());
}
template<>
PlayerColor JsonRandom::decodeKey(const JsonNode & value, const Variables & variables)
{
@ -420,6 +426,21 @@ JsonRandomizationException::JsonRandomizationException(const std::string & messa
return ret;
}
std::vector<ArtifactPosition> JsonRandom::loadArtifactSlots(const JsonNode & value, vstd::RNG & rng, const Variables & variables)
{
std::set<ArtifactPosition> allowedSlots;
for(ArtifactPosition pos(0); pos < ArtifactPosition::BACKPACK_START; ++pos)
allowedSlots.insert(pos);
std::vector<ArtifactPosition> ret;
for (const JsonNode & entry : value.Vector())
{
std::set<ArtifactPosition> potentialPicks = filterKeys(entry, allowedSlots, variables);
ret.push_back(*RandomGeneratorUtil::nextItem(potentialPicks, rng));
}
return ret;
}
SpellID JsonRandom::loadSpell(const JsonNode & value, vstd::RNG & rng, const Variables & variables)
{
std::set<SpellID> defaultSpells;