From f1655f8afe2ef76d4906eb3e94dfd3c2b5241eb4 Mon Sep 17 00:00:00 2001 From: Ladislav Zezula Date: Thu, 26 May 2016 23:46:09 +0200 Subject: + Added support for an updated Somj2hM16 protection --- src/SBaseFileTable.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp index 49e4de2..b38dbc3 100644 --- a/src/SBaseFileTable.cpp +++ b/src/SBaseFileTable.cpp @@ -734,11 +734,15 @@ static int BuildFileTableFromBlockTable( TMPQHash * pHash; LPDWORD DefragmentTable = NULL; DWORD dwItemCount = 0; + DWORD dwFlagMask; // Sanity checks assert(ha->pFileTable != NULL); assert(ha->dwFileTableSize >= ha->dwMaxFileCount); + // MPQs for Warcraft III doesn't know some flags, namely MPQ_FILE_SINGLE_UNIT and MPQ_FILE_PATCH_FILE + dwFlagMask = (ha->dwFlags & MPQ_FLAG_WAR3_MAP) ? ~(MPQ_FILE_SINGLE_UNIT | MPQ_FILE_PATCH_FILE) : 0xFFFFFFFF; + // Defragment the hash table, if needed if(ha->dwFlags & MPQ_FLAG_HASH_TABLE_CUT) { @@ -816,7 +820,7 @@ static int BuildFileTableFromBlockTable( // Fill the rest of the file entry pFileEntry->dwFileSize = pBlock->dwFSize; pFileEntry->dwCmpSize = pBlock->dwCSize; - pFileEntry->dwFlags = pBlock->dwFlags; + pFileEntry->dwFlags = pBlock->dwFlags & dwFlagMask; } } -- cgit v1.2.3