|
@@ -140,119 +140,28 @@ void CBank::onHeroVisit(const CGHeroInstance * h) const
|
|
|
ChangeObjectVisitors cov(ChangeObjectVisitors::VISITOR_ADD_PLAYER, id, h->id);
|
|
|
cb->sendAndApply(&cov);
|
|
|
|
|
|
- if(!bankConfig && (ID.toEnum() == Obj::CREATURE_BANK || ID.toEnum() == Obj::DRAGON_UTOPIA))
|
|
|
- {
|
|
|
- blockingDialogAnswered(h, 1);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- int banktext = 0;
|
|
|
- switch (ID.toEnum())
|
|
|
- {
|
|
|
- case Obj::DERELICT_SHIP:
|
|
|
- banktext = 41;
|
|
|
- break;
|
|
|
- case Obj::DRAGON_UTOPIA:
|
|
|
- banktext = 47;
|
|
|
- break;
|
|
|
- case Obj::SHIPWRECK:
|
|
|
- banktext = 122;
|
|
|
- break;
|
|
|
- case Obj::PYRAMID:
|
|
|
- banktext = 105;
|
|
|
- break;
|
|
|
- default:
|
|
|
- banktext = 32;
|
|
|
- break;
|
|
|
- }
|
|
|
BlockingDialog bd(true, false);
|
|
|
bd.player = h->getOwner();
|
|
|
- bd.text.appendLocalString(EMetaText::ADVOB_TXT, banktext);
|
|
|
+ bd.text.appendLocalString(EMetaText::ADVOB_TXT, 32);
|
|
|
bd.components = getPopupComponents(h->getOwner());
|
|
|
- if (banktext == 32)
|
|
|
- bd.text.replaceRawString(getObjectName());
|
|
|
-
|
|
|
+ bd.text.replaceRawString(getObjectName());
|
|
|
cb->showBlockingDialog(this, &bd);
|
|
|
}
|
|
|
|
|
|
void CBank::doVisit(const CGHeroInstance * hero) const
|
|
|
{
|
|
|
- int textID = -1;
|
|
|
InfoWindow iw;
|
|
|
iw.type = EInfoWindowMode::AUTO;
|
|
|
iw.player = hero->getOwner();
|
|
|
MetaString loot;
|
|
|
|
|
|
- if (bankConfig)
|
|
|
- {
|
|
|
- switch (ID.toEnum())
|
|
|
- {
|
|
|
- case Obj::DERELICT_SHIP:
|
|
|
- textID = 43;
|
|
|
- break;
|
|
|
- case Obj::SHIPWRECK:
|
|
|
- textID = 124;
|
|
|
- break;
|
|
|
- case Obj::PYRAMID:
|
|
|
- textID = 106;
|
|
|
- break;
|
|
|
- default:
|
|
|
- textID = 34;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (!bankConfig)
|
|
|
{
|
|
|
- switch (ID.toEnum())
|
|
|
- {
|
|
|
- case Obj::SHIPWRECK:
|
|
|
- case Obj::DERELICT_SHIP:
|
|
|
- {
|
|
|
- GiveBonus gbonus;
|
|
|
- gbonus.id = hero->id;
|
|
|
- gbonus.bonus.duration = BonusDuration::ONE_BATTLE;
|
|
|
- gbonus.bonus.source = BonusSource::OBJECT_TYPE;
|
|
|
- gbonus.bonus.sid = BonusSourceID(ID);
|
|
|
- gbonus.bonus.type = BonusType::MORALE;
|
|
|
- gbonus.bonus.val = -1;
|
|
|
- switch (ID.toEnum())
|
|
|
- {
|
|
|
- case Obj::SHIPWRECK:
|
|
|
- textID = 123;
|
|
|
- gbonus.bonus.description = MetaString::createFromTextID("core.arraytxt.99");
|
|
|
- break;
|
|
|
- case Obj::DERELICT_SHIP:
|
|
|
- textID = 42;
|
|
|
- gbonus.bonus.description = MetaString::createFromTextID("core.arraytxt.101");
|
|
|
- break;
|
|
|
- }
|
|
|
- cb->giveHeroBonus(&gbonus);
|
|
|
- iw.components.emplace_back(ComponentType::MORALE, -1);
|
|
|
- break;
|
|
|
- }
|
|
|
- case Obj::PYRAMID:
|
|
|
- {
|
|
|
- GiveBonus gb;
|
|
|
- gb.bonus = Bonus(BonusDuration::ONE_BATTLE, BonusType::LUCK, BonusSource::OBJECT_INSTANCE, -2, BonusSourceID(id));
|
|
|
- gb.bonus.description = MetaString::createFromTextID("core.arraytxt.70");
|
|
|
- gb.id = hero->id;
|
|
|
- cb->giveHeroBonus(&gb);
|
|
|
- textID = 107;
|
|
|
- iw.components.emplace_back(ComponentType::LUCK, -2);
|
|
|
- break;
|
|
|
- }
|
|
|
- default:
|
|
|
- iw.text.appendRawString(VLC->generaltexth->advobtxt[33]);// This was X, now is completely empty
|
|
|
- iw.text.replaceRawString(getObjectName());
|
|
|
- }
|
|
|
- if(textID != -1)
|
|
|
- {
|
|
|
- iw.text.appendLocalString(EMetaText::ADVOB_TXT, textID);
|
|
|
- }
|
|
|
+ iw.text.appendRawString(VLC->generaltexth->advobtxt[33]);// This was X, now is completely empty
|
|
|
+ iw.text.replaceRawString(getObjectName());
|
|
|
cb->showInfoDialog(&iw);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//grant resources
|
|
|
if (bankConfig)
|
|
|
{
|
|
@@ -278,17 +187,15 @@ void CBank::doVisit(const CGHeroInstance * hero) const
|
|
|
//display loot
|
|
|
if (!iw.components.empty())
|
|
|
{
|
|
|
- iw.text.appendLocalString(EMetaText::ADVOB_TXT, textID);
|
|
|
- if (textID == 34)
|
|
|
+ iw.text.appendLocalString(EMetaText::ADVOB_TXT, 34);
|
|
|
+ const auto * strongest = boost::range::max_element(bankConfig->guards, [](const CStackBasicDescriptor & a, const CStackBasicDescriptor & b)
|
|
|
{
|
|
|
- const auto * strongest = boost::range::max_element(bankConfig->guards, [](const CStackBasicDescriptor & a, const CStackBasicDescriptor & b)
|
|
|
- {
|
|
|
- return a.type->getFightValue() < b.type->getFightValue();
|
|
|
- })->type;
|
|
|
+ return a.type->getFightValue() < b.type->getFightValue();
|
|
|
+ })->type;
|
|
|
+
|
|
|
+ iw.text.replaceNamePlural(strongest->getId());
|
|
|
+ iw.text.replaceRawString(loot.buildList());
|
|
|
|
|
|
- iw.text.replaceNamePlural(strongest->getId());
|
|
|
- iw.text.replaceRawString(loot.buildList());
|
|
|
- }
|
|
|
cb->showInfoDialog(&iw);
|
|
|
}
|
|
|
|
|
@@ -301,10 +208,7 @@ void CBank::doVisit(const CGHeroInstance * hero) const
|
|
|
std::set<SpellID> spells;
|
|
|
|
|
|
bool noWisdom = false;
|
|
|
- if(textID == 106)
|
|
|
- {
|
|
|
- iw.text.appendLocalString(EMetaText::ADVOB_TXT, textID); //pyramid
|
|
|
- }
|
|
|
+
|
|
|
for(const SpellID & spellId : bankConfig->spells)
|
|
|
{
|
|
|
const auto * spell = spellId.toEntity(VLC);
|