mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-25 22:42:04 +02:00
Skill removal as reward
This commit is contained in:
@@ -133,7 +133,16 @@ ui8 CGHeroInstance::getSecSkillLevel(const SecondarySkill & skill) const
|
|||||||
|
|
||||||
void CGHeroInstance::setSecSkillLevel(const SecondarySkill & which, int val, bool abs)
|
void CGHeroInstance::setSecSkillLevel(const SecondarySkill & which, int val, bool abs)
|
||||||
{
|
{
|
||||||
if(getSecSkillLevel(which) == 0)
|
if (val == 0) // skill removal
|
||||||
|
{
|
||||||
|
auto it = std::find_if(secSkills.begin(), secSkills.end(), [&](const std::pair<SecondarySkill, ui8>& pair) { return pair.first == which; });
|
||||||
|
if (it != secSkills.end())
|
||||||
|
{
|
||||||
|
secSkills.erase(it);
|
||||||
|
updateSkillBonus(which, val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(getSecSkillLevel(which) == 0)
|
||||||
{
|
{
|
||||||
secSkills.emplace_back(which, val);
|
secSkills.emplace_back(which, val);
|
||||||
updateSkillBonus(which, val);
|
updateSkillBonus(which, val);
|
||||||
@@ -660,9 +669,13 @@ void CGHeroInstance::recreateSecondarySkillsBonuses()
|
|||||||
void CGHeroInstance::updateSkillBonus(const SecondarySkill & which, int val)
|
void CGHeroInstance::updateSkillBonus(const SecondarySkill & which, int val)
|
||||||
{
|
{
|
||||||
removeBonuses(Selector::source(BonusSource::SECONDARY_SKILL, BonusSourceID(which)));
|
removeBonuses(Selector::source(BonusSource::SECONDARY_SKILL, BonusSourceID(which)));
|
||||||
auto skillBonus = (*LIBRARY->skillh)[which]->at(val).effects;
|
|
||||||
for(const auto & b : skillBonus)
|
if(val > 0)
|
||||||
addNewBonus(std::make_shared<Bonus>(*b));
|
{
|
||||||
|
auto skillBonus = (*LIBRARY->skillh)[which]->at(val).effects;
|
||||||
|
for(const auto& b : skillBonus)
|
||||||
|
addNewBonus(std::make_shared<Bonus>(*b));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGHeroInstance::setPropertyDer(ObjProperty what, ObjPropertyID identifier)
|
void CGHeroInstance::setPropertyDer(ObjProperty what, ObjPropertyID identifier)
|
||||||
|
|||||||
Reference in New Issue
Block a user