- len = strlcpy (namebuffer, s->name, sizeof (namebuffer));
- if (len >= sizeof (namebuffer))
- return false;
+ // LordHavoc: if the sound filename does not begin with sound/, try adding it
+ if (strncasecmp(s->name, "sound/", 6))
+ {
+ len = dpsnprintf (namebuffer, sizeof(namebuffer), "sound/%s", s->name);
+ if (len < 0)
+ {
+ // name too long
+ Con_Printf("S_LoadSound: name \"%s\" is too long\n", s->name);
+ return false;
+ }
+ if (S_LoadWavFile (namebuffer, s))
+ return true;
+ if (len >= 4 && !strcasecmp (namebuffer + len - 4, ".wav"))
+ strcpy (namebuffer + len - 3, "ogg");
+ if (OGG_LoadVorbisFile (namebuffer, s))
+ return true;
+ }