rev 1784 introduced some changes in the Lod Handler:
203 void CLodHandler::init(std::string lodFile, std::string dirName)
237 if (ext == ".MSK" || ext == ".MSG")
238 entry.nameStr[dotPos] = '#';//this files have same name as def - rename to defName#msk
240 entry.nameStr.erase(dotPos);//filename.ext becomes filename
When I run the client I get:
What’s the purpose of that change ?
Purpose of this change is to allow replacing file.pcx in LOD with file.anyExtension in folder. But since we have file.def, file.msk, file.msg I’ve added that changes.
As result file.def can be replaced with file.whatever and file.msk with file#msk.whatever
If I am correct such error can appear only if this file is missing in .lod archive but present in /sprites folder. Don’t see any other way to cause this…
In this case replacing this lines:
if ( dotPos != -1 )//extension found
with the lines you mentioned:
std::string ext = name.substr(dotPos);
if (ext == ".MSK" || ext == ".MSG")
name[dotPos] = '#';//this files have same name as def - rename to defName#msk
name.erase(dotPos);//filename.ext becomes filename
Thanks. That fixed the crash.
When i run. Vcmi, my ‘alogcat’ says “F/VCMI(7157): Cannot find file ZGARN002” &
"F/VCMI(7157): Fatal error. Missing game file: ZGARN002.DEF. Aborting!
This is file from WoG, you can downloaded it here:
maps4heroes.com/heroes3/in_t … f_gods.php