1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

vcmi: morale and luck now also IFactionMember

Not all bonus bearers have morale and luck, only faction members
This commit is contained in:
Konstantin
2023-04-30 15:04:54 +03:00
parent e37f798a68
commit a2d4c72016
6 changed files with 74 additions and 89 deletions

View File

@@ -372,7 +372,7 @@ CTownTooltip::CTownTooltip(Point pos, const CGTownInstance * town)
init(InfoAboutTown(town, true));
}
void MoraleLuckBox::set(const IBonusBearer * node)
void MoraleLuckBox::set(const IFactionMember * node)
{
OBJECT_CONSTRUCTION_CUSTOM_CAPTURING(255-DISPOSE);
@@ -393,21 +393,21 @@ void MoraleLuckBox::set(const IBonusBearer * node)
text = CGI->generaltexth->arraytxt[textId[morale]];
boost::algorithm::replace_first(text,"%s",CGI->generaltexth->arraytxt[neutralDescr[morale]-mrlt]);
if (morale && node && (node->hasBonusOfType(Bonus::UNDEAD)
|| node->hasBonusOfType(Bonus::NON_LIVING)))
if (morale && node && (node->getBonusBearer()->hasBonusOfType(Bonus::UNDEAD)
|| node->getBonusBearer()->hasBonusOfType(Bonus::NON_LIVING)))
{
text += CGI->generaltexth->arraytxt[113]; //unaffected by morale
bonusValue = 0;
}
else if(morale && node && node->hasBonusOfType(Bonus::NO_MORALE))
else if(morale && node && node->getBonusBearer()->hasBonusOfType(Bonus::NO_MORALE))
{
auto noMorale = node->getBonus(Selector::type()(Bonus::NO_MORALE));
auto noMorale = node->getBonusBearer()->getBonus(Selector::type()(Bonus::NO_MORALE));
text += "\n" + noMorale->Description();
bonusValue = 0;
}
else if (!morale && node && node->hasBonusOfType(Bonus::NO_LUCK))
else if (!morale && node && node->getBonusBearer()->hasBonusOfType(Bonus::NO_LUCK))
{
auto noLuck = node->getBonus(Selector::type()(Bonus::NO_LUCK));
auto noLuck = node->getBonusBearer()->getBonus(Selector::type()(Bonus::NO_LUCK));
text += "\n" + noLuck->Description();
bonusValue = 0;
}