diff --git a/lib/CArtHandler.cpp b/lib/CArtHandler.cpp index 4809f4c38..84abf0173 100644 --- a/lib/CArtHandler.cpp +++ b/lib/CArtHandler.cpp @@ -577,9 +577,9 @@ bool CArtHandler::legalArtifact(ArtifactID id) { auto art = artifacts[id]; //assert ( (!art->constituents) || art->constituents->size() ); //artifacts is not combined or has some components - return (art->possibleSlots[ArtBearer::HERO].size() || + return ((art->possibleSlots[ArtBearer::HERO].size() || (art->possibleSlots[ArtBearer::COMMANDER].size() && VLC->modh->modules.COMMANDERS) || - (art->possibleSlots[ArtBearer::CREATURE].size() && VLC->modh->modules.STACK_ARTIFACT) && + (art->possibleSlots[ArtBearer::CREATURE].size() && VLC->modh->modules.STACK_ARTIFACT)) && !(art->constituents) && //no combo artifacts spawning art->aClass >= CArtifact::ART_TREASURE && art->aClass <= CArtifact::ART_RELIC); diff --git a/lib/rmg/CMapGenerator.cpp b/lib/rmg/CMapGenerator.cpp index 587fb3d49..48621d32f 100644 --- a/lib/rmg/CMapGenerator.cpp +++ b/lib/rmg/CMapGenerator.cpp @@ -93,8 +93,8 @@ void CMapGenerator::initQuestArtsRemaining() { for (auto art : VLC->arth->artifacts) { - if (art->aClass == CArtifact::ART_TREASURE && art->constituentOf.empty()) //don't use parts of combined artifacts - questArtifacts.push_back(art->id); + if (art->aClass == CArtifact::ART_TREASURE && VLC->arth->legalArtifact(art->id) && art->constituentOf.empty()) //don't use parts of combined artifacts + questArtifacts.push_back(art->id); } }