1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-10-31 00:07:39 +02:00

- Made sure that stack artifacts will not spawn when they are turned off

- Description for "Spell-like attack"
This commit is contained in:
DjWarmonger
2013-01-21 15:11:37 +00:00
parent a0e72785a6
commit cf7108f075
4 changed files with 16 additions and 3 deletions

View File

@@ -776,13 +776,20 @@ void CArtHandler::clearHlpLists()
relics.clear();
}
bool CArtHandler::legalArtifact(int id)
{
return (artifacts[id]->possibleSlots[ArtBearer::HERO].size() ||
artifacts[id]->possibleSlots[ArtBearer::COMMANDER].size() && VLC->modh->modules.COMMANDERS) ||
(artifacts[id]->possibleSlots[ArtBearer::CREATURE].size() && VLC->modh->modules.STACK_ARTIFACT);
}
void CArtHandler::initAllowedArtifactsList(const std::vector<ui8> &allowed)
{
allowedArtifacts.clear();
clearHlpLists();
for (int i=0; i<144; ++i) //yes, 144
{
if (allowed[i])
if (allowed[i] && legalArtifact(i))
allowedArtifacts.push_back(artifacts[i]);
}
if (VLC->modh->modules.COMMANDERS) //allow all commander artifacts for testing
@@ -798,8 +805,7 @@ void CArtHandler::initAllowedArtifactsList(const std::vector<ui8> &allowed)
allowedArtifacts.push_back(artifacts[i]);
else //check if active modules allow artifact to be every used
{
if ((artifacts[i]->possibleSlots[ArtBearer::COMMANDER].size() && VLC->modh->modules.COMMANDERS) ||
(artifacts[i]->possibleSlots[ArtBearer::CREATURE].size() && VLC->modh->modules.STACK_ARTIFACT))
if (legalArtifact(i))
allowedArtifacts.push_back(artifacts[i]);
//keep im mind that artifact can be worn by more than one type of bearer
}

View File

@@ -243,6 +243,7 @@ public:
void clearHlpLists();
ui16 getRandomArt (int flags);
ui16 getArtSync (ui32 rand, int flags);
bool CArtHandler::legalArtifact(int id);
void getAllowedArts(std::vector<ConstTransitivePtr<CArtifact> > &out, std::vector<CArtifact*> *arts, int flag);
void getAllowed(std::vector<ConstTransitivePtr<CArtifact> > &out, int flags);
void erasePickedArt (TArtifactInstanceID id);

View File

@@ -646,6 +646,11 @@ std::string CStackInstance::bonusToString(Bonus *bonus, bool description) const
boost::algorithm::replace_first(text, "%s", VLC->spellh->spells[bonus->subtype]->name);
break;
}
case Bonus::SPELL_LIKE_ATTACK:
{
boost::algorithm::replace_first(text, "%s", VLC->spellh->spells[bonus->subtype]->name);
break;
}
default:
{}//TODO: allow custom bonus types... someday, somehow
}