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)
|
||||
{
|
||||
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);
|
||||
updateSkillBonus(which, val);
|
||||
@@ -660,10 +669,14 @@ void CGHeroInstance::recreateSecondarySkillsBonuses()
|
||||
void CGHeroInstance::updateSkillBonus(const SecondarySkill & which, int val)
|
||||
{
|
||||
removeBonuses(Selector::source(BonusSource::SECONDARY_SKILL, BonusSourceID(which)));
|
||||
|
||||
if(val > 0)
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user