diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 4bb53e3fe..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 // //========================================================================== @@ -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/d_main.cpp b/src/d_main.cpp index bd4229217..aa247f95d 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2012,6 +2012,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/doomdata.h b/src/doomdata.h index 1dcd8e6b4..b51dd5d20 100644 --- a/src/doomdata.h +++ b/src/doomdata.h @@ -337,6 +337,7 @@ struct mapthinghexen_t }; class FArchive; +struct FDoomEdEntry; // Internal representation of a mapthing struct FMapThing @@ -346,7 +347,8 @@ struct FMapThing fixed_t y; fixed_t z; short angle; - short type; + FDoomEdEntry *info; + short EdNum; WORD SkillFilter; WORD ClassFilter; DWORD flags; @@ -363,8 +365,6 @@ struct FMapThing short pitch; short roll; DWORD RenderStyle; - - void Serialize (FArchive &); }; 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/g_doomedmap.cpp b/src/g_doomedmap.cpp index 6f847f508..9122232d5 100644 --- a/src/g_doomedmap.cpp +++ b/src/g_doomedmap.cpp @@ -45,20 +45,31 @@ const char *SpecialMapthingNames[] = { - "$PLAYER1START", - "$PLAYER2START", - "$PLAYER3START", - "$PLAYER4START", - "$PLAYER5START", - "$PLAYER6START", - "$PLAYER7START", - "$PLAYER8START", - "$DEATHMATCHSTART", - "$SSEQOVERRIDE", - "$POLYANCHOR", - "$POLYSPAWN", - "$POLYSPAWNCRUSH", - "$POLYSPAWNHURT" + "$Player1Start", + "$Player2Start", + "$Player3Start", + "$Player4Start", + "$Player5Start", + "$Player6Start", + "$Player7Start", + "$Player8Start", + "$DeathmatchStart", + "$SSeqOverride", + "$PolyAnchor", + "$PolySpawn", + "$PolySpawnCrush", + "$PolySpawnHurt", + "$SlopeFloorPointLine", + "$SlopeCeilingPointLine", + "$SetFloorSlope", + "$SetCeilingSlope", + "$VavoomFloor", + "$VavoomCeiling", + "$CopyFloorPlane", + "$CopyCeilingPlane", + "$VertexFloorZ", + "$VertexCeilingZ", + }; //========================================================================== // diff --git a/src/info.h b/src/info.h index ff30b7a63..dd6a94aab 100644 --- a/src/info.h +++ b/src/info.h @@ -284,20 +284,31 @@ struct FDoomEdEntry enum ESpecialMapthings { - SMT_PLAYER1START = 1, - SMT_PLAYER2START, - SMT_PLAYER3START, - SMT_PLAYER4START, - SMT_PLAYER5START, - SMT_PLAYER6START, - SMT_PLAYER7START, - SMT_PLAYER8START, - SMT_DEATHMATCHSTART, - SMT_SSEQOVERRIDE, - SMT_POLYANCHOR, - SMT_POLYSPAWN, - SMT_POLYSPAWNCRUSH, - SMT_POLYSPAWNHURT, + SMT_Player1Start = 1, + SMT_Player2Start, + SMT_Player3Start, + SMT_Player4Start, + SMT_Player5Start, + SMT_Player6Start, + SMT_Player7Start, + SMT_Player8Start, + SMT_DeathmatchStart, + SMT_SSeqOverride, + SMT_PolyAnchor, + SMT_PolySpawn, + SMT_PolySpawnCrush, + SMT_PolySpawnHurt, + SMT_SlopeFloorPointLine, + SMT_SlopeCeilingPointLine, + SMT_SetFloorSlope, + SMT_SetCeilingSlope, + SMT_VavoomFloor, + SMT_VavoomCeiling, + SMT_CopyFloorPlane, + SMT_CopyCeilingPlane, + SMT_VertexFloorZ, + SMT_VertexCeilingZ, + }; diff --git a/src/p_buildmap.cpp b/src/p_buildmap.cpp index 2d06b124b..4e7a8e45a 100644 --- a/src/p_buildmap.cpp +++ b/src/p_buildmap.cpp @@ -716,30 +716,31 @@ static int LoadSprites (spritetype *sprites, Xsprite *xsprites, int numsprites, mapthings[count].args[1] = xsprites[i].Data4; mapthings[count].args[2] = xsprites[i].Data1; mapthings[count].args[3] = xsprites[i].Data2; - mapthings[count].type = 14065; + mapthings[count].EdNum = 14065; } else if (xsprites != NULL && sprites[i].lotag == 1) { // Blood player start if (xsprites[i].Data1 < 4) - mapthings[count].type = 1 + xsprites[i].Data1; + mapthings[count].EdNum= 1 + xsprites[i].Data1; else - mapthings[count].type = 4001 + xsprites[i].Data1 - 4; + mapthings[count].EdNum = 4001 + xsprites[i].Data1 - 4; } else if (xsprites != NULL && sprites[i].lotag == 2) { // Bloodbath start - mapthings[count].type = 11; + mapthings[count].EdNum = 11; } else { if (sprites[i].cstat & 32768) continue; if (sprites[i].xrepeat == 0 || sprites[i].yrepeat == 0) continue; - mapthings[count].type = 9988; + mapthings[count].EdNum = 9988; mapthings[count].args[0] = sprites[i].picnum; mapthings[count].args[2] = sprites[i].xrepeat; mapthings[count].args[3] = sprites[i].yrepeat; mapthings[count].args[4] = sprites[i].cstat; } + mapthings[count].info = DoomEdMap.CheckKey(mapthings[count].EdNum); count++; } return count; @@ -783,7 +784,7 @@ static void CreateStartSpot (fixed_t *pos, FMapThing *start) FMapThing mt = { 0, (LittleLong(pos[0])<<12), ((-LittleLong(pos[1]))<<12), 0,// tid, x, y, z - short(Scale ((2048-angle)&2047, 360, 2048)), 1, // angle, type + short(Scale ((2048-angle)&2047, 360, 2048)), DoomEdMap.CheckKey(1), 1, // angle, type 0, 0, // Skillfilter, Classfilter 7|MTF_SINGLE|224, // flags 0, {0}, 0 // special is 0, args and Conversation are 0 diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index d5d725f07..7f99cb81f 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -469,11 +469,6 @@ void AActor::Serialize (FArchive &arc) } } -void FMapThing::Serialize (FArchive &arc) -{ - arc << thingid << x << y << z << angle << type << flags << special - << args[0] << args[1] << args[2] << args[3] << args[4]; -} AActor::AActor () throw() { @@ -4705,17 +4700,17 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) AActor *mobj; fixed_t x, y, z; - if (mthing->type == 0 || mthing->type == -1) + if (mthing->EdNum == 0 || mthing->EdNum == -1) return NULL; // find which type to spawn - FDoomEdEntry *mentry = DoomEdMap.CheckKey(mthing->type); + FDoomEdEntry *mentry = mthing->info; if (mentry == NULL) { // [RH] Don't die if the map tries to spawn an unknown thing Printf ("Unknown type %i at (%i, %i)\n", - mthing->type, + mthing->EdNum, mthing->x>>FRACBITS, mthing->y>>FRACBITS); mentry = DoomEdMap.CheckKey(0); if (mentry == NULL) // we need a valid entry for the rest of this function so if we can't find a default, let's exit right away. @@ -4742,7 +4737,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) switch (mentry->Special) { - case SMT_DEATHMATCHSTART: + case SMT_DeathmatchStart: { // count deathmatch start positions FPlayerStart start(mthing, 0); @@ -4750,10 +4745,10 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) return NULL; } - case SMT_POLYANCHOR: - case SMT_POLYSPAWN: - case SMT_POLYSPAWNCRUSH: - case SMT_POLYSPAWNHURT: + case SMT_PolyAnchor: + case SMT_PolySpawn: + case SMT_PolySpawnCrush: + case SMT_PolySpawnHurt: { polyspawns_t *polyspawn = new polyspawns_t; polyspawn->next = polyspawns; @@ -4762,20 +4757,20 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) polyspawn->angle = mthing->angle; polyspawn->type = mentry->Special; polyspawns = polyspawn; - if (mentry->Special != SMT_POLYANCHOR) + if (mentry->Special != SMT_PolyAnchor) po_NumPolyobjs++; return NULL; } - case SMT_PLAYER1START: - case SMT_PLAYER2START: - case SMT_PLAYER3START: - case SMT_PLAYER4START: - case SMT_PLAYER5START: - case SMT_PLAYER6START: - case SMT_PLAYER7START: - case SMT_PLAYER8START: - pnum = mentry->Special - SMT_PLAYER1START; + case SMT_Player1Start: + case SMT_Player2Start: + case SMT_Player3Start: + case SMT_Player4Start: + case SMT_Player5Start: + case SMT_Player6Start: + case SMT_Player7Start: + case SMT_Player8Start: + pnum = mentry->Special - SMT_Player1Start; break; // Sound sequence override will be handled later @@ -4860,7 +4855,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) } // [RH] sound sequence overriders - if (mentry->Type == NULL && mentry->Special == SMT_SSEQOVERRIDE) + if (mentry->Type == NULL && mentry->Special == SMT_SSeqOverride) { int type = mentry->Args[0]; if (type == 255) type = -1; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 2765c6e4d..ea4f5378b 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1665,7 +1665,7 @@ AActor *SpawnMapThing(int index, FMapThing *mt, int position) if (dumpspawnedthings) { Printf("%5d: (%5d, %5d, %5d), doomednum = %5d, flags = %04x, type = %s\n", - index, mt->x>>FRACBITS, mt->y>>FRACBITS, mt->z>>FRACBITS, mt->type, mt->flags, + index, mt->x>>FRACBITS, mt->y>>FRACBITS, mt->z>>FRACBITS, mt->EdNum, mt->flags, spawned? spawned->GetClass()->TypeName.GetChars() : "(none)"); } T_AddSpawnedThing(spawned); @@ -1782,7 +1782,8 @@ void P_LoadThings (MapData * map) mti[i].x = LittleShort(mt->x) << FRACBITS; mti[i].y = LittleShort(mt->y) << FRACBITS; mti[i].angle = LittleShort(mt->angle); - mti[i].type = LittleShort(mt->type); + mti[i].EdNum = LittleShort(mt->type); + mti[i].info = DoomEdMap.CheckKey(mti[i].EdNum); } delete [] mtp; } @@ -1822,7 +1823,8 @@ void P_LoadThings2 (MapData * map) mti[i].y = LittleShort(mth[i].y)< &spots, TAr { for (unsigned int i = 0; i < MapThingsConverted.Size(); ++i) { - FDoomEdEntry *mentry = DoomEdMap.CheckKey(MapThingsConverted[i].type); - if (mentry != NULL && mentry->Type == NULL && mentry->Special >= SMT_POLYANCHOR && mentry->Special <= SMT_POLYSPAWNHURT) + FDoomEdEntry *mentry = MapThingsConverted[i].info; + if (mentry != NULL && mentry->Type == NULL && mentry->Special >= SMT_PolyAnchor && mentry->Special <= SMT_PolySpawnHurt) { FNodeBuilder::FPolyStart newvert; newvert.x = MapThingsConverted[i].x; newvert.y = MapThingsConverted[i].y; newvert.polynum = MapThingsConverted[i].angle; - if (mentry->Special == SMT_POLYANCHOR) + if (mentry->Special == SMT_PolyAnchor) { anchors.Push (newvert); } diff --git a/src/p_slopes.cpp b/src/p_slopes.cpp index 2cce53a92..41f7a1837 100644 --- a/src/p_slopes.cpp +++ b/src/p_slopes.cpp @@ -266,20 +266,6 @@ void P_VavoomSlope(sector_t * sec, int id, fixed_t x, fixed_t y, fixed_t z, int } } -enum -{ - THING_SlopeFloorPointLine = 9500, - THING_SlopeCeilingPointLine = 9501, - THING_SetFloorSlope = 9502, - THING_SetCeilingSlope = 9503, - THING_CopyFloorPlane = 9510, - THING_CopyCeilingPlane = 9511, - THING_VavoomFloor=1500, - THING_VavoomCeiling=1501, - THING_VertexFloorZ=1504, - THING_VertexCeilingZ=1505, -}; - //========================================================================== // // P_SetSlopesFromVertexHeights @@ -294,24 +280,27 @@ static void P_SetSlopesFromVertexHeights(FMapThing *firstmt, FMapThing *lastmt, for (mt = firstmt; mt < lastmt; ++mt) { - if (mt->type == THING_VertexFloorZ || mt->type == THING_VertexCeilingZ) + if (mt->info != NULL && mt->info->Type == NULL) { - for(int i=0; iinfo->Special == SMT_VertexFloorZ || mt->info->Special == SMT_VertexCeilingZ) { - if (vertexes[i].x == mt->x && vertexes[i].y == mt->y) + for (int i = 0; i < numvertexes; i++) { - if (mt->type == THING_VertexFloorZ) + if (vertexes[i].x == mt->x && vertexes[i].y == mt->y) { - vt_heights[0][i] = mt->z; + if (mt->info->Special == SMT_VertexFloorZ) + { + vt_heights[0][i] = mt->z; + } + else + { + vt_heights[1][i] = mt->z; + } + vt_found = true; } - else - { - vt_heights[1][i] = mt->z; - } - vt_found = true; } + mt->EdNum = 0; } - mt->type = 0; } } @@ -427,49 +416,51 @@ void P_SpawnSlopeMakers (FMapThing *firstmt, FMapThing *lastmt, const int *oldve for (mt = firstmt; mt < lastmt; ++mt) { - if ((mt->type >= THING_SlopeFloorPointLine && - mt->type <= THING_SetCeilingSlope) || - mt->type == THING_VavoomFloor || mt->type == THING_VavoomCeiling) + if (mt->info != NULL && mt->info->Type == NULL && + (mt->info->Special >= SMT_SlopeFloorPointLine && mt->info->Special <= SMT_VavoomCeiling)) { fixed_t x, y, z; secplane_t *refplane; sector_t *sec; + bool ceiling; x = mt->x; y = mt->y; sec = P_PointInSector (x, y); - if (mt->type & 1) + if (mt->info->Special == SMT_SlopeCeilingPointLine || mt->info->Special == SMT_VavoomCeiling || mt->info->Special == SMT_SetCeilingSlope) { refplane = &sec->ceilingplane; + ceiling = true; } else { refplane = &sec->floorplane; + ceiling = false; } z = refplane->ZatPoint (x, y) + (mt->z); - if (mt->type == THING_VavoomFloor || mt->type == THING_VavoomCeiling) - { - P_VavoomSlope(sec, mt->thingid, x, y, mt->z, mt->type & 1); + if (mt->info->Special <= SMT_SlopeCeilingPointLine) + { // SlopeFloorPointLine and SlopCeilingPointLine + P_SlopeLineToPoint (mt->args[0], x, y, z, ceiling); } - else if (mt->type <= THING_SlopeCeilingPointLine) - { // THING_SlopeFloorPointLine and THING_SlopCeilingPointLine - P_SlopeLineToPoint (mt->args[0], x, y, z, mt->type & 1); + else if (mt->info->Special <= SMT_SetCeilingSlope) + { // SetFloorSlope and SetCeilingSlope + P_SetSlope (refplane, ceiling, mt->angle, mt->args[0], x, y, z); } - else - { // THING_SetFloorSlope and THING_SetCeilingSlope - P_SetSlope (refplane, mt->type & 1, mt->angle, mt->args[0], x, y, z); + else + { // VavoomFloor and VavoomCeiling + P_VavoomSlope(sec, mt->thingid, x, y, mt->z, ceiling); } - mt->type = 0; + mt->EdNum = 0; } } for (mt = firstmt; mt < lastmt; ++mt) { - if (mt->type == THING_CopyFloorPlane || - mt->type == THING_CopyCeilingPlane) + if (mt->info != NULL && mt->info->Type == NULL && + (mt->info->Special == SMT_CopyFloorPlane || mt->info->Special == SMT_CopyCeilingPlane)) { - P_CopyPlane (mt->args[0], mt->x, mt->y, mt->type & 1); - mt->type = 0; + P_CopyPlane (mt->args[0], mt->x, mt->y, mt->info->Special == SMT_CopyCeilingPlane); + mt->EdNum = 0; } } diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index f0fb79690..31634ee81 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -500,7 +500,8 @@ public: break; case NAME_Type: - th->type = (short)CheckInt(key); + th->EdNum = (short)CheckInt(key); + th->info = DoomEdMap.CheckKey(th->EdNum); break; case NAME_Conversation: diff --git a/src/po_man.cpp b/src/po_man.cpp index 9158a7027..60627e4f3 100644 --- a/src/po_man.cpp +++ b/src/po_man.cpp @@ -1561,8 +1561,8 @@ static void SpawnPolyobj (int index, int tag, int type) sd->linedef->args[0] = 0; IterFindPolySides(&polyobjs[index], sd); po->MirrorNum = sd->linedef->args[1]; - po->crush = (type != SMT_POLYSPAWN) ? 3 : 0; - po->bHurtOnTouch = (type == SMT_POLYSPAWNHURT); + po->crush = (type != SMT_PolySpawn) ? 3 : 0; + po->bHurtOnTouch = (type == SMT_PolySpawnHurt); po->tag = tag; po->seqType = sd->linedef->args[2]; if (po->seqType < 0 || po->seqType > 63) @@ -1632,8 +1632,8 @@ static void SpawnPolyobj (int index, int tag, int type) } if (po->Sidedefs.Size() > 0) { - po->crush = (type != SMT_POLYSPAWN) ? 3 : 0; - po->bHurtOnTouch = (type == SMT_POLYSPAWNHURT); + po->crush = (type != SMT_PolySpawn) ? 3 : 0; + po->bHurtOnTouch = (type == SMT_PolySpawnHurt); po->tag = tag; po->seqType = po->Sidedefs[0]->linedef->args[3]; po->MirrorNum = po->Sidedefs[0]->linedef->args[2]; @@ -1756,7 +1756,7 @@ void PO_Init (void) for (polyspawn = polyspawns, prev = &polyspawns; polyspawn;) { // 9301 (3001) = no crush, 9302 (3002) = crushing, 9303 = hurting touch - if (polyspawn->type >= SMT_POLYSPAWN && polyspawn->type <= SMT_POLYSPAWNHURT) + if (polyspawn->type >= SMT_PolySpawn && polyspawn->type <= SMT_PolySpawnHurt) { // Polyobj StartSpot Pt. polyobjs[polyIndex].StartSpot.x = polyspawn->x; @@ -1776,7 +1776,7 @@ void PO_Init (void) for (polyspawn = polyspawns; polyspawn;) { polyspawns_t *next = polyspawn->next; - if (polyspawn->type == SMT_POLYANCHOR) + if (polyspawn->type == SMT_PolyAnchor) { // Polyobj Anchor Pt. TranslateToStartSpot (polyspawn->angle, polyspawn->x, polyspawn->y); diff --git a/src/resourcefiles/file_7z.cpp b/src/resourcefiles/file_7z.cpp index 21c11ed25..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 stricmp(rec1->FullName, 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 024ef0633..f6adf0723 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); @@ -113,29 +111,18 @@ 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); } -//========================================================================== -// -// -// -//========================================================================== - -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); -} - #ifdef _WIN32 //========================================================================== // @@ -299,8 +286,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 7ae0e90a5..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 stricmp(rec1->FullName, 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 15a4337b1..ebeb40d96 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" //========================================================================== @@ -74,11 +75,6 @@ public: FResourceLump::~FResourceLump() { - if (FullName != NULL) - { - delete [] FullName; - FullName = NULL; - } if (Cache != NULL && RefCount >= 0) { delete [] Cache; @@ -102,7 +98,8 @@ void FResourceLump::LumpNameSetup(const char *iname) base = base.Left(base.LastIndexOf('.')); uppercopy(Name, base); Name[8] = 0; - FullName = copystring(iname); + FString temp = iname; // Note: iname can point to inside FullName's string buffer so we cannot do the assignment directly. + FullName = temp; // Map some directories to WAD namespaces. // Note that some of these namespaces don't exist in WADS. @@ -321,6 +318,196 @@ 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. +// 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. +// +//========================================================================== + +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; + + end = start = 0; + + // 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 517b5eef4..9927b1eae 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; @@ -66,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); diff --git a/src/w_wad.cpp b/src/w_wad.cpp index abbac5763..4d0b51623 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; @@ -1574,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, 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/iwadinfo.txt b/wadsrc/static/iwadinfo.txt index d5ccd46a8..0fcdd9b87 100644 --- a/wadsrc/static/iwadinfo.txt +++ b/wadsrc/static/iwadinfo.txt @@ -33,6 +33,7 @@ IWad Name = "Hacx 2.0" Game = "Doom" Config = "Hacx" + Autoname = "Hacx2" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-E" BannerColors = "ff ff ff", "00 88 22" @@ -43,6 +44,7 @@ IWad Name = "Hacx: Twitch'n Kill" Game = "Doom" Config = "Hacx" + Autoname = "Hacx12" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-R" BannerColors = "00 00 a8", "a8 a8 a8" @@ -97,6 +99,7 @@ IWad Name = "Strife: Teaser (New Version)" Game = "Strife" Config = "Strife" + Autoname = "Strifeteaser2" Mapinfo = "mapinfo/strife.txt" Compatibility = "Shareware", "Teaser2" MustContain = "MAP33", "ENDSTRF", "INVCURS" @@ -108,6 +111,7 @@ IWad Name = "Strife: Teaser (Old Version)" Game = "Strife" Config = "Strife" + Autoname = "Strifeteaser1" Mapinfo = "mapinfo/strife.txt" Compatibility = "Shareware" MustContain = "MAP33", "ENDSTRF" @@ -119,6 +123,7 @@ IWad Name = "Hexen: Beyond Heretic" Game = "Hexen" Config = "Hexen" + Autoname = "Hexen1" Mapinfo = "mapinfo/hexen.txt" Compatibility = "Poly1" MustContain = "TITLE", "MAP01", "MAP40", "WINNOWR" @@ -177,6 +182,7 @@ IWad Name = "Heretic" Game = "Heretic" Config = "Heretic" + Autoname = "Heretic1" Mapinfo = "mapinfo/heretic.txt" MustContain = "E1M1", "E2M1", "TITLE", "MUS_E1M1" BannerColors = "fc fc 00", "a8 00 00" diff --git a/wadsrc/static/mapinfo/common.txt b/wadsrc/static/mapinfo/common.txt index 5e83ee727..807c677be 100644 --- a/wadsrc/static/mapinfo/common.txt +++ b/wadsrc/static/mapinfo/common.txt @@ -26,6 +26,12 @@ DoomEdNums 1408 = "$SSeqOverride", 8 1409 = "$SSeqOverride", 9 1411 = "$SSeqOverride" + 1500 = "$VavoomFloor" + 1501 = "$VavoomCeiling" + 1502 = none + 1503 = none + 1504 = "$VertexFloorZ" + 1505 = "$VertexCeilingZ" 5001 = PointPusher 5002 = PointPuller 5004 = FS_Mapspot @@ -73,6 +79,28 @@ DoomEdNums 9301 = "$PolySpawn" 9302 = "$PolySpawnCrush" 9303 = "$PolySpawnHurt" + 9500 = "$SlopeFloorPointLine" + 9501 = "$SlopeCeilingPointLine" + 9502 = "$SetFloorSlope" + 9503 = "$SetCeilingSlope" + 9510 = "$CopyFloorPlane" + 9511 = "$CopyCeilingPlane" + 9800 = none + 9801 = none + 9802 = none + 9803 = none + 9804 = none + 9810 = none + 9811 = none + 9812 = none + 9813 = none + 9814 = none + 9820 = none + 9821 = none + 9822 = none + 9823 = none + 9824 = none + 9825 = none 9982 = SecActEyesAboveC 9983 = SecActEyesBelowC 9988 = CustomSprite 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 diff --git a/zdoom.vcproj b/zdoom.vcproj index f134c57f1..9d6cfcca2 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -1942,6 +1942,10 @@ RelativePath=".\src\win32\fb_ddraw.cpp" > + +