From a08e439551a0e2cd48fdbbe9ae53b4f67ec50606 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 19:21:23 -0500 Subject: [PATCH 1/6] Update VS2005 project --- zdoom.vcproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zdoom.vcproj b/zdoom.vcproj index 9c3367ff2..ef356b44a 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -1942,6 +1942,10 @@ RelativePath=".\src\win32\fb_ddraw.cpp" > + + From 966d0b70344f3b3356772a3ef421f68af4310449 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 19:59:42 -0500 Subject: [PATCH 2/6] Use FString for FResourceLump::FullName --- src/d_iwad.cpp | 4 ++-- src/resourcefiles/file_7z.cpp | 2 +- src/resourcefiles/file_directory.cpp | 2 +- src/resourcefiles/file_zip.cpp | 2 +- src/resourcefiles/resourcefile.cpp | 7 +------ src/resourcefiles/resourcefile.h | 3 +-- src/w_wad.cpp | 17 +++++++---------- 7 files changed, 14 insertions(+), 23 deletions(-) diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 4bb53e3fe..d6b1b092d 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -302,11 +302,11 @@ int FIWadManager::ScanIWAD (const char *iwad) FResourceLump *lump = iwadfile->GetLump(ii); CheckLumpName(lump->Name); - if (lump->FullName != NULL) + if (lump->FullName.IsNotEmpty()) { if (strnicmp(lump->FullName, "maps/", 5) == 0) { - FString mapname(lump->FullName+5, strcspn(lump->FullName+5, ".")); + FString mapname(&lump->FullName[5], strcspn(&lump->FullName[5], ".")); CheckLumpName(mapname); } } diff --git a/src/resourcefiles/file_7z.cpp b/src/resourcefiles/file_7z.cpp index 21c11ed25..81b740582 100644 --- a/src/resourcefiles/file_7z.cpp +++ b/src/resourcefiles/file_7z.cpp @@ -206,7 +206,7 @@ int STACK_ARGS F7ZFile::lumpcmp(const void * a, const void * b) F7ZLump * rec1 = (F7ZLump *)a; F7ZLump * rec2 = (F7ZLump *)b; - return stricmp(rec1->FullName, rec2->FullName); + return rec1->FullName.CompareNoCase(rec2->FullName); } diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index 024ef0633..0b74bda7b 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -133,7 +133,7 @@ int STACK_ARGS FDirectory::lumpcmp(const void * a, const void * b) FDirectoryLump * rec1 = (FDirectoryLump *)a; FDirectoryLump * rec2 = (FDirectoryLump *)b; - return stricmp(rec1->FullName, rec2->FullName); + return rec1->FullName.CompareNoCase(rec2->FullName); } #ifdef _WIN32 diff --git a/src/resourcefiles/file_zip.cpp b/src/resourcefiles/file_zip.cpp index 7ae0e90a5..bbca89d40 100644 --- a/src/resourcefiles/file_zip.cpp +++ b/src/resourcefiles/file_zip.cpp @@ -154,7 +154,7 @@ int STACK_ARGS FZipFile::lumpcmp(const void * a, const void * b) FZipLump * rec1 = (FZipLump *)a; FZipLump * rec2 = (FZipLump *)b; - return stricmp(rec1->FullName, rec2->FullName); + return rec1->FullName.CompareNoCase(rec2->FullName); } diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 15a4337b1..41d7f8a99 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -74,11 +74,6 @@ public: FResourceLump::~FResourceLump() { - if (FullName != NULL) - { - delete [] FullName; - FullName = NULL; - } if (Cache != NULL && RefCount >= 0) { delete [] Cache; @@ -102,7 +97,7 @@ void FResourceLump::LumpNameSetup(const char *iname) base = base.Left(base.LastIndexOf('.')); uppercopy(Name, base); Name[8] = 0; - FullName = copystring(iname); + FullName = iname; // Map some directories to WAD namespaces. // Note that some of these namespaces don't exist in WADS. diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index 517b5eef4..bcd030e8f 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -13,7 +13,7 @@ struct FResourceLump friend class FResourceFile; int LumpSize; - char * FullName; // only valid for files loaded from a .zip file + FString FullName; // only valid for files loaded from a non-wad archive union { char Name[9]; @@ -30,7 +30,6 @@ struct FResourceLump FResourceLump() { - FullName = NULL; Cache = NULL; Owner = NULL; Flags = 0; diff --git a/src/w_wad.cpp b/src/w_wad.cpp index abbac5763..ccb851a0b 100644 --- a/src/w_wad.cpp +++ b/src/w_wad.cpp @@ -290,14 +290,9 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo) FResourceLump *lump = resfile->GetLump(i); if (lump->Flags & LUMPF_EMBEDDED) { - char path[256]; - - mysnprintf(path, countof(path), "%s:", filename); - char *wadstr = path + strlen(path); - + FString path; + path.Format("%s:%s", filename, lump->FullName.GetChars()); FileReader *embedded = lump->NewReader(); - strcpy(wadstr, lump->FullName); - AddFile(path, embedded); } } @@ -345,7 +340,9 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo) sprintf(cksumout + (j * 2), "%02X", cksum[j]); } - fprintf(hashfile, "file: %s, lump: %s, hash: %s, size: %d\n", filename, lump->FullName ? lump->FullName : lump->Name, cksumout, lump->LumpSize); + fprintf(hashfile, "file: %s, lump: %s, hash: %s, size: %d\n", filename, + lump->FullName.IsNotEmpty() ? lump->FullName.GetChars() : lump->Name, + cksumout, lump->LumpSize); delete reader; } @@ -737,7 +734,7 @@ void FWadCollection::InitHashChains (void) FirstLumpIndex[j] = i; // Do the same for the full paths - if (LumpInfo[i].lump->FullName!=NULL) + if (LumpInfo[i].lump->FullName.IsNotEmpty()) { j = MakeKey(LumpInfo[i].lump->FullName) % NumLumps; NextLumpIndex_FullName[i] = FirstLumpIndex_FullName[j]; @@ -1088,7 +1085,7 @@ const char *FWadCollection::GetLumpFullName (int lump) const { if ((size_t)lump >= NumLumps) return NULL; - else if (LumpInfo[lump].lump->FullName != NULL) + else if (LumpInfo[lump].lump->FullName.IsNotEmpty()) return LumpInfo[lump].lump->FullName; else return LumpInfo[lump].lump->Name; From efa82cf38bf92672b32854c18b7d3186a7daf4a1 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 20:22:18 -0500 Subject: [PATCH 3/6] Consolidate archive sorting into FResourceFile base class --- src/d_iwad.cpp | 2 +- src/resourcefiles/file_7z.cpp | 16 ++-------------- src/resourcefiles/file_directory.cpp | 19 +------------------ src/resourcefiles/file_zip.cpp | 15 +-------------- src/resourcefiles/resourcefile.cpp | 21 +++++++++++++++++++++ src/resourcefiles/resourcefile.h | 1 + 6 files changed, 27 insertions(+), 47 deletions(-) diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index d6b1b092d..4a46a93cd 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -253,7 +253,7 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize) //========================================================================== // -// Lool for IWAD definition lump +// Look for IWAD definition lump // //========================================================================== diff --git a/src/resourcefiles/file_7z.cpp b/src/resourcefiles/file_7z.cpp index 81b740582..1fb553932 100644 --- a/src/resourcefiles/file_7z.cpp +++ b/src/resourcefiles/file_7z.cpp @@ -179,7 +179,7 @@ struct F7ZLump : public FResourceLump //========================================================================== // -// Zip file +// 7-zip file // //========================================================================== @@ -190,8 +190,6 @@ class F7ZFile : public FResourceFile F7ZLump *Lumps; C7zArchive *Archive; - static int STACK_ARGS lumpcmp(const void * a, const void * b); - public: F7ZFile(const char * filename, FileReader *filer); bool Open(bool quiet); @@ -201,15 +199,6 @@ public: -int STACK_ARGS F7ZFile::lumpcmp(const void * a, const void * b) -{ - F7ZLump * rec1 = (F7ZLump *)a; - F7ZLump * rec2 = (F7ZLump *)b; - - return rec1->FullName.CompareNoCase(rec2->FullName); -} - - //========================================================================== // // 7Z file @@ -328,8 +317,7 @@ bool F7ZFile::Open(bool quiet) if (!quiet) Printf(", %d lumps\n", NumLumps); - // Entries in archives are sorted alphabetically - qsort(&Lumps[0], NumLumps, sizeof(F7ZLump), lumpcmp); + PostProcessArchive(&Lumps[0], sizeof(F7ZLump)); return true; } diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index 0b74bda7b..08cb99ea9 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -86,8 +86,6 @@ class FDirectory : public FResourceFile { TArray Lumps; - static int STACK_ARGS lumpcmp(const void * a, const void * b); - int AddDirectory(const char *dirpath); void AddEntry(const char *fullpath, int size); @@ -122,20 +120,6 @@ FDirectory::FDirectory(const char * directory) } -//========================================================================== -// -// -// -//========================================================================== - -int STACK_ARGS FDirectory::lumpcmp(const void * a, const void * b) -{ - FDirectoryLump * rec1 = (FDirectoryLump *)a; - FDirectoryLump * rec2 = (FDirectoryLump *)b; - - return rec1->FullName.CompareNoCase(rec2->FullName); -} - #ifdef _WIN32 //========================================================================== // @@ -299,8 +283,7 @@ bool FDirectory::Open(bool quiet) { NumLumps = AddDirectory(Filename); if (!quiet) Printf(", %d lumps\n", NumLumps); - // Entries in Zips are sorted alphabetically. - qsort(&Lumps[0], NumLumps, sizeof(FDirectoryLump), lumpcmp); + PostProcessArchive(&Lumps[0], sizeof(FDirectoryLump)); return true; } diff --git a/src/resourcefiles/file_zip.cpp b/src/resourcefiles/file_zip.cpp index bbca89d40..5d6ff6c9e 100644 --- a/src/resourcefiles/file_zip.cpp +++ b/src/resourcefiles/file_zip.cpp @@ -138,8 +138,6 @@ class FZipFile : public FResourceFile { FZipLump *Lumps; - static int STACK_ARGS lumpcmp(const void * a, const void * b); - public: FZipFile(const char * filename, FileReader *file); virtual ~FZipFile(); @@ -148,16 +146,6 @@ public: }; - -int STACK_ARGS FZipFile::lumpcmp(const void * a, const void * b) -{ - FZipLump * rec1 = (FZipLump *)a; - FZipLump * rec2 = (FZipLump *)b; - - return rec1->FullName.CompareNoCase(rec2->FullName); -} - - //========================================================================== // // Zip file @@ -274,8 +262,7 @@ bool FZipFile::Open(bool quiet) if (!quiet) Printf(", %d lumps\n", NumLumps); - // Entries in Zips are sorted alphabetically. - qsort(Lumps, NumLumps, sizeof(FZipLump), lumpcmp); + PostProcessArchive(&Lumps[0], sizeof(FZipLump)); return true; } diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 41d7f8a99..181559f85 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -316,6 +316,27 @@ FResourceFile::~FResourceFile() delete Reader; } +int STACK_ARGS lumpcmp(const void * a, const void * b) +{ + FResourceLump * rec1 = (FResourceLump *)a; + FResourceLump * rec2 = (FResourceLump *)b; + + return rec1->FullName.CompareNoCase(rec2->FullName); +} + +//========================================================================== +// +// FResourceFile :: PostProcessArchive +// +// Sorts files by name. +// +//========================================================================== + +void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize) +{ + // Entries in archives are sorted alphabetically + qsort(lumps, NumLumps, lumpsize, lumpcmp); +} //========================================================================== // diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index bcd030e8f..8fd7366ef 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -76,6 +76,7 @@ public: DWORD LumpCount() const { return NumLumps; } DWORD GetFirstLump() const { return FirstLump; } void SetFirstLump(DWORD f) { FirstLump = f; } + void PostProcessArchive(void *lumps, size_t lumpsize); // for archives that can contain directories virtual void FindStrifeTeaserVoices (); virtual bool Open(bool quiet) = 0; From fc6f983c136ec01aa4759bd9eb896c310222d74f Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 21:50:08 -0500 Subject: [PATCH 4/6] Fix memory leak when passing directories to -file --- src/resourcefiles/file_directory.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index 08cb99ea9..f6adf0723 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -111,9 +111,12 @@ FDirectory::FDirectory(const char * directory) #ifdef _WIN32 directory = _fullpath(NULL, directory, _MAX_PATH); #else - // Todo for Linux: Resolve the path befire using it + // Todo for Linux: Resolve the path before using it #endif dirname = directory; + #ifdef _WIN32 + free((void *)directory); + #endif dirname.ReplaceChars('\\', '/'); if (dirname[dirname.Len()-1] != '/') dirname += '/'; Filename = copystring(dirname); From 7b4d6e2f8768a5a8c467d4cf22ed6b5cd11bde0f Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 22:42:22 -0500 Subject: [PATCH 5/6] Add lump filtering for archive resources - Multi-directory archives (e.g. zips) now support filtering lumps depending on the loaded IWAD. The search rules are the same as for the Autoload entries in the user's ini. For instance, if you are playing Doom 2, the following filters will be applied: * "filter/doom2/*" * "filter/doom/*" They will be renamed to strip out the "filter/doom2/" and "filter/doom/" parts and will be ordered so they take precedence over any files not inside a filter/ directory. Any files inside another filter/ directory (e.g. "filter/hexen/*") will be ignored. --- src/d_main.cpp | 3 + src/doomstat.cpp | 1 + src/doomstat.h | 3 + src/resourcefiles/resourcefile.cpp | 170 ++++++++++++++++++++++++++++- src/resourcefiles/resourcefile.h | 8 +- src/w_wad.cpp | 30 +++++ src/w_wad.h | 2 + 7 files changed, 215 insertions(+), 2 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 737622de3..ab2459788 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1992,6 +1992,9 @@ static void D_DoomInit() static void AddAutoloadFiles(const char *group, const char *autoname) { + LumpFilterGroup = group; + LumpFilterIWAD = autoname; + if (!(gameinfo.flags & GI_SHAREWARE) && !Args->CheckParm("-noautoload")) { FString file; diff --git a/src/doomstat.cpp b/src/doomstat.cpp index 27c50b81e..697ef3afe 100644 --- a/src/doomstat.cpp +++ b/src/doomstat.cpp @@ -69,3 +69,4 @@ int SinglePlayerClass[MAXPLAYERS]; bool ToggleFullscreen; int BorderTopRefresh; +FString LumpFilterGroup, LumpFilterIWAD; diff --git a/src/doomstat.h b/src/doomstat.h index b1784530f..d7f3796ac 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -250,4 +250,7 @@ EXTERN_CVAR (Int, compatflags); EXTERN_CVAR (Int, compatflags2); extern int i_compatflags, i_compatflags2, ii_compatflags, ii_compatflags2, ib_compatflags; +// Filters from AddAutoloadFiles(). Used to filter files from archives. +extern FString LumpFilterGroup, LumpFilterIWAD; + #endif diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 181559f85..64fe9b6cf 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -38,7 +38,8 @@ #include "cmdlib.h" #include "w_wad.h" #include "doomerrors.h" - +#include "gi.h" +#include "doomstat.h" //========================================================================== @@ -329,6 +330,9 @@ int STACK_ARGS lumpcmp(const void * a, const void * b) // FResourceFile :: PostProcessArchive // // Sorts files by name. +// For files named "filter//*": Using the same filter rules as config +// autoloading, move them to the end and rename them without the "filter/" +// prefix. Filtered files that don't match are deleted. // //========================================================================== @@ -336,6 +340,170 @@ void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize) { // Entries in archives are sorted alphabetically qsort(lumps, NumLumps, lumpsize, lumpcmp); + + // Filter out lumps using the same names as the Autoload.* sections + // in the ini file use. We reduce the maximum lump concidered after + // each one so that we don't risk refiltering already filtered lumps. + DWORD max = NumLumps; + max -= FilterLumps(gameinfo.ConfigName, lumps, lumpsize, max); + max -= FilterLumps(LumpFilterGroup, lumps, lumpsize, max); + max -= FilterLumps(LumpFilterIWAD, lumps, lumpsize, max); + JunkLeftoverFilters(lumps, lumpsize, max); +} + +//========================================================================== +// +// FResourceFile :: FilterLumps +// +// Finds any lumps between [0,) that match the pattern +// "filter//*" and moves them to the end of the lump list. +// Returns the number of lumps moved. +// +//========================================================================== + +int FResourceFile::FilterLumps(FString filtername, void *lumps, size_t lumpsize, DWORD max) +{ + FString filter; + DWORD start, end; + + if (filtername.IsEmpty()) + { + return 0; + } + filter << "filter/" << filtername << '/'; + if (FindPrefixRange(filter, lumps, lumpsize, max, start, end)) + { + void *from = (BYTE *)lumps + start * lumpsize; + + // Remove filter prefix from every name + void *lump_p = from; + for (DWORD i = start; i < end; ++i, lump_p = (BYTE *)lump_p + lumpsize) + { + FResourceLump *lump = (FResourceLump *)lump_p; + assert(lump->FullName.CompareNoCase(filter, (int)filter.Len()) == 0); + lump->LumpNameSetup(&lump->FullName[filter.Len()]); + } + + // Move filtered lumps to the end of the lump list. + size_t count = (end - start) * lumpsize; + void *to = (BYTE *)lumps + NumLumps * lumpsize - count; + assert (to >= from); + + if (from != to) + { + // Copy filtered lumps to a temporary buffer. + BYTE *filteredlumps = new BYTE[count]; + memcpy(filteredlumps, from, count); + + // Shift lumps left to make room for the filtered ones at the end. + memmove(from, (BYTE *)from + count, (NumLumps - end) * lumpsize); + + // Copy temporary buffer to newly freed space. + memcpy(to, filteredlumps, count); + + delete[] filteredlumps; + } + } + return end - start; +} + +//========================================================================== +// +// FResourceFile :: JunkLeftoverFilters +// +// Deletes any lumps beginning with "filter/" that were not matched. +// +//========================================================================== + +void FResourceFile::JunkLeftoverFilters(void *lumps, size_t lumpsize, DWORD max) +{ + DWORD start, end; + if (FindPrefixRange("filter/", lumps, lumpsize, max, start, end)) + { + // Since the resource lumps may contain non-POD data besides the + // full name, we "delete" them by erasing their names so they + // can't be found. + void *stop = (BYTE *)lumps + end * lumpsize; + for (void *p = (BYTE *)lumps + start * lumpsize; p < stop; p = (BYTE *)p + lumpsize) + { + FResourceLump *lump = (FResourceLump *)p; + lump->FullName = 0; + lump->Name[0] = '\0'; + lump->Namespace = ns_invalid; + } + } +} + +//========================================================================== +// +// FResourceFile :: FindPrefixRange +// +// Finds a range of lumps that start with the prefix string. is left +// indicating the first matching one. is left at one plus the last +// matching one. +// +//========================================================================== + +bool FResourceFile::FindPrefixRange(FString filter, void *lumps, size_t lumpsize, DWORD maxlump, DWORD &start, DWORD &end) +{ + DWORD min, max, mid, inside; + FResourceLump *lump; + int cmp; + + // Pretend that our range starts at 1 instead of 0 so that we can avoid + // unsigned overflow if the range starts at the first lump. + lumps = (BYTE *)lumps - lumpsize; + + // Binary search to find any match at all. + min = 1, max = maxlump; + while (min <= max) + { + mid = min + (max - min) / 2; + lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize); + cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len()); + if (cmp == 0) + break; + else if (cmp < 0) + min = mid + 1; + else + max = mid - 1; + } + if (max < min) + { // matched nothing + return false; + } + + // Binary search to find first match. + inside = mid; + min = 1, max = mid; + while (min <= max) + { + mid = min + (max - min) / 2; + lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize); + cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len()); + // Go left on matches and right on misses. + if (cmp == 0) + max = mid - 1; + else + min = mid + 1; + } + start = mid + (cmp != 0) - 1; + + // Binary search to find last match. + min = inside, max = maxlump; + while (min <= max) + { + mid = min + (max - min) / 2; + lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize); + cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len()); + // Go right on matches and left on misses. + if (cmp == 0) + min = mid + 1; + else + max = mid - 1; + } + end = mid - (cmp != 0); + return true; } //========================================================================== diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index 8fd7366ef..9927b1eae 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -65,9 +65,16 @@ protected: FResourceFile(const char *filename, FileReader *r); + // for archives that can contain directories + void PostProcessArchive(void *lumps, size_t lumpsize); + private: DWORD FirstLump; + int FilterLumps(FString filtername, void *lumps, size_t lumpsize, DWORD max); + bool FindPrefixRange(FString filter, void *lumps, size_t lumpsize, DWORD max, DWORD &start, DWORD &end); + void JunkLeftoverFilters(void *lumps, size_t lumpsize, DWORD max); + public: static FResourceFile *OpenResourceFile(const char *filename, FileReader *file, bool quiet = false); static FResourceFile *OpenDirectory(const char *filename, bool quiet = false); @@ -76,7 +83,6 @@ public: DWORD LumpCount() const { return NumLumps; } DWORD GetFirstLump() const { return FirstLump; } void SetFirstLump(DWORD f) { FirstLump = f; } - void PostProcessArchive(void *lumps, size_t lumpsize); // for archives that can contain directories virtual void FindStrifeTeaserVoices (); virtual bool Open(bool quiet) = 0; diff --git a/src/w_wad.cpp b/src/w_wad.cpp index ccb851a0b..4d0b51623 100644 --- a/src/w_wad.cpp +++ b/src/w_wad.cpp @@ -1571,3 +1571,33 @@ static void PrintLastError () Printf (TEXTCOLOR_RED " %s\n", strerror(errno)); } #endif + +#ifdef _DEBUG +//========================================================================== +// +// CCMD LumpNum +// +//========================================================================== + +CCMD(lumpnum) +{ + for (int i = 1; i < argv.argc(); ++i) + { + Printf("%s: %d\n", argv[i], Wads.CheckNumForName(argv[i])); + } +} + +//========================================================================== +// +// CCMD LumpNumFull +// +//========================================================================== + +CCMD(lumpnumfull) +{ + for (int i = 1; i < argv.argc(); ++i) + { + Printf("%s: %d\n", argv[i], Wads.CheckNumForFullName(argv[i])); + } +} +#endif diff --git a/src/w_wad.h b/src/w_wad.h index 4dfe3434d..262a332c6 100644 --- a/src/w_wad.h +++ b/src/w_wad.h @@ -52,6 +52,8 @@ struct wadlump_t // [RH] Namespaces from BOOM. typedef enum { + ns_invalid = -1, + ns_global = 0, ns_sprites, ns_flats, From a5e67f7332c7838dbe375ab04daaf8ceb020f2f3 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 22:58:58 -0500 Subject: [PATCH 6/6] Split sndinfo.txt up into multiple files using filter directories. - This means the original need for $ifdoom, $ifheretic, etc directives is no more, but they need to stay for compatibility with third-party wads that use them. --- wadsrc/static/filter/doom/sndinfo.txt | 451 ++++++++ wadsrc/static/filter/heretic/sndinfo.txt | 291 +++++ wadsrc/static/filter/hexen/sndinfo.txt | 190 ++++ wadsrc/static/filter/strife/sndinfo.txt | 314 ++++++ wadsrc/static/sndinfo.txt | 1271 ---------------------- 5 files changed, 1246 insertions(+), 1271 deletions(-) create mode 100644 wadsrc/static/filter/doom/sndinfo.txt create mode 100644 wadsrc/static/filter/heretic/sndinfo.txt create mode 100644 wadsrc/static/filter/hexen/sndinfo.txt create mode 100644 wadsrc/static/filter/strife/sndinfo.txt diff --git a/wadsrc/static/filter/doom/sndinfo.txt b/wadsrc/static/filter/doom/sndinfo.txt new file mode 100644 index 000000000..6028b11f0 --- /dev/null +++ b/wadsrc/static/filter/doom/sndinfo.txt @@ -0,0 +1,451 @@ +/****************************************************************************/ +/* */ +/* DOOM SOUNDS */ +/* */ +/****************************************************************************/ + +// BOOM has pitch shifting equivalent to a range of 4. I never got to hear +// Doom when it used pitch shifting, so I don't know if this is correct or not. +$pitchshiftrange 4 + +// This sound is never actually used. It's just defined here for +// compatibility with DeHackEd patches that reference dsskldth. +misc/unused dsskldth // Sounds just like dsoof + +//=========================================================================== +// +// Doom-specific player sounds +// +//=========================================================================== + +$playersound player male *death dspldeth +$playersound player male *xdeath dspdiehi +$playersound player male *gibbed dsslop +$playersound player male *pain100 dsplpain +$playersounddup player male *pain75 *pain100 +$playersounddup player male *pain50 *pain100 +$playersounddup player male *pain25 *pain100 +$playersound player male *grunt dsoof +$playersounddup player male *land *grunt +$playersound player male *jump dsjump +$playersound player male *fist dspunch +$playersound player male *usefail dsnoway + +$playersound player female *death dsfldeth +$playersound player female *xdeath dsfdiehi +$playersound player female *gibbed dsslop +$playersound player female *pain100 dsflpain +$playersounddup player female *pain75 *pain100 +$playersounddup player female *pain50 *pain100 +$playersounddup player female *pain25 *pain100 +$playersound player female *grunt dsfoof +$playersounddup player female *land *grunt +$playersound player female *jump dsfjump +$playersound player female *fist dspunch +$playersound player female *usefail dsfnoway + +$playersound player other *death dscldeth +$playersound player other *xdeath dscdiehi +$playersound player other *gibbed dsslop +$playersound player other *pain100 dsclpain +$playersounddup player other *pain75 *pain100 +$playersounddup player other *pain50 *pain100 +$playersounddup player other *pain25 *pain100 +$playersound player other *grunt dscoof +$playersounddup player other *land *grunt +$playersound player other *jump dscjump +$playersound player other *fist dspunch +$playersound player other *usefail dscnoway + +// Alternate names for some player sounds needed for ZDoom <= 1.22 compatibility +// +// If any sounds with these names are defined later, they will redefine +// the corresponding player sounds instead. Likewise, if they are played, +// they will play the corresponding player sound instead. + +$playercompat player male *death player/male/death1 +$playercompat player male *death player/male/death2 +$playercompat player male *death player/male/death3 +$playercompat player male *death player/male/death4 +$playercompat player male *xdeath player/male/xdeath1 +$playercompat player male *pain100 player/male/pain100_1 +$playercompat player male *pain100 player/male/pain100_2 +$playercompat player male *pain75 player/male/pain75_1 +$playercompat player male *pain75 player/male/pain75_2 +$playercompat player male *pain50 player/male/pain50_1 +$playercompat player male *pain50 player/male/pain50_2 +$playercompat player male *pain25 player/male/pain25_1 +$playercompat player male *pain25 player/male/pain25_2 +$playercompat player male *grunt player/male/grunt1 +$playercompat player male *land player/male/land1 +$playercompat player male *jump player/male/jump1 +$playercompat player male *gibbed player/male/gibbed +$playercompat player male *fist player/male/fist + +$playercompat player female *death player/female/death1 +$playercompat player female *death player/female/death2 +$playercompat player female *death player/female/death3 +$playercompat player female *death player/female/death4 +$playercompat player female *xdeath player/female/xdeath1 +$playercompat player female *pain100 player/female/pain100_1 +$playercompat player female *pain100 player/female/pain100_2 +$playercompat player female *pain75 player/female/pain75_1 +$playercompat player female *pain75 player/female/pain75_2 +$playercompat player female *pain50 player/female/pain50_1 +$playercompat player female *pain50 player/female/pain50_2 +$playercompat player female *pain25 player/female/pain25_1 +$playercompat player female *pain25 player/female/pain25_2 +$playercompat player female *grunt player/female/grunt1 +$playercompat player female *land player/female/land1 +$playercompat player female *jump player/female/jump1 +$playercompat player female *gibbed player/female/gibbed +$playercompat player female *fist player/female/fist + +$playercompat player other *death player/cyborg/death1 +$playercompat player other *death player/cyborg/death2 +$playercompat player other *death player/cyborg/death3 +$playercompat player other *death player/cyborg/death4 +$playercompat player other *xdeath player/cyborg/xdeath1 +$playercompat player other *pain100 player/cyborg/pain100_1 +$playercompat player other *pain100 player/cyborg/pain100_2 +$playercompat player other *pain75 player/cyborg/pain75_1 +$playercompat player other *pain75 player/cyborg/pain75_2 +$playercompat player other *pain50 player/cyborg/pain50_1 +$playercompat player other *pain50 player/cyborg/pain50_2 +$playercompat player other *pain25 player/cyborg/pain25_1 +$playercompat player other *pain25 player/cyborg/pain25_2 +$playercompat player other *grunt player/cyborg/grunt1 +$playercompat player other *land player/cyborg/land1 +$playercompat player other *jump player/cyborg/jump1 +$playercompat player other *gibbed player/cyborg/gibbed +$playercompat player other *fist player/cyborg/fist + +// +// Weapons +// + +$pitchshiftrange 3 +weapons/sawup dssawup +weapons/sawidle dssawidl +weapons/sawfull dssawful +weapons/sawhit dssawhit +$pitchshiftrange 4 + +weapons/pistol dspistol +weapons/shotgf dsshotgn +weapons/shotgr dssgcock +weapons/sshotf dsdshtgn +weapons/sshoto dsdbopn +weapons/sshotc dsdbcls +weapons/sshotl dsdbload +weapons/chngun dspistol +weapons/rocklx dsbarexp +weapons/rocklf dsrlaunc +weapons/plasmaf dsplasma +weapons/plasmax dsfirxpl +weapons/bfgf dsbfg +weapons/bfgx dsrxplod +weapons/railgf railgf1 +weapons/grbnce dsbounce +weapons/grenlx dsgrnexp +weapons/grenlf dsglaunc + +// Problem: weapons/rocklx needs to be unlimited but +// is also used for the MAP30 brain explosion. +// This alias remaps to the original but has its own limit +// attached so that it doesn't become too loud. +$alias misc/brainexplode weapons/rocklx +$limit misc/brainexplode 4 + +$limit weapons/plasmaf 0 +$limit weapons/chngun 0 +$limit weapons/rocklf 0 // because normal running is almost as fast as a rocket +$limit weapons/rocklx 0 // and the cyberdemon shoots 3 at once + +//=========================================================================== +// +// MONSTER SOUNDS +// +//=========================================================================== + +misc/gibbed dsslop + +// Zombie man + +$random grunt/sight { grunt/sight1 grunt/sight2 grunt/sight3 } +$random grunt/death { grunt/death1 grunt/death2 grunt/death3 } +grunt/sight1 dsposit1 +grunt/sight2 dsposit2 +grunt/sight3 dsposit3 +grunt/active dsposact +grunt/pain dspopain +grunt/death1 dspodth1 +grunt/death2 dspodth2 +grunt/death3 dspodth3 +grunt/attack dspistol + +// Shotgun guy + +$random shotguy/sight { shotguy/sight1 shotguy/sight2 shotguy/sight3 } +$random shotguy/death { shotguy/death1 shotguy/death2 shotguy/death3 } +shotguy/sight1 dsposit1 +shotguy/sight2 dsposit2 +shotguy/sight3 dsposit3 +shotguy/active dsposact +shotguy/pain dspopain +shotguy/death1 dspodth1 +shotguy/death2 dspodth2 +shotguy/death3 dspodth3 +shotguy/attack dsshotgn + +// Archvile + +vile/sight dsvilsit +vile/active dsvilact +vile/pain dsvipain +vile/death dsvildth +vile/raise dsslop +vile/start dsvilatk +vile/stop dsbarexp +vile/firestrt dsflamst +vile/firecrkl dsflame + +// Revenant + +skeleton/sight dsskesit +skeleton/active dsskeact +skeleton/pain dspopain +skeleton/melee dsskepch +skeleton/swing dsskeswg +skeleton/death dsskedth +skeleton/attack dsskeatk +skeleton/tracex dsbarexp + +// Fatso + +fatso/sight dsmansit +fatso/active dsposact +fatso/pain dsmnpain +fatso/raiseguns dsmanatk +fatso/death dsmandth +fatso/attack dsfirsht +fatso/shotx dsfirxpl + +// Chainguy + +$random chainguy/sight { chainguy/sight1 chainguy/sight2 chainguy/sight3 } +$random chainguy/death { chainguy/death1 chainguy/death2 chainguy/death3 } +chainguy/sight1 dsposit1 +chainguy/sight2 dsposit2 +chainguy/sight3 dsposit3 +chainguy/active dsposact +chainguy/pain dspopain +chainguy/death1 dspodth1 +chainguy/death2 dspodth2 +chainguy/death3 dspodth3 +chainguy/attack dsshotgn +$limit chainguy/attack 0 + +// Imp + +$random imp/sight { imp/sight1 imp/sight2 } +$random imp/death { imp/death1 imp/death2 } +imp/sight1 dsbgsit1 +imp/sight2 dsbgsit2 +imp/active dsbgact +imp/pain dspopain +imp/melee dsclaw +imp/death1 dsbgdth1 +imp/death2 dsbgdth2 +imp/attack dsfirsht +imp/shotx dsfirxpl +$limit imp/active 6 + +// Demon + +demon/sight dssgtsit +demon/active dsdmact +demon/pain dsdmpain +demon/melee dssgtatk +demon/death dssgtdth +$limit demon/melee 4 + +// Spectre + +spectre/sight dssgtsit +spectre/active dsdmact +spectre/pain dsdmpain +spectre/melee dssgtatk +spectre/death dssgtdth + +// Cacodemon + +caco/sight dscacsit +caco/active dsdmact +caco/pain dsdmpain +caco/death dscacdth +caco/attack dsfirsht +caco/shotx dsfirxpl + +// Baron of Hell + +baron/sight dsbrssit +baron/active dsdmact +baron/pain dsdmpain +baron/melee dsclaw +baron/death dsbrsdth +baron/attack dsfirsht +baron/shotx dsfirxpl + +// Hell Knight + +knight/sight dskntsit +knight/active dsdmact +knight/pain dsdmpain +knight/death dskntdth + +// Lost Soul + +skull/active dsdmact +skull/pain dsdmpain +skull/melee dssklatk +skull/death dsfirxpl + +// Spider Mastermind + +spider/sight dsspisit +spider/active dsdmact +spider/pain dsdmpain +spider/attack dsshotgn +spider/death dsspidth +spider/walk dsmetal + +// Arachnotron + +baby/sight dsbspsit +baby/active dsbspact +baby/pain dsdmpain +baby/death dsbspdth +baby/walk dsbspwlk +baby/attack dsplasma +baby/shotx dsfirxpl + +$limit baby/attack 0 + +// Cyber Demon + +cyber/sight dscybsit +cyber/active dsdmact +cyber/pain dsdmpain +cyber/death dscybdth +cyber/hoof dshoof + +// Pain Elemental + +pain/sight dspesit +pain/active dsdmact +pain/pain dspepain +pain/death dspedth + +// Wolfenstein SS + +wolfss/sight dssssit +wolfss/active dsposact +wolfss/pain dspopain +wolfss/death dsssdth +wolfss/attack dsshotgn + +// Commander Keen + +keen/pain dskeenpn +keen/death dskeendt + +// Boss Brain + +brain/sight dsbossit +brain/pain dsbospn +brain/death dsbosdth +brain/spit dsbospit +brain/cube dsboscub +brain/cubeboom dsfirxpl +$alias brain/spawn misc/teleport + + +//============================================================================ +// +// WORLD SOUNDS +// +//=========================================================================== + +world/barrelx dsbarexp + +world/drip dsempty +world/watersplash dsempty +world/sludgegloop dsempty +world/lavasizzle dsempty + +// +// +// Platform Sounds +// + +plats/pt1_strt dspstart +plats/pt1_stop dspstop +plats/pt1_mid dsstnmov + +// +// Door Sounds +// + +doors/dr1_open dsdoropn +doors/dr1_clos dsdorcls +doors/dr2_open dsbdopn +doors/dr2_clos dsbdcls + +//=========================================================================== +// +// MISCELLANEOUS SOUNDS +// +//=========================================================================== + +misc/secret dssecret +misc/w_pkup dswpnup // Pickup weapon +misc/p_pkup dsgetpow // Pickup powerup +misc/i_pkup dsitemup // Pickup item +misc/k_pkup dsitemup // Pickup key +misc/spawn dsitmbk // Item respawn +misc/chat dsradio // Doom 2 chat sound +misc/chat2 dstink // Chat sound for everything else + +$limit misc/i_pkup 1 +$limit misc/k_pkup 1 +$limit misc/w_pkup 1 +$limit misc/p_pkup 1 +$pitchshift misc/i_pkup 0 +$pitchshift misc/k_pkup 0 +$pitchshift misc/chat2 0 + +switches/normbutn dsswtchn +switches/exitbutn dsswtchx + +misc/teleport dstelept + +menu/activate dsswtchn // Activate a new menu +menu/backup dsswtchn // Backup to previous menu +menu/prompt dsswtchn // Activate a prompt "menu" +menu/cursor dspstop // Move cursor up/down +menu/change dsstnmov // Select new value for option +menu/invalid dsoof // Menu not available +menu/dismiss dsswtchx // Dismiss a prompt message +menu/choose dspistol // Choose a menu item +menu/clear dsswtchx // Close top menu + +$random menu/quit1 { player/male/death1 demon/pain grunt/pain misc/gibbed misc/teleport grunt/sight1 grunt/sight3 demon/melee } +$random menu/quit2 { vile/active misc/p_pkup brain/cube misc/gibbed skeleton/swing knight/death baby/active demon/melee } + +$alias intermission/tick weapons/pistol +$alias intermission/cooptotal *death +$alias intermission/nextstage weapons/rocklx +$alias intermission/paststats weapons/shotgr +$alias intermission/pastcoopstats weapons/shotgr +$alias intermission/pastdmstats *gibbed diff --git a/wadsrc/static/filter/heretic/sndinfo.txt b/wadsrc/static/filter/heretic/sndinfo.txt new file mode 100644 index 000000000..cb3fe1e73 --- /dev/null +++ b/wadsrc/static/filter/heretic/sndinfo.txt @@ -0,0 +1,291 @@ +/****************************************************************************/ +/* */ +/* HERETIC SOUNDS */ +/* */ +/****************************************************************************/ + +$rolloff * custom 0 1600 + +$pitchshiftrange 2 + +$playersound player male *wimpydeath plrwdth +$playersound player male *death plrdth +$playersound player male *crazydeath plrcdth +$playersound player male *gibbed gibdth +$playersound player male *pain100 plrpai +$playersounddup player male *pain75 *pain100 +$playersounddup player male *pain50 *pain100 +$playersounddup player male *pain25 *pain100 +$playersound player male *weaponlaugh wpnup +$playersounddup player male *evillaugh *weaponlaugh +$playersound player male *grunt plroof +$playersounddup player male *usefail *grunt +$playersounddup player male *land *grunt +$playersound player male *jump plrjmp +$playersound player male *burndeath hedat1 + +$playeralias chicken male *usefail chicken/peck +$PlayerAlias Chicken Male *Grunt chicken/pain +$PlayerAlias Chicken Male *Land chicken/pain +$PlayerAlias Chicken Male *Jump chicken/active +$PlayerAlias Chicken Male *EvilLaugh chicken/active + +chicken/sight chicpai +chicken/pain chicpai +chicken/death chicdth +chicken/attack chicatk + +misc/burn hedat1 + +weapons/staffhit stfhit +weapons/staffpowerhit stfpow +weapons/staffcrackle stfcrk +weapons/wandhit gldhit +weapons/bowshoot bowsht +weapons/bowhit hrnhit +weapons/gauntletsactivate gntact +weapons/gauntletsuse gntuse +weapons/gauntletson gntful +weapons/gauntletshit gnthit +weapons/gauntletspowhit gntpow +weapons/maceshoot lobsht +weapons/macebounce bounce +weapons/macehit lobhit +weapons/macestop pstop +weapons/maceexplode phohit +weapons/blasterhit blshit +weapons/blasterpowhit hrnhit +weapons/blastershoot blssht +weapons/hornrodshoot hrnsht +weapons/hornrodhit hrnhit +weapons/hornrodpowshoot hrnpow +weapons/hornrodpowhit ramphit +weapons/phoenixshoot phosht +weapons/phoenixhit phohit +weapons/phoenixpowshoot phopow + +$limit weapons/gauntletson 0 +$limit weapons/gauntletshit 0 +$limit weapons/gauntletspowhit 0 +$limit weapons/gauntletsactivate 0 +$limit weapons/gauntletsuse 0 +$limit weapons/maceexplode 0 +$limit weapons/phoenixhit 0 +$limit weapons/phoenixpowshoot 1 + +// [RH] Heretic didn't have these limitless, but they can sound bad if they're not +$limit weapons/bowhit 0 +$limit weapons/hornrodshoot 0 +$limit weapons/hornrodhit 0 +$limit weapons/maceshoot 0 + +himp/sight impsit +himp/attack impat1 +himp/pain imppai +himp/death impdth +himp/active impsit +himp/leaderattack impat2 + +misc/invuse artiuse + +$limit misc/invuse 1 + +world/podexplode podexp +world/podgrow newpod +world/wind wind +world/waterfall waterfl + +$limit world/podexplode 0 +$limit world/podgrow 0 +$limit world/wind 1 + +misc/i_pkup itemup +misc/k_pkup keyup +misc/p_pkup artiup +$alias misc/w_pkup *weaponlaugh + +misc/rain ramrain +misc/spawn respawn + +$limit misc/spawn 1 + +// +// Minotaur sounds +// + +minotaur/sight minsit +minotaur/melee stfpow +minotaur/attack1 minat1 +minotaur/attack2 minat2 +minotaur/attack3 minat3 +minotaur/pain minpai +minotaur/death mindth +minotaur/active minact +minotaur/fx2hit phohit +minotaur/fx3hit phohit + +// +// Wizard sounds +// + +wizard/sight wizsit +wizard/attack wizatk +wizard/death wizdth +wizard/pain wizpai +wizard/active1 wizact +$random wizard/active { wizard/sight wizard/active1 } + +// +// Switch sounds +// + +switches/normbutn switch +$alias switches/exitbutn switches/normbutn // Heretic has no special exit button sound + +// +// +// Platform Sounds +// + +plats/pt1_strt pstart +plats/pt1_stop pstop +plats/pt1_mid dormov + +// +// Door Sounds +// + +doors/dr1_open doropn +doors/dr1_clos dorcls +doors/dr2_open doropn +doors/dr2_clos dorcls + +// +// Ambient sounds +// + +world/amb1 amb1 +world/amb2 amb2 +world/amb3 amb3 +world/amb4 amb4 +world/amb5 amb5 +world/amb6 amb6 +world/amb7 amb7 +world/amb8 amb8 +world/amb9 amb9 +world/amb10 amb10 +world/amb11 amb11 +world/amb12 bstsit + +$limit world/amb1 1 +$limit world/amb2 1 +$limit world/amb3 1 +$limit world/amb4 1 +$limit world/amb5 1 +$limit world/amb6 1 +$limit world/amb7 1 +$limit world/amb8 1 +$limit world/amb9 1 +$limit world/amb10 1 +$limit world/amb11 0 + +misc/chat chat +misc/teleport telept +misc/ripslop ripslop + +$limit misc/chat 1 + +world/drip gloop +world/watersplash gloop +world/lavasizzle burn +world/sludgegloop dsempty + +mummy/sight mumsit +mummy/attack1 mumat1 +mummy/attack2 mumat2 +mummy/pain mumpai +mummy/death mumdth +mummy/active mumsit +mummy/head mumhed + +beast/sight bstsit +beast/attack bstatk +beast/pain bstpai +beast/death bstdth +beast/active bstact + +snake/attack snkatk +snake/sight snksit +snake/pain snkpai +snake/death snkdth +snake/active snkact + +clink/sight clksit +clink/attack clkatk +clink/pain clkpai +clink/death clkdth +clink/active clkact + +hknight/sight kgtsit +hknight/attack kgtatk +hknight/melee kgtat2 +hknight/pain kgtpai +hknight/death kgtdth +hknight/active kgtsit +hknight/hit hrnhit +hknight/axewhoosh kgtatk + +misc/timebomb phohit +world/volcano/blast lobhit +world/volcano/shoot bstatk + +ironlich/sight hedsit +ironlich/attack1 hedat1 +ironlich/attack2 hedat2 +ironlich/attack3 hedat3 +ironlich/pain hedpai +ironlich/death heddth +ironlich/active hedact + +dsparilserpent/sight bstsit +dsparilserpent/attack bstatk +dsparilserpent/pain sbtpai +dsparilserpent/death sbtdth +dsparilserpent/active sbtact + +dsparil/sight sorsit +dsparil/attack soratk +dsparil/pain sorpai +dsparil/active soract +dsparil/rise sorrise +dsparil/zap sorzap +dsparil/scream sordsph +dsparil/explode sordexp +dsparil/bones sordbon + +chicken/active chicact +chicken/attack chicatk +chicken/pain chicpai +chicken/death chicdth +chicken/peck1 chicpk1 +chicken/peck2 chicpk2 +chicken/peck3 chicpk3 +$random chicken/peck { chicken/peck1 chicken/peck2 chicken/peck3 } + +menu/activate dorcls +menu/backup switch +menu/prompt chat +menu/choose dorcls +menu/cursor switch +menu/change keyup +menu/invalid plroof +menu/dismiss dorcls +menu/clear dorcls + +misc/secret dssecret + +$alias intermission/cooptotal *death +$alias intermission/nextstage doors/dr1_clos +$alias intermission/paststats plats/pt1_stop +$alias intermission/pastcoopstats plats/pt1_stop +$alias intermission/pastdmstats *gibbed diff --git a/wadsrc/static/filter/hexen/sndinfo.txt b/wadsrc/static/filter/hexen/sndinfo.txt new file mode 100644 index 000000000..85d7a75dd --- /dev/null +++ b/wadsrc/static/filter/hexen/sndinfo.txt @@ -0,0 +1,190 @@ +/****************************************************************************/ +/* */ +/* HEXEN SOUNDS */ +/* */ +/****************************************************************************/ + +$rolloff * custom 0 2025 + +$pitchshiftrange 3 + +$random PlayerFighterExtremeDeathPicker { PlayerFighterExtreme1Death + PlayerFighterExtreme2Death + PlayerFighterExtreme3Death } + +$playeralias fighter male *death PlayerFighterNormalDeath +$playeralias fighter male *crazydeath PlayerFighterCrazyDeath +$playeralias fighter male *burndeath PlayerFighterBurnDeath +$playeralias fighter male *xdeath PlayerFighterExtremeDeathPicker +$playeralias fighter male *pain100 PlayerFighterPain +$playersounddup fighter male *pain75 *pain100 +$playersounddup fighter male *pain50 *pain100 +$playersounddup fighter male *pain25 *pain100 +$playeralias fighter male *grunt PlayerFighterGrunt +$playeralias fighter male *land PlayerLand +$playeralias fighter male *poison PlayerPoisonCough +$playeralias fighter male *falling PlayerFighterFallingScream +$playeralias fighter male *splat PlayerFallingSplat +$playeralias fighter male *usefail PlayerFighterFailedUse +$playeralias fighter male *puzzfail PuzzleFailFighter +$playersound fighter male *jump fgtjump +$playeralias fighter male *fistgrunt FighterGrunt + +$random PlayerClericExtremeDeathPicker { PlayerClericExtreme1Death + PlayerClericExtreme2Death + PlayerClericExtreme3Death } + +$playeralias cleric male *death PlayerClericNormalDeath +$playeralias cleric male *crazydeath PlayerClericCrazyDeath +$playeralias cleric male *burndeath PlayerClericBurnDeath +$playeralias cleric male *xdeath PlayerClericExtremeDeathPicker +$playeralias cleric male *pain100 PlayerClericPain +$playersounddup cleric male *pain75 *pain100 +$playersounddup cleric male *pain50 *pain100 +$playersounddup cleric male *pain25 *pain100 +$playeralias cleric male *grunt PlayerClericGrunt +$playeralias cleric male *land PlayerLand +$playeralias cleric male *poison PlayerPoisonCough +$playeralias cleric male *falling PlayerClericFallingScream +$playeralias cleric male *splat PlayerFallingSplat +$playeralias cleric male *usefail PlayerClericFailedUse +$playeralias cleric male *puzzfail PuzzleFailCleric +$playersound cleric male *jump plrjump + +$random PlayerMageExtremeDeathPicker { PlayerMageExtreme1Death + PlayerMageExtreme2Death + PlayerMageExtreme3Death } + +$playeralias mage male *death PlayerMageNormalDeath +$playeralias mage male *crazydeath PlayerMageCrazyDeath +$playeralias mage male *burndeath PlayerMageBurnDeath +$playeralias mage male *xdeath PlayerMageExtremeDeathPicker +$playeralias mage male *pain100 PlayerMagePain +$playersounddup mage male *pain75 *pain100 +$playersounddup mage male *pain50 *pain100 +$playersounddup mage male *pain25 *pain100 +$playeralias mage male *grunt PlayerMageGrunt +$playeralias mage male *land PlayerLand +$playeralias mage male *poison PlayerPoisonCough +$playeralias mage male *falling PlayerMageFallingScream +$playeralias mage male *splat PlayerFallingSplat +$playeralias mage male *usefail PlayerMageFailedUse +$playeralias mage male *puzzfail PuzzleFailMage +$playersound mage male *jump mgjump + +$playeralias pig male *usefail PigActive1 +$playeralias pig male *puzzfail PigActive2 +$playeralias pig male *grunt PigActive1 +$playeralias pig male *land PigActive2 +$playeralias pig male *jump PigActive1 +$playeralias pig male *poison PigActive2 +$playeralias pig male *falling PigPain +$playeralias pig male *splat PigDeath + +$alias world/drip Ambient10 +$alias world/watersplash WaterSplash +$alias world/lavasizzle LavaSizzle +$alias world/sludgegloop SludgeGloop +$alias world/wind Wind +$alias world/quake Earthquake +$alias world/thunder ThunderCrash + +$alias misc/w_pkup PickupWeapon +$alias misc/p_pkup PickupArtifact +$alias misc/k_pkup PickupKey +$alias misc/i_pkup PickupItem +$alias misc/spawn Respawn +$alias misc/teleport Teleport +$alias misc/keytry DoorLocked +$alias misc/invuse UseArtifact +$alias misc/freeze FreezeDeath +$alias misc/icebreak FreezeShatter + +$alias misc/chat Chat +$alias misc/chat2 Chat + +$alias misc/fallingsplat PlayerFallingSplat + +$alias minotaur/sight MaulatorSight +$alias minotaur/pain MaulatorPain +$alias minotaur/death MaulatorDeath +$alias minotaur/active MaulatorActive +$alias minotaur/attack1 MaulatorHamHit +$alias minotaur/attack2 MaulatorHamSwing + +$random BishopActiveSounds { BishopActive BishopSight } +$random PigActive { PigActive1 PigActive2 } + +$limit PlayerFighterFailedUse 1 +$limit PlayerClericFailedUse 1 +$limit PlayerMageFailedUse 1 +$limit SorcererBallWoosh 4 +$limit SorcererBallBounce 3 +$limit SorcererBallExplode 3 +$limit SorcererBallPop 3 +$limit SorcererBigBallExplode 3 +$limit Ambient1 1 +$limit Ambient2 1 +$limit Ambient3 1 +$limit Ambient4 1 +$limit Ambient5 1 +$limit Ambient6 1 +$limit Ambient7 1 +$limit Ambient8 1 +$limit Ambient9 1 +$limit Ambient10 1 +$limit Ambient11 1 +$limit Ambient12 1 +$limit Ambient13 1 +$limit Ambient14 1 +$limit Ambient15 1 +$limit MysticIncant 4 + +$pitchshift PlayerMageNormalDeath 0 +$pitchshift PlayerMageCrazyDeath 0 +$pitchshift PlayerMageExtreme1Death 0 +$pitchshift PlayerMageExtreme2Death 0 +$pitchshift PlayerMageExtreme3Death 0 +$pitchshift PlayerMageBurnDeath 0 +$pitchshift PlayerMagePain 0 +$pitchshift PlayerMageGrunt 0 +$pitchshift PlayerMageFallingScream 0 +$pitchshift PlayerMageFailedUse 0 +$pitchshift PickupWeapon 0 +$pitchshift PickupPiece 0 +$pitchshift WeaponBuild 0 +$pitchshift BellRing 0 + +$alias menu/activate DoorCloseLight +$alias menu/backup PickupKey +$alias menu/prompt Chat +$alias menu/cursor FighterHammerHitWall +$alias menu/change PickupKey +$alias menu/invalid DoorCloseMetal // Hexen does not use this, but I do +$alias menu/dismiss PlatformStop +$alias menu/choose DoorCloseLight +$alias menu/clear PlatformStop + +// Hexen does not have ripslop sound like Heretic +misc/ripslop dsempty +misc/netnotch blddrp1 + +$alias intermission/cooptotal *death +$alias intermission/nextstage DoorCloseLight +$alias intermission/paststats PlatformStop +$alias intermission/pastcoopstats PlatformStop +$alias intermission/pastdmstats *gibbed + +$limit DoorCloseLight 4 + +$limit PuppyBeat 0 +$limit CeantaurPain 0 +$limit BishopPain 0 +$limit SerpentPain 0 +$limit DemonPain 0 +$limit WraithPain 0 +$limit MaulatorPain 0 +$limit EttinPain 0 +$limit FireDemonPain 0 +$limit SorcererPain 0 +$limit DragonPain 0 diff --git a/wadsrc/static/filter/strife/sndinfo.txt b/wadsrc/static/filter/strife/sndinfo.txt new file mode 100644 index 000000000..877bba50a --- /dev/null +++ b/wadsrc/static/filter/strife/sndinfo.txt @@ -0,0 +1,314 @@ +/****************************************************************************/ +/* */ +/* STRIFE SOUNDS */ +/* */ +/****************************************************************************/ + +$rolloff * 200 1200 + +$playersound player male *death dspldeth +$playersound player male *xdeath dspdiehi +$playersound player male *gibbed dsslop +$playersound player male *pain100 dsplpain +$playersounddup player male *pain75 *pain100 +$playersounddup player male *pain50 *pain100 +$playersounddup player male *pain25 *pain100 +$playersound player male *grunt dsoof +$playersounddup player male *land *grunt +$playersound player male *jump dsjump +$playersound player male *fist dspunch +$playersound player male *usefail dsnoway + +$playersound player female *death dsfldeth +$playersound player female *xdeath dsfdiehi +$playersound player female *gibbed dsslop +$playersound player female *pain100 dsflpain +$playersounddup player female *pain75 *pain100 +$playersounddup player female *pain50 *pain100 +$playersounddup player female *pain25 *pain100 +$playersound player female *grunt dsfoof +$playersounddup player female *land *grunt +$playersound player female *jump dsfjump +$playersound player female *fist dspunch +$playersound player female *usefail dsfnoway + +$playersound player other *death dscldeth +$playersound player other *xdeath dscdiehi +$playersound player other *gibbed dsslop +$playersound player other *pain100 dsclpain +$playersounddup player other *pain75 *pain100 +$playersounddup player other *pain50 *pain100 +$playersounddup player other *pain25 *pain100 +$playersound player other *grunt dscoof +$playersounddup player other *land *grunt +$playersound player other *jump dscjump +$playersound player other *fist dspunch +$playersound player other *usefail dscnoway + +weapons/xbowshoot dsxbow +weapons/xbowhit dsfirxpl +weapons/assaultgun dsrifle +weapons/minimissile dsrlaunc +weapons/minimissilehit dsmislht +weapons/flamethrower dsflburn +weapons/flameidle dsflidl +weapons/mauler1 dspgrdat +weapons/mauler2charge dsproton +weapons/mauler2fire dsprotfl +weapons/mauler2hit dsexplod +weapons/hegrenadeshoot dsphoot +weapons/hegrenadebang dsexplod +weapons/phgrenadeshoot dsphoot +weapons/phgrenadebang dsexplod +weapons/sigil dssigil +weapons/sigilhit dssglhit +weapons/sigilcharge dssiglup + +monsters/rifle dsrifle + +switches/normbutn dsswtchn +$alias switches/exitbutn switches/normbutn +switches/chain dspulchn +switches/knob dsswknob +switches/keycard dskeycrd +switches/stone dsswston +switches/bolt dsswbolt +switches/boltback dsempty +switches/scanner dsswscan +switches/fool dsdifool +switches/valve dsvalve +switches/sizzle dsfirxpl + +world/glassbreak dsbglass +world/barrelx dsbarexp +world/smallfire dssmfire +world/largefire dslgfire +world/river dswriver +world/waterfall dswfall +world/waterdrip dswdrip +world/watersplash dswsplsh + +$limit world/river 1 +$limit world/waterfall 1 +$limit world/waterdrip 1 + +world/drip dsempty // These four satisfy the Heretic/Hexen terrain definitions +world/sludgegloop dsempty +world/lavasizzle dsempty +world/lavasizzle dsempty + +menu/activate dsswtchn // Activate a new menu +menu/backup dsswtchn // Backup to previous menu +menu/prompt dsswtchn // Activate a prompt "menu" +menu/cursor dspstop // Move cursor up/down +menu/change dsstnmov // Select new value for option +menu/invalid dsoof // Menu not available +menu/dismiss dsswish // Dismiss a prompt message +menu/choose dsrifl // Choose a menu item +menu/clear dsmtalht // Close top menu + +misc/startupdone dspsdtha +misc/teleport dstelept +misc/swish dsswish +misc/meathit dsmeatht +misc/metalhit dsmtalht +misc/pcrush dspcrush +misc/gibbed dsslop +misc/explosion dsexplod +misc/reactor dsreactr +misc/missileinflight dsrflite +misc/static dsstatic +misc/chant dschant +misc/alarm dsalarm +misc/disruptordeath dsdsrptr +$singular misc/alarm + +misc/secret dsyeah +misc/w_pkup dswpnup +misc/p_pkup dsyeah +misc/i_pkup dsitemup +misc/k_pkup dsitemup +misc/spawn dsitmbk +misc/chat dsradio +misc/invuse dsitemup +misc/mask dsmask + +plats/pt1_strt dspstart +plats/pt1_stop dspstop +plats/pt1_mid dsstnmov + +doors/dr2_open dsbdopn +doors/dr2_clos dsbdcls + +doors/stone_open dsdrston +doors/stone_close dsdrston + +doors/large_metal_open dsdrlmto +doors/large_metal_close dsdrlmtc + +doors/small_metal_open dsdrsmto +doors/small_metal_close dsdrsmtc + +doors/large_wood_open dsdrlwud +doors/large_wood_close dsdrlwud + +doors/small_wood_open dsdrswud +doors/small_wood_close dsdrswud + +doors/airlock_open dsairlck +doors/airlock_close dsairlck + +doors/chain_open dsdrchno +doors/chain_close dsdrchnc + +woodenbarrel/death dswbrldt + +human/imonfire dsburnme + +ambient/alien1 dsamaln1 +ambient/alien2 dsamaln2 +ambient/alien3 dsamaln3 +ambient/alien4 dsamaln4 +ambient/alien5 dsamaln5 +ambient/alien6 dsamaln6 + +reaver/sight dsrevsee +reaver/pain dsreavpn +reaver/death dsrevdth +reaver/active dsrevact +reaver/attack dsreavat +reaver/blade dsrevbld + +crusader/sight dsrb2see +crusader/pain dsrb2pn +crusader/death dsrb2dth +crusader/active dsrb2act +crusader/misl dsrlaunc +crusader/mislx dsmislht + +bishop/sight dsrb2see +bishop/pain dsrb2pn +bishop/death dspgrdth +bishop/active dsrb2act +bishop/misl dsrlaunc +bishop/mislx dsmislht + +sentinel/sight dssntsee +sentinel/death dssntdth +sentinel/active dssntact +sentinel/plasma dsplasma + +$random peasant/pain { peasant/pain1 peasant/pain2 peasant/pain3 peasant/pain4 } +peasant/pain1 dspespna +peasant/pain2 dspespnb +peasant/pain3 dspespnc +peasant/pain4 dspespnd + +//$random peasant/death { peasant/death1 peasant/death2 peasant/death3 } +$alias peasant/death peasant/death1 +peasant/death1 dspsdtha +peasant/death2 dspsdthb +peasant/death3 dspsdthc + +peasant/sight dsrebact +peasant/attack dsmeatht +peasant/active dsrebact + +beggar/attack dsmeatht +$alias beggar/pain peasant/pain +$alias beggar/death peasant/death + +rebel/sight dswpnup +$alias rebel/pain peasant/pain +rebel/death dsrebdth +rebel/active dsrebact + +barkeep/pain dsambbar +barkeep/active dsambppl +$singular barkeep/pain +$singular barkeep/active + +$alias smith/pain peasant/pain +$alias armorer/pain peasant/pain +$alias medic/pain peasant/pain +$alias zombie/death peasant/death +$alias becoming/death peasant/death +zombie/spawner dstelept + +acolyte/sight dsagrsee +acolyte/pain dsagrdpn +acolyte/death dsagrdth +acolyte/rifle dsrifle +$random acolyte/active { acolyte/active1 acolyte/active2 acolyte/active3 acolyte/active4 } +acolyte/active1 dsagrac1 +acolyte/active2 dsagrac2 +acolyte/active3 dsagrac3 +acolyte/active4 dsagrac4 + +macil/sight dsagrsee +$alias macil/pain peasant/pain +macil/active dsrebact +macil/slop dsslop + +alienspectre/sight dsalnsee +alienspectre/blade dsrevbld +alienspectre/pain dsalnpn +alienspectre/death dsalndth +alienspectre/active dsalnact + +turret/death dsmislht + +ore/explode dsexplod + +rat/sight dsratact +rat/death dsratact +rat/active dsratact +$singular rat/sight + +loremaster/chain dschain +loremaster/swish dsswish +loremaster/sight dslorsee +loremaster/attack dsrevbld +loremaster/pain dslorpn +loremaster/death dsslop +loremaster/active dstend + +stalker/sight dsspisit +stalker/attack dsspdatk +stalker/pain dsspdatk +stalker/death dsspidth +stalker/active dsspisit +stalker/walk dsspdwlk + +templar/sight dspgrsee +templar/pain dspgrdpn +templar/death dspgrdth +templar/active dspgract +templar/shoot dspgrdat + +inquisitor/sight dsinqsee +inquisitor/death dsinqdth +inquisitor/active dsinqact +inquisitor/walk dsinqact +inquisitor/jump dsinqjmp +inquisitor/attack dsphoot +inquisitor/atkexplode dsexplod + +programmer/clank dsmtalht +programmer/attack dsrevbld // Unused? +programmer/pain dsprgpn +programmer/death dsrb2dth +programmer/active dsprogac + +entity/sight dsmnalse +entity/melee dsrevbld +entity/pain dsalnpn +entity/death dsmnaldt +entity/active dsalnact + +$alias intermission/tick weapons/assaultgun +$alias intermission/cooptotal *death +$alias intermission/nextstage misc/explosion +$alias intermission/paststats world/barrelx +$alias intermission/pastcoopstats world/barrelx +$alias intermission/pastdmstats *gibbed diff --git a/wadsrc/static/sndinfo.txt b/wadsrc/static/sndinfo.txt index be2ecd987..562681043 100644 --- a/wadsrc/static/sndinfo.txt +++ b/wadsrc/static/sndinfo.txt @@ -56,1274 +56,3 @@ dog/attack dsdgatk dog/death dsdgdth dog/pain dsdgpain dog/sight dsdgsit - -/****************************************************************************/ -/* */ -/* DOOM SOUNDS */ -/* */ -/****************************************************************************/ - -$ifdoom - - -// BOOM has pitch shifting equivalent to a range of 4. I never got to hear -// Doom when it used pitch shifting, so I don't know if this is correct or not. -$pitchshiftrange 4 - -// This sound is never actually used. It's just defined here for -// compatibility with DeHackEd patches that reference dsskldth. -misc/unused dsskldth // Sounds just like dsoof - -//=========================================================================== -// -// Doom-specific player sounds -// -//=========================================================================== - -$playersound player male *death dspldeth -$playersound player male *xdeath dspdiehi -$playersound player male *gibbed dsslop -$playersound player male *pain100 dsplpain -$playersounddup player male *pain75 *pain100 -$playersounddup player male *pain50 *pain100 -$playersounddup player male *pain25 *pain100 -$playersound player male *grunt dsoof -$playersounddup player male *land *grunt -$playersound player male *jump dsjump -$playersound player male *fist dspunch -$playersound player male *usefail dsnoway - -$playersound player female *death dsfldeth -$playersound player female *xdeath dsfdiehi -$playersound player female *gibbed dsslop -$playersound player female *pain100 dsflpain -$playersounddup player female *pain75 *pain100 -$playersounddup player female *pain50 *pain100 -$playersounddup player female *pain25 *pain100 -$playersound player female *grunt dsfoof -$playersounddup player female *land *grunt -$playersound player female *jump dsfjump -$playersound player female *fist dspunch -$playersound player female *usefail dsfnoway - -$playersound player other *death dscldeth -$playersound player other *xdeath dscdiehi -$playersound player other *gibbed dsslop -$playersound player other *pain100 dsclpain -$playersounddup player other *pain75 *pain100 -$playersounddup player other *pain50 *pain100 -$playersounddup player other *pain25 *pain100 -$playersound player other *grunt dscoof -$playersounddup player other *land *grunt -$playersound player other *jump dscjump -$playersound player other *fist dspunch -$playersound player other *usefail dscnoway - -// Alternate names for some player sounds needed for ZDoom <= 1.22 compatibility -// -// If any sounds with these names are defined later, they will redefine -// the corresponding player sounds instead. Likewise, if they are played, -// they will play the corresponding player sound instead. - -$playercompat player male *death player/male/death1 -$playercompat player male *death player/male/death2 -$playercompat player male *death player/male/death3 -$playercompat player male *death player/male/death4 -$playercompat player male *xdeath player/male/xdeath1 -$playercompat player male *pain100 player/male/pain100_1 -$playercompat player male *pain100 player/male/pain100_2 -$playercompat player male *pain75 player/male/pain75_1 -$playercompat player male *pain75 player/male/pain75_2 -$playercompat player male *pain50 player/male/pain50_1 -$playercompat player male *pain50 player/male/pain50_2 -$playercompat player male *pain25 player/male/pain25_1 -$playercompat player male *pain25 player/male/pain25_2 -$playercompat player male *grunt player/male/grunt1 -$playercompat player male *land player/male/land1 -$playercompat player male *jump player/male/jump1 -$playercompat player male *gibbed player/male/gibbed -$playercompat player male *fist player/male/fist - -$playercompat player female *death player/female/death1 -$playercompat player female *death player/female/death2 -$playercompat player female *death player/female/death3 -$playercompat player female *death player/female/death4 -$playercompat player female *xdeath player/female/xdeath1 -$playercompat player female *pain100 player/female/pain100_1 -$playercompat player female *pain100 player/female/pain100_2 -$playercompat player female *pain75 player/female/pain75_1 -$playercompat player female *pain75 player/female/pain75_2 -$playercompat player female *pain50 player/female/pain50_1 -$playercompat player female *pain50 player/female/pain50_2 -$playercompat player female *pain25 player/female/pain25_1 -$playercompat player female *pain25 player/female/pain25_2 -$playercompat player female *grunt player/female/grunt1 -$playercompat player female *land player/female/land1 -$playercompat player female *jump player/female/jump1 -$playercompat player female *gibbed player/female/gibbed -$playercompat player female *fist player/female/fist - -$playercompat player other *death player/cyborg/death1 -$playercompat player other *death player/cyborg/death2 -$playercompat player other *death player/cyborg/death3 -$playercompat player other *death player/cyborg/death4 -$playercompat player other *xdeath player/cyborg/xdeath1 -$playercompat player other *pain100 player/cyborg/pain100_1 -$playercompat player other *pain100 player/cyborg/pain100_2 -$playercompat player other *pain75 player/cyborg/pain75_1 -$playercompat player other *pain75 player/cyborg/pain75_2 -$playercompat player other *pain50 player/cyborg/pain50_1 -$playercompat player other *pain50 player/cyborg/pain50_2 -$playercompat player other *pain25 player/cyborg/pain25_1 -$playercompat player other *pain25 player/cyborg/pain25_2 -$playercompat player other *grunt player/cyborg/grunt1 -$playercompat player other *land player/cyborg/land1 -$playercompat player other *jump player/cyborg/jump1 -$playercompat player other *gibbed player/cyborg/gibbed -$playercompat player other *fist player/cyborg/fist - -// -// Weapons -// - -$pitchshiftrange 3 -weapons/sawup dssawup -weapons/sawidle dssawidl -weapons/sawfull dssawful -weapons/sawhit dssawhit -$pitchshiftrange 4 - -weapons/pistol dspistol -weapons/shotgf dsshotgn -weapons/shotgr dssgcock -weapons/sshotf dsdshtgn -weapons/sshoto dsdbopn -weapons/sshotc dsdbcls -weapons/sshotl dsdbload -weapons/chngun dspistol -weapons/rocklx dsbarexp -weapons/rocklf dsrlaunc -weapons/plasmaf dsplasma -weapons/plasmax dsfirxpl -weapons/bfgf dsbfg -weapons/bfgx dsrxplod -weapons/railgf railgf1 -weapons/grbnce dsbounce -weapons/grenlx dsgrnexp -weapons/grenlf dsglaunc - -// Problem: weapons/rocklx needs to be unlimited but -// is also used for the MAP30 brain explosion. -// This alias remaps to the original but has its own limit -// attached so that it doesn't become too loud. -$alias misc/brainexplode weapons/rocklx -$limit misc/brainexplode 4 - -$limit weapons/plasmaf 0 -$limit weapons/chngun 0 -$limit weapons/rocklf 0 // because normal running is almost as fast as a rocket -$limit weapons/rocklx 0 // and the cyberdemon shoots 3 at once - -//=========================================================================== -// -// MONSTER SOUNDS -// -//=========================================================================== - -misc/gibbed dsslop - -// Zombie man - -$random grunt/sight { grunt/sight1 grunt/sight2 grunt/sight3 } -$random grunt/death { grunt/death1 grunt/death2 grunt/death3 } -grunt/sight1 dsposit1 -grunt/sight2 dsposit2 -grunt/sight3 dsposit3 -grunt/active dsposact -grunt/pain dspopain -grunt/death1 dspodth1 -grunt/death2 dspodth2 -grunt/death3 dspodth3 -grunt/attack dspistol - -// Shotgun guy - -$random shotguy/sight { shotguy/sight1 shotguy/sight2 shotguy/sight3 } -$random shotguy/death { shotguy/death1 shotguy/death2 shotguy/death3 } -shotguy/sight1 dsposit1 -shotguy/sight2 dsposit2 -shotguy/sight3 dsposit3 -shotguy/active dsposact -shotguy/pain dspopain -shotguy/death1 dspodth1 -shotguy/death2 dspodth2 -shotguy/death3 dspodth3 -shotguy/attack dsshotgn - -// Archvile - -vile/sight dsvilsit -vile/active dsvilact -vile/pain dsvipain -vile/death dsvildth -vile/raise dsslop -vile/start dsvilatk -vile/stop dsbarexp -vile/firestrt dsflamst -vile/firecrkl dsflame - -// Revenant - -skeleton/sight dsskesit -skeleton/active dsskeact -skeleton/pain dspopain -skeleton/melee dsskepch -skeleton/swing dsskeswg -skeleton/death dsskedth -skeleton/attack dsskeatk -skeleton/tracex dsbarexp - -// Fatso - -fatso/sight dsmansit -fatso/active dsposact -fatso/pain dsmnpain -fatso/raiseguns dsmanatk -fatso/death dsmandth -fatso/attack dsfirsht -fatso/shotx dsfirxpl - -// Chainguy - -$random chainguy/sight { chainguy/sight1 chainguy/sight2 chainguy/sight3 } -$random chainguy/death { chainguy/death1 chainguy/death2 chainguy/death3 } -chainguy/sight1 dsposit1 -chainguy/sight2 dsposit2 -chainguy/sight3 dsposit3 -chainguy/active dsposact -chainguy/pain dspopain -chainguy/death1 dspodth1 -chainguy/death2 dspodth2 -chainguy/death3 dspodth3 -chainguy/attack dsshotgn -$limit chainguy/attack 0 - -// Imp - -$random imp/sight { imp/sight1 imp/sight2 } -$random imp/death { imp/death1 imp/death2 } -imp/sight1 dsbgsit1 -imp/sight2 dsbgsit2 -imp/active dsbgact -imp/pain dspopain -imp/melee dsclaw -imp/death1 dsbgdth1 -imp/death2 dsbgdth2 -imp/attack dsfirsht -imp/shotx dsfirxpl -$limit imp/active 6 - -// Demon - -demon/sight dssgtsit -demon/active dsdmact -demon/pain dsdmpain -demon/melee dssgtatk -demon/death dssgtdth -$limit demon/melee 4 - -// Spectre - -spectre/sight dssgtsit -spectre/active dsdmact -spectre/pain dsdmpain -spectre/melee dssgtatk -spectre/death dssgtdth - -// Cacodemon - -caco/sight dscacsit -caco/active dsdmact -caco/pain dsdmpain -caco/death dscacdth -caco/attack dsfirsht -caco/shotx dsfirxpl - -// Baron of Hell - -baron/sight dsbrssit -baron/active dsdmact -baron/pain dsdmpain -baron/melee dsclaw -baron/death dsbrsdth -baron/attack dsfirsht -baron/shotx dsfirxpl - -// Hell Knight - -knight/sight dskntsit -knight/active dsdmact -knight/pain dsdmpain -knight/death dskntdth - -// Lost Soul - -skull/active dsdmact -skull/pain dsdmpain -skull/melee dssklatk -skull/death dsfirxpl - -// Spider Mastermind - -spider/sight dsspisit -spider/active dsdmact -spider/pain dsdmpain -spider/attack dsshotgn -spider/death dsspidth -spider/walk dsmetal - -// Arachnotron - -baby/sight dsbspsit -baby/active dsbspact -baby/pain dsdmpain -baby/death dsbspdth -baby/walk dsbspwlk -baby/attack dsplasma -baby/shotx dsfirxpl - -$limit baby/attack 0 - -// Cyber Demon - -cyber/sight dscybsit -cyber/active dsdmact -cyber/pain dsdmpain -cyber/death dscybdth -cyber/hoof dshoof - -// Pain Elemental - -pain/sight dspesit -pain/active dsdmact -pain/pain dspepain -pain/death dspedth - -// Wolfenstein SS - -wolfss/sight dssssit -wolfss/active dsposact -wolfss/pain dspopain -wolfss/death dsssdth -wolfss/attack dsshotgn - -// Commander Keen - -keen/pain dskeenpn -keen/death dskeendt - -// Boss Brain - -brain/sight dsbossit -brain/pain dsbospn -brain/death dsbosdth -brain/spit dsbospit -brain/cube dsboscub -brain/cubeboom dsfirxpl -$alias brain/spawn misc/teleport - - -//============================================================================ -// -// WORLD SOUNDS -// -//=========================================================================== - -world/barrelx dsbarexp - -world/drip dsempty -world/watersplash dsempty -world/sludgegloop dsempty -world/lavasizzle dsempty - -// -// -// Platform Sounds -// - -plats/pt1_strt dspstart -plats/pt1_stop dspstop -plats/pt1_mid dsstnmov - -// -// Door Sounds -// - -doors/dr1_open dsdoropn -doors/dr1_clos dsdorcls -doors/dr2_open dsbdopn -doors/dr2_clos dsbdcls - -//=========================================================================== -// -// MISCELLANEOUS SOUNDS -// -//=========================================================================== - -misc/secret dssecret -misc/w_pkup dswpnup // Pickup weapon -misc/p_pkup dsgetpow // Pickup powerup -misc/i_pkup dsitemup // Pickup item -misc/k_pkup dsitemup // Pickup key -misc/spawn dsitmbk // Item respawn -misc/chat dsradio // Doom 2 chat sound -misc/chat2 dstink // Chat sound for everything else - -$limit misc/i_pkup 1 -$limit misc/k_pkup 1 -$limit misc/w_pkup 1 -$limit misc/p_pkup 1 -$pitchshift misc/i_pkup 0 -$pitchshift misc/k_pkup 0 -$pitchshift misc/chat2 0 - -switches/normbutn dsswtchn -switches/exitbutn dsswtchx - -misc/teleport dstelept - -menu/activate dsswtchn // Activate a new menu -menu/backup dsswtchn // Backup to previous menu -menu/prompt dsswtchn // Activate a prompt "menu" -menu/cursor dspstop // Move cursor up/down -menu/change dsstnmov // Select new value for option -menu/invalid dsoof // Menu not available -menu/dismiss dsswtchx // Dismiss a prompt message -menu/choose dspistol // Choose a menu item -menu/clear dsswtchx // Close top menu - -$random menu/quit1 { player/male/death1 demon/pain grunt/pain misc/gibbed misc/teleport grunt/sight1 grunt/sight3 demon/melee } -$random menu/quit2 { vile/active misc/p_pkup brain/cube misc/gibbed skeleton/swing knight/death baby/active demon/melee } - -$alias intermission/tick weapons/pistol -$alias intermission/cooptotal *death -$alias intermission/nextstage weapons/rocklx -$alias intermission/paststats weapons/shotgr -$alias intermission/pastcoopstats weapons/shotgr -$alias intermission/pastdmstats *gibbed - - -$endif // ifdoom - - -/****************************************************************************/ -/* */ -/* HERETIC SOUNDS */ -/* */ -/****************************************************************************/ - -$ifheretic - -$rolloff * custom 0 1600 - -$pitchshiftrange 2 - -$playersound player male *wimpydeath plrwdth -$playersound player male *death plrdth -$playersound player male *crazydeath plrcdth -$playersound player male *gibbed gibdth -$playersound player male *pain100 plrpai -$playersounddup player male *pain75 *pain100 -$playersounddup player male *pain50 *pain100 -$playersounddup player male *pain25 *pain100 -$playersound player male *weaponlaugh wpnup -$playersounddup player male *evillaugh *weaponlaugh -$playersound player male *grunt plroof -$playersounddup player male *usefail *grunt -$playersounddup player male *land *grunt -$playersound player male *jump plrjmp -$playersound player male *burndeath hedat1 - -$playeralias chicken male *usefail chicken/peck -$PlayerAlias Chicken Male *Grunt chicken/pain -$PlayerAlias Chicken Male *Land chicken/pain -$PlayerAlias Chicken Male *Jump chicken/active -$PlayerAlias Chicken Male *EvilLaugh chicken/active - -chicken/sight chicpai -chicken/pain chicpai -chicken/death chicdth -chicken/attack chicatk - -misc/burn hedat1 - -weapons/staffhit stfhit -weapons/staffpowerhit stfpow -weapons/staffcrackle stfcrk -weapons/wandhit gldhit -weapons/bowshoot bowsht -weapons/bowhit hrnhit -weapons/gauntletsactivate gntact -weapons/gauntletsuse gntuse -weapons/gauntletson gntful -weapons/gauntletshit gnthit -weapons/gauntletspowhit gntpow -weapons/maceshoot lobsht -weapons/macebounce bounce -weapons/macehit lobhit -weapons/macestop pstop -weapons/maceexplode phohit -weapons/blasterhit blshit -weapons/blasterpowhit hrnhit -weapons/blastershoot blssht -weapons/hornrodshoot hrnsht -weapons/hornrodhit hrnhit -weapons/hornrodpowshoot hrnpow -weapons/hornrodpowhit ramphit -weapons/phoenixshoot phosht -weapons/phoenixhit phohit -weapons/phoenixpowshoot phopow - -$limit weapons/gauntletson 0 -$limit weapons/gauntletshit 0 -$limit weapons/gauntletspowhit 0 -$limit weapons/gauntletsactivate 0 -$limit weapons/gauntletsuse 0 -$limit weapons/maceexplode 0 -$limit weapons/phoenixhit 0 -$limit weapons/phoenixpowshoot 1 - -// [RH] Heretic didn't have these limitless, but they can sound bad if they're not -$limit weapons/bowhit 0 -$limit weapons/hornrodshoot 0 -$limit weapons/hornrodhit 0 -$limit weapons/maceshoot 0 - -himp/sight impsit -himp/attack impat1 -himp/pain imppai -himp/death impdth -himp/active impsit -himp/leaderattack impat2 - -misc/invuse artiuse - -$limit misc/invuse 1 - -world/podexplode podexp -world/podgrow newpod -world/wind wind -world/waterfall waterfl - -$limit world/podexplode 0 -$limit world/podgrow 0 -$limit world/wind 1 - -misc/i_pkup itemup -misc/k_pkup keyup -misc/p_pkup artiup -$alias misc/w_pkup *weaponlaugh - -misc/rain ramrain -misc/spawn respawn - -$limit misc/spawn 1 - -// -// Minotaur sounds -// - -minotaur/sight minsit -minotaur/melee stfpow -minotaur/attack1 minat1 -minotaur/attack2 minat2 -minotaur/attack3 minat3 -minotaur/pain minpai -minotaur/death mindth -minotaur/active minact -minotaur/fx2hit phohit -minotaur/fx3hit phohit - -// -// Wizard sounds -// - -wizard/sight wizsit -wizard/attack wizatk -wizard/death wizdth -wizard/pain wizpai -wizard/active1 wizact -$random wizard/active { wizard/sight wizard/active1 } - -// -// Switch sounds -// - -switches/normbutn switch -$alias switches/exitbutn switches/normbutn // Heretic has no special exit button sound - -// -// -// Platform Sounds -// - -plats/pt1_strt pstart -plats/pt1_stop pstop -plats/pt1_mid dormov - -// -// Door Sounds -// - -doors/dr1_open doropn -doors/dr1_clos dorcls -doors/dr2_open doropn -doors/dr2_clos dorcls - -// -// Ambient sounds -// - -world/amb1 amb1 -world/amb2 amb2 -world/amb3 amb3 -world/amb4 amb4 -world/amb5 amb5 -world/amb6 amb6 -world/amb7 amb7 -world/amb8 amb8 -world/amb9 amb9 -world/amb10 amb10 -world/amb11 amb11 -world/amb12 bstsit - -$limit world/amb1 1 -$limit world/amb2 1 -$limit world/amb3 1 -$limit world/amb4 1 -$limit world/amb5 1 -$limit world/amb6 1 -$limit world/amb7 1 -$limit world/amb8 1 -$limit world/amb9 1 -$limit world/amb10 1 -$limit world/amb11 0 - -misc/chat chat -misc/teleport telept -misc/ripslop ripslop - -$limit misc/chat 1 - -world/drip gloop -world/watersplash gloop -world/lavasizzle burn -world/sludgegloop dsempty - -mummy/sight mumsit -mummy/attack1 mumat1 -mummy/attack2 mumat2 -mummy/pain mumpai -mummy/death mumdth -mummy/active mumsit -mummy/head mumhed - -beast/sight bstsit -beast/attack bstatk -beast/pain bstpai -beast/death bstdth -beast/active bstact - -snake/attack snkatk -snake/sight snksit -snake/pain snkpai -snake/death snkdth -snake/active snkact - -clink/sight clksit -clink/attack clkatk -clink/pain clkpai -clink/death clkdth -clink/active clkact - -hknight/sight kgtsit -hknight/attack kgtatk -hknight/melee kgtat2 -hknight/pain kgtpai -hknight/death kgtdth -hknight/active kgtsit -hknight/hit hrnhit -hknight/axewhoosh kgtatk - -misc/timebomb phohit -world/volcano/blast lobhit -world/volcano/shoot bstatk - -ironlich/sight hedsit -ironlich/attack1 hedat1 -ironlich/attack2 hedat2 -ironlich/attack3 hedat3 -ironlich/pain hedpai -ironlich/death heddth -ironlich/active hedact - -dsparilserpent/sight bstsit -dsparilserpent/attack bstatk -dsparilserpent/pain sbtpai -dsparilserpent/death sbtdth -dsparilserpent/active sbtact - -dsparil/sight sorsit -dsparil/attack soratk -dsparil/pain sorpai -dsparil/active soract -dsparil/rise sorrise -dsparil/zap sorzap -dsparil/scream sordsph -dsparil/explode sordexp -dsparil/bones sordbon - -chicken/active chicact -chicken/attack chicatk -chicken/pain chicpai -chicken/death chicdth -chicken/peck1 chicpk1 -chicken/peck2 chicpk2 -chicken/peck3 chicpk3 -$random chicken/peck { chicken/peck1 chicken/peck2 chicken/peck3 } - -menu/activate dorcls -menu/backup switch -menu/prompt chat -menu/choose dorcls -menu/cursor switch -menu/change keyup -menu/invalid plroof -menu/dismiss dorcls -menu/clear dorcls - -misc/secret dssecret - -$alias intermission/cooptotal *death -$alias intermission/nextstage doors/dr1_clos -$alias intermission/paststats plats/pt1_stop -$alias intermission/pastcoopstats plats/pt1_stop -$alias intermission/pastdmstats *gibbed - - -$endif // ifheretic - - -/****************************************************************************/ -/* */ -/* HEXEN SOUNDS */ -/* */ -/****************************************************************************/ - -$ifhexen - -$rolloff * custom 0 2025 - -$pitchshiftrange 3 - -$random PlayerFighterExtremeDeathPicker { PlayerFighterExtreme1Death - PlayerFighterExtreme2Death - PlayerFighterExtreme3Death } - -$playeralias fighter male *death PlayerFighterNormalDeath -$playeralias fighter male *crazydeath PlayerFighterCrazyDeath -$playeralias fighter male *burndeath PlayerFighterBurnDeath -$playeralias fighter male *xdeath PlayerFighterExtremeDeathPicker -$playeralias fighter male *pain100 PlayerFighterPain -$playersounddup fighter male *pain75 *pain100 -$playersounddup fighter male *pain50 *pain100 -$playersounddup fighter male *pain25 *pain100 -$playeralias fighter male *grunt PlayerFighterGrunt -$playeralias fighter male *land PlayerLand -$playeralias fighter male *poison PlayerPoisonCough -$playeralias fighter male *falling PlayerFighterFallingScream -$playeralias fighter male *splat PlayerFallingSplat -$playeralias fighter male *usefail PlayerFighterFailedUse -$playeralias fighter male *puzzfail PuzzleFailFighter -$playersound fighter male *jump fgtjump -$playeralias fighter male *fistgrunt FighterGrunt - -$random PlayerClericExtremeDeathPicker { PlayerClericExtreme1Death - PlayerClericExtreme2Death - PlayerClericExtreme3Death } - -$playeralias cleric male *death PlayerClericNormalDeath -$playeralias cleric male *crazydeath PlayerClericCrazyDeath -$playeralias cleric male *burndeath PlayerClericBurnDeath -$playeralias cleric male *xdeath PlayerClericExtremeDeathPicker -$playeralias cleric male *pain100 PlayerClericPain -$playersounddup cleric male *pain75 *pain100 -$playersounddup cleric male *pain50 *pain100 -$playersounddup cleric male *pain25 *pain100 -$playeralias cleric male *grunt PlayerClericGrunt -$playeralias cleric male *land PlayerLand -$playeralias cleric male *poison PlayerPoisonCough -$playeralias cleric male *falling PlayerClericFallingScream -$playeralias cleric male *splat PlayerFallingSplat -$playeralias cleric male *usefail PlayerClericFailedUse -$playeralias cleric male *puzzfail PuzzleFailCleric -$playersound cleric male *jump plrjump - -$random PlayerMageExtremeDeathPicker { PlayerMageExtreme1Death - PlayerMageExtreme2Death - PlayerMageExtreme3Death } - -$playeralias mage male *death PlayerMageNormalDeath -$playeralias mage male *crazydeath PlayerMageCrazyDeath -$playeralias mage male *burndeath PlayerMageBurnDeath -$playeralias mage male *xdeath PlayerMageExtremeDeathPicker -$playeralias mage male *pain100 PlayerMagePain -$playersounddup mage male *pain75 *pain100 -$playersounddup mage male *pain50 *pain100 -$playersounddup mage male *pain25 *pain100 -$playeralias mage male *grunt PlayerMageGrunt -$playeralias mage male *land PlayerLand -$playeralias mage male *poison PlayerPoisonCough -$playeralias mage male *falling PlayerMageFallingScream -$playeralias mage male *splat PlayerFallingSplat -$playeralias mage male *usefail PlayerMageFailedUse -$playeralias mage male *puzzfail PuzzleFailMage -$playersound mage male *jump mgjump - -$playeralias pig male *usefail PigActive1 -$playeralias pig male *puzzfail PigActive2 -$playeralias pig male *grunt PigActive1 -$playeralias pig male *land PigActive2 -$playeralias pig male *jump PigActive1 -$playeralias pig male *poison PigActive2 -$playeralias pig male *falling PigPain -$playeralias pig male *splat PigDeath - -$alias world/drip Ambient10 -$alias world/watersplash WaterSplash -$alias world/lavasizzle LavaSizzle -$alias world/sludgegloop SludgeGloop -$alias world/wind Wind -$alias world/quake Earthquake -$alias world/thunder ThunderCrash - -$alias misc/w_pkup PickupWeapon -$alias misc/p_pkup PickupArtifact -$alias misc/k_pkup PickupKey -$alias misc/i_pkup PickupItem -$alias misc/spawn Respawn -$alias misc/teleport Teleport -$alias misc/keytry DoorLocked -$alias misc/invuse UseArtifact -$alias misc/freeze FreezeDeath -$alias misc/icebreak FreezeShatter - -$alias misc/chat Chat -$alias misc/chat2 Chat - -$alias misc/fallingsplat PlayerFallingSplat - -$alias minotaur/sight MaulatorSight -$alias minotaur/pain MaulatorPain -$alias minotaur/death MaulatorDeath -$alias minotaur/active MaulatorActive -$alias minotaur/attack1 MaulatorHamHit -$alias minotaur/attack2 MaulatorHamSwing - -$random BishopActiveSounds { BishopActive BishopSight } -$random PigActive { PigActive1 PigActive2 } - -$limit PlayerFighterFailedUse 1 -$limit PlayerClericFailedUse 1 -$limit PlayerMageFailedUse 1 -$limit SorcererBallWoosh 4 -$limit SorcererBallBounce 3 -$limit SorcererBallExplode 3 -$limit SorcererBallPop 3 -$limit SorcererBigBallExplode 3 -$limit Ambient1 1 -$limit Ambient2 1 -$limit Ambient3 1 -$limit Ambient4 1 -$limit Ambient5 1 -$limit Ambient6 1 -$limit Ambient7 1 -$limit Ambient8 1 -$limit Ambient9 1 -$limit Ambient10 1 -$limit Ambient11 1 -$limit Ambient12 1 -$limit Ambient13 1 -$limit Ambient14 1 -$limit Ambient15 1 -$limit MysticIncant 4 - -$pitchshift PlayerMageNormalDeath 0 -$pitchshift PlayerMageCrazyDeath 0 -$pitchshift PlayerMageExtreme1Death 0 -$pitchshift PlayerMageExtreme2Death 0 -$pitchshift PlayerMageExtreme3Death 0 -$pitchshift PlayerMageBurnDeath 0 -$pitchshift PlayerMagePain 0 -$pitchshift PlayerMageGrunt 0 -$pitchshift PlayerMageFallingScream 0 -$pitchshift PlayerMageFailedUse 0 -$pitchshift PickupWeapon 0 -$pitchshift PickupPiece 0 -$pitchshift WeaponBuild 0 -$pitchshift BellRing 0 - -$alias menu/activate DoorCloseLight -$alias menu/backup PickupKey -$alias menu/prompt Chat -$alias menu/cursor FighterHammerHitWall -$alias menu/change PickupKey -$alias menu/invalid DoorCloseMetal // Hexen does not use this, but I do -$alias menu/dismiss PlatformStop -$alias menu/choose DoorCloseLight -$alias menu/clear PlatformStop - -// Hexen does not have ripslop sound like Heretic -misc/ripslop dsempty -misc/netnotch blddrp1 - -$alias intermission/cooptotal *death -$alias intermission/nextstage DoorCloseLight -$alias intermission/paststats PlatformStop -$alias intermission/pastcoopstats PlatformStop -$alias intermission/pastdmstats *gibbed - -$limit DoorCloseLight 4 - -$limit PuppyBeat 0 -$limit CeantaurPain 0 -$limit BishopPain 0 -$limit SerpentPain 0 -$limit DemonPain 0 -$limit WraithPain 0 -$limit MaulatorPain 0 -$limit EttinPain 0 -$limit FireDemonPain 0 -$limit SorcererPain 0 -$limit DragonPain 0 - -$endif // ifhexen - -/****************************************************************************/ -/* */ -/* STRIFE SOUNDS */ -/* */ -/****************************************************************************/ - -$ifstrife - -$rolloff * 200 1200 - -$playersound player male *death dspldeth -$playersound player male *xdeath dspdiehi -$playersound player male *gibbed dsslop -$playersound player male *pain100 dsplpain -$playersounddup player male *pain75 *pain100 -$playersounddup player male *pain50 *pain100 -$playersounddup player male *pain25 *pain100 -$playersound player male *grunt dsoof -$playersounddup player male *land *grunt -$playersound player male *jump dsjump -$playersound player male *fist dspunch -$playersound player male *usefail dsnoway - -$playersound player female *death dsfldeth -$playersound player female *xdeath dsfdiehi -$playersound player female *gibbed dsslop -$playersound player female *pain100 dsflpain -$playersounddup player female *pain75 *pain100 -$playersounddup player female *pain50 *pain100 -$playersounddup player female *pain25 *pain100 -$playersound player female *grunt dsfoof -$playersounddup player female *land *grunt -$playersound player female *jump dsfjump -$playersound player female *fist dspunch -$playersound player female *usefail dsfnoway - -$playersound player other *death dscldeth -$playersound player other *xdeath dscdiehi -$playersound player other *gibbed dsslop -$playersound player other *pain100 dsclpain -$playersounddup player other *pain75 *pain100 -$playersounddup player other *pain50 *pain100 -$playersounddup player other *pain25 *pain100 -$playersound player other *grunt dscoof -$playersounddup player other *land *grunt -$playersound player other *jump dscjump -$playersound player other *fist dspunch -$playersound player other *usefail dscnoway - -weapons/xbowshoot dsxbow -weapons/xbowhit dsfirxpl -weapons/assaultgun dsrifle -weapons/minimissile dsrlaunc -weapons/minimissilehit dsmislht -weapons/flamethrower dsflburn -weapons/flameidle dsflidl -weapons/mauler1 dspgrdat -weapons/mauler2charge dsproton -weapons/mauler2fire dsprotfl -weapons/mauler2hit dsexplod -weapons/hegrenadeshoot dsphoot -weapons/hegrenadebang dsexplod -weapons/phgrenadeshoot dsphoot -weapons/phgrenadebang dsexplod -weapons/sigil dssigil -weapons/sigilhit dssglhit -weapons/sigilcharge dssiglup - -monsters/rifle dsrifle - -switches/normbutn dsswtchn -$alias switches/exitbutn switches/normbutn -switches/chain dspulchn -switches/knob dsswknob -switches/keycard dskeycrd -switches/stone dsswston -switches/bolt dsswbolt -switches/boltback dsempty -switches/scanner dsswscan -switches/fool dsdifool -switches/valve dsvalve -switches/sizzle dsfirxpl - -world/glassbreak dsbglass -world/barrelx dsbarexp -world/smallfire dssmfire -world/largefire dslgfire -world/river dswriver -world/waterfall dswfall -world/waterdrip dswdrip -world/watersplash dswsplsh - -$limit world/river 1 -$limit world/waterfall 1 -$limit world/waterdrip 1 - -world/drip dsempty // These four satisfy the Heretic/Hexen terrain definitions -world/sludgegloop dsempty -world/lavasizzle dsempty -world/lavasizzle dsempty - -menu/activate dsswtchn // Activate a new menu -menu/backup dsswtchn // Backup to previous menu -menu/prompt dsswtchn // Activate a prompt "menu" -menu/cursor dspstop // Move cursor up/down -menu/change dsstnmov // Select new value for option -menu/invalid dsoof // Menu not available -menu/dismiss dsswish // Dismiss a prompt message -menu/choose dsrifl // Choose a menu item -menu/clear dsmtalht // Close top menu - -misc/startupdone dspsdtha -misc/teleport dstelept -misc/swish dsswish -misc/meathit dsmeatht -misc/metalhit dsmtalht -misc/pcrush dspcrush -misc/gibbed dsslop -misc/explosion dsexplod -misc/reactor dsreactr -misc/missileinflight dsrflite -misc/static dsstatic -misc/chant dschant -misc/alarm dsalarm -misc/disruptordeath dsdsrptr -$singular misc/alarm - -misc/secret dsyeah -misc/w_pkup dswpnup -misc/p_pkup dsyeah -misc/i_pkup dsitemup -misc/k_pkup dsitemup -misc/spawn dsitmbk -misc/chat dsradio -misc/invuse dsitemup -misc/mask dsmask - -plats/pt1_strt dspstart -plats/pt1_stop dspstop -plats/pt1_mid dsstnmov - -doors/dr2_open dsbdopn -doors/dr2_clos dsbdcls - -doors/stone_open dsdrston -doors/stone_close dsdrston - -doors/large_metal_open dsdrlmto -doors/large_metal_close dsdrlmtc - -doors/small_metal_open dsdrsmto -doors/small_metal_close dsdrsmtc - -doors/large_wood_open dsdrlwud -doors/large_wood_close dsdrlwud - -doors/small_wood_open dsdrswud -doors/small_wood_close dsdrswud - -doors/airlock_open dsairlck -doors/airlock_close dsairlck - -doors/chain_open dsdrchno -doors/chain_close dsdrchnc - -woodenbarrel/death dswbrldt - -human/imonfire dsburnme - -ambient/alien1 dsamaln1 -ambient/alien2 dsamaln2 -ambient/alien3 dsamaln3 -ambient/alien4 dsamaln4 -ambient/alien5 dsamaln5 -ambient/alien6 dsamaln6 - -reaver/sight dsrevsee -reaver/pain dsreavpn -reaver/death dsrevdth -reaver/active dsrevact -reaver/attack dsreavat -reaver/blade dsrevbld - -crusader/sight dsrb2see -crusader/pain dsrb2pn -crusader/death dsrb2dth -crusader/active dsrb2act -crusader/misl dsrlaunc -crusader/mislx dsmislht - -bishop/sight dsrb2see -bishop/pain dsrb2pn -bishop/death dspgrdth -bishop/active dsrb2act -bishop/misl dsrlaunc -bishop/mislx dsmislht - -sentinel/sight dssntsee -sentinel/death dssntdth -sentinel/active dssntact -sentinel/plasma dsplasma - -$random peasant/pain { peasant/pain1 peasant/pain2 peasant/pain3 peasant/pain4 } -peasant/pain1 dspespna -peasant/pain2 dspespnb -peasant/pain3 dspespnc -peasant/pain4 dspespnd - -//$random peasant/death { peasant/death1 peasant/death2 peasant/death3 } -$alias peasant/death peasant/death1 -peasant/death1 dspsdtha -peasant/death2 dspsdthb -peasant/death3 dspsdthc - -peasant/sight dsrebact -peasant/attack dsmeatht -peasant/active dsrebact - -beggar/attack dsmeatht -$alias beggar/pain peasant/pain -$alias beggar/death peasant/death - -rebel/sight dswpnup -$alias rebel/pain peasant/pain -rebel/death dsrebdth -rebel/active dsrebact - -barkeep/pain dsambbar -barkeep/active dsambppl -$singular barkeep/pain -$singular barkeep/active - -$alias smith/pain peasant/pain -$alias armorer/pain peasant/pain -$alias medic/pain peasant/pain -$alias zombie/death peasant/death -$alias becoming/death peasant/death -zombie/spawner dstelept - -acolyte/sight dsagrsee -acolyte/pain dsagrdpn -acolyte/death dsagrdth -acolyte/rifle dsrifle -$random acolyte/active { acolyte/active1 acolyte/active2 acolyte/active3 acolyte/active4 } -acolyte/active1 dsagrac1 -acolyte/active2 dsagrac2 -acolyte/active3 dsagrac3 -acolyte/active4 dsagrac4 - -macil/sight dsagrsee -$alias macil/pain peasant/pain -macil/active dsrebact -macil/slop dsslop - -alienspectre/sight dsalnsee -alienspectre/blade dsrevbld -alienspectre/pain dsalnpn -alienspectre/death dsalndth -alienspectre/active dsalnact - -turret/death dsmislht - -ore/explode dsexplod - -rat/sight dsratact -rat/death dsratact -rat/active dsratact -$singular rat/sight - -loremaster/chain dschain -loremaster/swish dsswish -loremaster/sight dslorsee -loremaster/attack dsrevbld -loremaster/pain dslorpn -loremaster/death dsslop -loremaster/active dstend - -stalker/sight dsspisit -stalker/attack dsspdatk -stalker/pain dsspdatk -stalker/death dsspidth -stalker/active dsspisit -stalker/walk dsspdwlk - -templar/sight dspgrsee -templar/pain dspgrdpn -templar/death dspgrdth -templar/active dspgract -templar/shoot dspgrdat - -inquisitor/sight dsinqsee -inquisitor/death dsinqdth -inquisitor/active dsinqact -inquisitor/walk dsinqact -inquisitor/jump dsinqjmp -inquisitor/attack dsphoot -inquisitor/atkexplode dsexplod - -programmer/clank dsmtalht -programmer/attack dsrevbld // Unused? -programmer/pain dsprgpn -programmer/death dsrb2dth -programmer/active dsprogac - -entity/sight dsmnalse -entity/melee dsrevbld -entity/pain dsalnpn -entity/death dsmnaldt -entity/active dsalnact - -$alias intermission/tick weapons/assaultgun -$alias intermission/cooptotal *death -$alias intermission/nextstage misc/explosion -$alias intermission/paststats world/barrelx -$alias intermission/pastcoopstats world/barrelx -$alias intermission/pastdmstats *gibbed - -$endif