diff options
author | Ladislav Zezula <E:\Ladik\Mail> | 2016-05-26 23:46:09 +0200 |
---|---|---|
committer | Ladislav Zezula <E:\Ladik\Mail> | 2016-05-26 23:46:09 +0200 |
commit | f1655f8afe2ef76d4906eb3e94dfd3c2b5241eb4 (patch) | |
tree | 496b3b70fd3613b7f3148b4ea81dda4708b21a37 /src | |
parent | b86b4e7f6385ced4b34c1c84785ac5dc19be660f (diff) |
+ Added support for an updated Somj2hM16 protection
Diffstat (limited to 'src')
-rw-r--r-- | src/SBaseFileTable.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
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;
}
}
|