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

Remove CCreatureHandler::loadBonuses

This commit is contained in:
krs
2024-11-10 14:18:16 +02:00
parent 1a5e99724a
commit 54f8f2c636
13 changed files with 202 additions and 195 deletions

View File

@@ -462,56 +462,6 @@ void CCreatureHandler::loadCommanders()
}
}
void CCreatureHandler::loadBonuses(JsonNode & creature, std::string bonuses) const
{
auto makeBonusNode = [&](const std::string & type, double val = 0) -> JsonNode
{
JsonNode ret;
ret["type"].String() = type;
ret["val"].Float() = val;
return ret;
};
static const std::map<std::string, JsonNode> abilityMap =
{
{"FLYING_ARMY", makeBonusNode("FLYING")},
{"SHOOTING_ARMY", makeBonusNode("SHOOTER")},
{"SIEGE_WEAPON", makeBonusNode("SIEGE_WEAPON")},
{"const_free_attack", makeBonusNode("BLOCKS_RETALIATION")},
{"IS_UNDEAD", makeBonusNode("UNDEAD")},
{"const_no_melee_penalty", makeBonusNode("NO_MELEE_PENALTY")},
{"const_jousting", makeBonusNode("JOUSTING", 5)},
{"KING_1", makeBonusNode("KING")}, // Slayer with no expertise
{"KING_2", makeBonusNode("KING", 2)}, // Advanced Slayer or better
{"KING_3", makeBonusNode("KING", 3)}, // Expert Slayer only
{"const_no_wall_penalty", makeBonusNode("NO_WALL_PENALTY")},
{"MULTI_HEADED", makeBonusNode("ATTACKS_ALL_ADJACENT")},
{"IMMUNE_TO_MIND_SPELLS", makeBonusNode("MIND_IMMUNITY")},
{"HAS_EXTENDED_ATTACK", makeBonusNode("TWO_HEX_ATTACK_BREATH")}
};
auto hasAbility = [&](const std::string & name) -> bool
{
return boost::algorithm::find_first(bonuses, name);
};
for(const auto & a : abilityMap)
{
if(hasAbility(a.first))
creature["abilities"][a.first] = a.second;
}
if(hasAbility("DOUBLE_WIDE"))
creature["doubleWide"].Bool() = true;
if(hasAbility("const_raises_morale"))
{
JsonNode node = makeBonusNode("MORALE");
node["val"].Float() = 1;
node["propagator"].String() = "HERO";
creature["abilities"]["const_raises_morale"] = node;
}
}
std::vector<JsonNode> CCreatureHandler::loadLegacyData()
{
size_t dataSize = VLC->engineSettings()->getInteger(EGameSettings::TEXTS_CREATURE);
@@ -581,7 +531,7 @@ std::vector<JsonNode> CCreatureHandler::loadLegacyData()
// unused - ability text, not used since we no longer have original creature window
parser.readString();
loadBonuses(data, parser.readString()); //Attributes
parser.readString(); // unused - abilities, not used since we load them all from json configs
h3Data.push_back(data);
}