1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-21 00:19:29 +02:00

Add workaround for strange/unknown hota h3m quirk

This commit is contained in:
Ivan Savenko
2025-06-02 19:03:15 +03:00
parent c279da0798
commit ae2e6f0357
3 changed files with 9 additions and 3 deletions

View File

@ -371,7 +371,7 @@ void CampaignHandler::readHeaderFromMemory( CampaignHeader & ret, CBinaryReader
ret.difficultyChosenByPlayer = false; ret.difficultyChosenByPlayer = false;
ret.music = mapping.remapCampaignMusic(reader.readUInt8()); ret.music = mapping.remapCampaignMusic(reader.readUInt8());
logGlobal->info("Campaign %s: map %d (%d scenarios), music theme: %s", filename, campaignMapId.getNum(), ret.numberOfScenarios, ret.music.getOriginalName()); logGlobal->trace("Campaign %s: map %d (%d scenarios), music theme: %s", filename, campaignMapId.getNum(), ret.numberOfScenarios, ret.music.getOriginalName());
ret.filename = filename; ret.filename = filename;
ret.modName = modName; ret.modName = modName;
ret.encoding = encoding; ret.encoding = encoding;
@ -389,7 +389,7 @@ CampaignScenario CampaignHandler::readScenarioFromMemory( CBinaryReader & reader
{ {
ret.prologVideo = mapping.remapCampaignVideo(reader.readUInt8()); ret.prologVideo = mapping.remapCampaignVideo(reader.readUInt8());
ret.prologMusic = mapping.remapCampaignMusic(reader.readUInt8()); ret.prologMusic = mapping.remapCampaignMusic(reader.readUInt8());
logGlobal->info("Campaign %s, scenario %s: music theme: %s, video: %s", header.filename, identifier, ret.prologMusic.getOriginalName(), ret.prologVideo.getOriginalName()); logGlobal->trace("Campaign %s, scenario %s: music theme: %s, video: %s", header.filename, identifier, ret.prologMusic.getOriginalName(), ret.prologVideo.getOriginalName());
ret.prologText.appendTextID(readLocalizedString(header, reader, header.filename, header.modName, header.encoding, identifier)); ret.prologText.appendTextID(readLocalizedString(header, reader, header.filename, header.modName, header.encoding, identifier));
} }
return ret; return ret;

View File

@ -39,6 +39,7 @@ FactionID PlayerInfo::defaultCastle() const
if(isFactionRandom) if(isFactionRandom)
return FactionID::RANDOM; return FactionID::RANDOM;
assert(!allowedFactions.empty());
if(!allowedFactions.empty()) if(!allowedFactions.empty())
return *allowedFactions.begin(); return *allowedFactions.begin();

View File

@ -252,7 +252,12 @@ void CMapLoaderH3M::readPlayerInfo()
const bool allFactionsAllowed = playerInfo.isFactionRandom && allowedFactions.size() == features.factionsCount; const bool allFactionsAllowed = playerInfo.isFactionRandom && allowedFactions.size() == features.factionsCount;
if(!allFactionsAllowed) if(!allFactionsAllowed)
playerInfo.allowedFactions = allowedFactions; {
if (!allowedFactions.empty())
playerInfo.allowedFactions = allowedFactions;
else
logGlobal->warn("Map '%s': Player %d has no allowed factions to play! Ignoring.", mapName, i);
}
playerInfo.hasMainTown = reader->readBool(); playerInfo.hasMainTown = reader->readBool();
if(playerInfo.hasMainTown) if(playerInfo.hasMainTown)