diff --git a/src/common/collision.c b/src/common/collision.c index aaf5ec81..f32c3828 100644 --- a/src/common/collision.c +++ b/src/common/collision.c @@ -1806,25 +1806,47 @@ CMod_LoadEntityString(lump_t *l, char *name) { if (sv_entfile->value) { - char s[MAX_QPATH]; - char *buffer = NULL; - int nameLen, bufLen; + char *buffer = NULL, entname[256]; + int nameLen, bufLen = -1; nameLen = strlen(name); - strcpy(s, name); - s[nameLen-3] = 'e'; s[nameLen-2] = 'n'; s[nameLen-1] = 't'; - bufLen = FS_LoadFile(s, (void **)&buffer); + if (strcmp(name + nameLen - 4, ".bsp") || nameLen > (MAX_QPATH - 1)) + { + Com_Printf("%s: unsupported map format '%s'\n", __func__, name); + } + else + { + char namewe[MAX_QPATH]; + + int crc = 0; + + if (l->filelen > 0) { + crc = CRC_Block(cmod_base + l->fileofs, l->filelen - 1); + } + + memset(namewe, 0, sizeof(namewe)); + memcpy(namewe, name, nameLen - 4); + + snprintf(entname, sizeof(entname) -1, "%s@%04x.ent", namewe, crc); + + bufLen = FS_LoadFile(entname, (void **)&buffer); + if (buffer == NULL) + { + Com_Printf("%s: No fixes found for '%s'\n", __func__, entname); + } + } if (buffer != NULL && bufLen > 1) { if (bufLen + 1 > sizeof(map_entitystring)) { - Com_Printf("CMod_LoadEntityString: .ent file %s too large: %i > %lu.\n", s, bufLen, (unsigned long)sizeof(map_entitystring)); + Com_Printf("%s: .ent file %s too large: %i > %lu.\n", + __func__, entname, bufLen, (unsigned long)sizeof(map_entitystring)); FS_FreeFile(buffer); } else { - Com_Printf ("CMod_LoadEntityString: .ent file %s loaded.\n", s); + Com_Printf ("%s: .ent file %s loaded.\n", __func__, entname); numentitychars = bufLen; memcpy(map_entitystring, buffer, bufLen); map_entitystring[bufLen] = 0; /* jit entity bug - null terminate the entity string! */ @@ -1835,7 +1857,7 @@ CMod_LoadEntityString(lump_t *l, char *name) else if (bufLen != -1) { /* If the .ent file is too small, don't load. */ - Com_Printf("CMod_LoadEntityString: .ent file %s too small.\n", s); + Com_Printf("%s: .ent file %s too small.\n", __func__, entname); FS_FreeFile(buffer); } } diff --git a/stuff/mapfixes/baseq2/base2.ent b/stuff/mapfixes/baseq2/base2@0ae9.ent similarity index 100% rename from stuff/mapfixes/baseq2/base2.ent rename to stuff/mapfixes/baseq2/base2@0ae9.ent diff --git a/stuff/mapfixes/baseq2/base3.ent b/stuff/mapfixes/baseq2/base3@1597.ent similarity index 100% rename from stuff/mapfixes/baseq2/base3.ent rename to stuff/mapfixes/baseq2/base3@1597.ent diff --git a/stuff/mapfixes/baseq2/biggun.ent b/stuff/mapfixes/baseq2/biggun@2c96.ent similarity index 100% rename from stuff/mapfixes/baseq2/biggun.ent rename to stuff/mapfixes/baseq2/biggun@2c96.ent diff --git a/stuff/mapfixes/baseq2/city1.ent b/stuff/mapfixes/baseq2/city1@1555.ent similarity index 100% rename from stuff/mapfixes/baseq2/city1.ent rename to stuff/mapfixes/baseq2/city1@1555.ent diff --git a/stuff/mapfixes/baseq2/city2.ent b/stuff/mapfixes/baseq2/city2@4cc5.ent similarity index 100% rename from stuff/mapfixes/baseq2/city2.ent rename to stuff/mapfixes/baseq2/city2@4cc5.ent diff --git a/stuff/mapfixes/baseq2/city3.ent b/stuff/mapfixes/baseq2/city3@1de5.ent similarity index 100% rename from stuff/mapfixes/baseq2/city3.ent rename to stuff/mapfixes/baseq2/city3@1de5.ent diff --git a/stuff/mapfixes/baseq2/cool1.ent b/stuff/mapfixes/baseq2/cool1@0250.ent similarity index 100% rename from stuff/mapfixes/baseq2/cool1.ent rename to stuff/mapfixes/baseq2/cool1@0250.ent diff --git a/stuff/mapfixes/baseq2/hangar1.ent b/stuff/mapfixes/baseq2/hangar1@09a0.ent similarity index 100% rename from stuff/mapfixes/baseq2/hangar1.ent rename to stuff/mapfixes/baseq2/hangar1@09a0.ent diff --git a/stuff/mapfixes/baseq2/jail5.ent b/stuff/mapfixes/baseq2/jail5@2ec5.ent similarity index 100% rename from stuff/mapfixes/baseq2/jail5.ent rename to stuff/mapfixes/baseq2/jail5@2ec5.ent diff --git a/stuff/mapfixes/baseq2/lab.ent b/stuff/mapfixes/baseq2/lab@c170.ent similarity index 100% rename from stuff/mapfixes/baseq2/lab.ent rename to stuff/mapfixes/baseq2/lab@c170.ent diff --git a/stuff/mapfixes/baseq2/train.ent b/stuff/mapfixes/baseq2/train@07c2.ent similarity index 100% rename from stuff/mapfixes/baseq2/train.ent rename to stuff/mapfixes/baseq2/train@07c2.ent diff --git a/stuff/mapfixes/baseq2/waste3.ent b/stuff/mapfixes/baseq2/waste3@6a93.ent similarity index 100% rename from stuff/mapfixes/baseq2/waste3.ent rename to stuff/mapfixes/baseq2/waste3@6a93.ent diff --git a/stuff/mapfixes/juggernaut/jug19.ent b/stuff/mapfixes/juggernaut/jug19@a903.ent similarity index 100% rename from stuff/mapfixes/juggernaut/jug19.ent rename to stuff/mapfixes/juggernaut/jug19@a903.ent