1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-04-17 11:56:46 +02:00

Better fix for allowed heroes in h3m - allow all heroes from mods

This commit is contained in:
Ivan Savenko 2023-11-22 17:09:42 +02:00
parent f643fff5eb
commit e979fb7056
4 changed files with 11 additions and 6 deletions

View File

@ -166,7 +166,7 @@ CMap::CMap()
, grailRadius(0)
, uidCounter(0)
{
allHeroes.resize(allowedHeroes.size());
allHeroes.resize(VLC->heroh->objects.size());
allowedAbilities = VLC->skillh->getDefaultAllowed();
allowedArtifact = VLC->arth->getDefaultAllowed();
allowedSpells = VLC->spellh->getDefaultAllowed();

View File

@ -108,8 +108,6 @@ void CMapLoaderH3M::init()
inputStream->seek(0);
readHeader();
map->allHeroes.resize(map->allowedHeroes.size());
readDisposedHeroes();
readMapOptions();
readAllowedArtifacts();
@ -678,6 +676,8 @@ void CMapLoaderH3M::readTeamInfo()
void CMapLoaderH3M::readAllowedHeroes()
{
mapHeader->allowedHeroes = VLC->heroh->getDefaultAllowed();
if(features.levelHOTA0)
reader->readBitmaskHeroesSized(mapHeader->allowedHeroes, false);
else
@ -747,6 +747,8 @@ void CMapLoaderH3M::readMapOptions()
void CMapLoaderH3M::readAllowedArtifacts()
{
map->allowedArtifact = VLC->arth->getDefaultAllowed();
if(features.levelAB)
{
if(features.levelHOTA0)

View File

@ -325,8 +325,6 @@ void MapReaderH3M::readBitmaskSkills(std::set<SecondarySkill> & dest, bool inver
template<class Identifier>
void MapReaderH3M::readBitmask(std::set<Identifier> & dest, int bytesToRead, int objectsToRead, bool invert)
{
dest.clear();
for(int byte = 0; byte < bytesToRead; ++byte)
{
const ui8 mask = reader->readUInt8();
@ -343,6 +341,8 @@ void MapReaderH3M::readBitmask(std::set<Identifier> & dest, int bytesToRead, int
if (result)
dest.insert(vcmiID);
else
dest.erase(vcmiID);
}
}
}

View File

@ -548,7 +548,10 @@ void CGameHandler::init(StartInfo *si, Load::ProgressAccumulator & progressTrack
turnOrder->addPlayer(elem.first);
for (auto & elem : gs->map->allHeroes)
{
if(elem)
heroPool->getHeroSkillsRandomGenerator(elem->getHeroType()); // init RMG seed
}
reinitScripting();
}