diff --git a/lib/CArtHandler.cpp b/lib/CArtHandler.cpp index a4567b013..bf512c9cf 100644 --- a/lib/CArtHandler.cpp +++ b/lib/CArtHandler.cpp @@ -400,24 +400,24 @@ int CArtHandler::convertMachineID(int id, bool creToArt ) void CArtHandler::sortArts() { -// for (int i=0; iaClass) -// { -// case CArtifact::ART_TREASURE: -// treasures.push_back(allowedArtifacts[i]); -// break; -// case CArtifact::ART_MINOR: -// minors.push_back(allowedArtifacts[i]); -// break; -// case CArtifact::ART_MAJOR: -// majors.push_back(allowedArtifacts[i]); -// break; -// case CArtifact::ART_RELIC: -// relics.push_back(allowedArtifacts[i]); -// break; -// } -// } + //for (int i=0; iaClass) + // { + // case CArtifact::ART_TREASURE: + // treasures.push_back(allowedArtifacts[i]); + // break; + // case CArtifact::ART_MINOR: + // minors.push_back(allowedArtifacts[i]); + // break; + // case CArtifact::ART_MAJOR: + // majors.push_back(allowedArtifacts[i]); + // break; + // case CArtifact::ART_RELIC: + // relics.push_back(allowedArtifacts[i]); + // break; + // } + //} } void CArtHandler::erasePickedArt (si32 id) { @@ -467,10 +467,17 @@ void CArtHandler::getAllowed(std::vector > &out, i getAllowedArts (out, &majors, CArtifact::ART_MAJOR); if (flags & CArtifact::ART_RELIC) getAllowedArts (out, &relics, CArtifact::ART_RELIC); - if (!out.size()) //no arts are avaliable + if (!out.size()) //no artifact of specified rarity, we need to take another one + { + getAllowedArts (out, &treasures, CArtifact::ART_TREASURE); + getAllowedArts (out, &minors, CArtifact::ART_MINOR); + getAllowedArts (out, &majors, CArtifact::ART_MAJOR); + getAllowedArts (out, &relics, CArtifact::ART_RELIC); + } + if (!out.size()) //no arts are avaliable at all { out.resize (64); - std::fill_n (out.begin(), 64, artifacts[2]); //magic + std::fill_n (out.begin(), 64, artifacts[2]); //Give Grail - this can't be banned (hopefully) } } void CArtHandler::getAllowedArts(std::vector > &out, std::vector *arts, int flag) diff --git a/lib/map.cpp b/lib/map.cpp index d8292f885..000fa9b69 100644 --- a/lib/map.cpp +++ b/lib/map.cpp @@ -972,7 +972,16 @@ void Mapa::readHeader( const unsigned char * bufor, int &i) } }//allowed artifacts have been read } - + else //ban combo artifacts + { + BOOST_FOREACH(CArtifact *artifact, VLC->arth->artifacts) + { + if (artifact->constituents != NULL) //combo + { + allowedArtifact[artifact->id] = false; + } + } + } allowedSpell.resize(SPELLS_QUANTITY); for(unsigned int x=0;x