From bf6cdba0bbdfa2ee7874dbebe2e4974b8205596e Mon Sep 17 00:00:00 2001 From: Edward Richardson Date: Tue, 17 Mar 2015 18:07:50 +1300 Subject: [PATCH 001/144] Added -hashfiles command --- src/d_main.cpp | 26 +++++++++++++++++++++++++ src/doomstat.h | 1 + src/w_wad.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/src/d_main.cpp b/src/d_main.cpp index 5e21867bb..6491dc3e3 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -214,6 +214,7 @@ bool autostart; FString StoredWarp; bool advancedemo; FILE *debugfile; +FILE *hashfile; event_t events[MAXEVENTS]; int eventhead; int eventtail; @@ -2220,6 +2221,26 @@ void D_DoomMain (void) execLogfile(logfile); } + if (Args->CheckParm("-hashfiles")) + { + FString filename = "fileinfo.txt"; + Printf("Hashing loaded content to: %s\n", filename); + hashfile = fopen(filename, "w"); + if (hashfile) + { + fprintf(hashfile, "%s version %s (%s)\n", GAMENAME, GetVersionString(), GetGitHash()); +#ifdef __VERSION__ + fprintf(hashfile, "Compiler version: %s\n", __VERSION__); +#endif + fprintf(hashfile, "Command line:"); + for (int i = 0; i < Args->NumArgs(); ++i) + { + fprintf(hashfile, " %s", Args->GetArg(i)); + } + fprintf(hashfile, "\n"); + } + } + D_DoomInit(); PClass::StaticInit (); atterm(FinalGC); @@ -2289,6 +2310,11 @@ void D_DoomMain (void) pwads.Clear(); pwads.ShrinkToFit(); + if (hashfile) + { + Printf("Notice: File hashing is incredibly verbose. Expect loading files to take much longer then usual.\n"); + } + Printf ("W_Init: Init WADfiles.\n"); Wads.InitMultipleFiles (allwads); allwads.Clear(); diff --git a/src/doomstat.h b/src/doomstat.h index 565d15bd6..b1784530f 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -172,6 +172,7 @@ extern bool playeringame[/*MAXPLAYERS*/]; // File handling stuff. extern FILE* debugfile; +extern FILE* hashfile; // if true, load all graphics at level load extern bool precache; diff --git a/src/w_wad.cpp b/src/w_wad.cpp index 9455817db..abbac5763 100644 --- a/src/w_wad.cpp +++ b/src/w_wad.cpp @@ -56,6 +56,7 @@ #include "doomerrors.h" #include "resourcefiles/resourcefile.h" #include "md5.h" +#include "doomstat.h" // MACROS ------------------------------------------------------------------ @@ -300,6 +301,56 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo) AddFile(path, embedded); } } + + if (hashfile) + { + BYTE cksum[16]; + char cksumout[33]; + memset(cksumout, 0, sizeof(cksumout)); + + FileReader *reader = wadinfo; + + if (reader != NULL) + { + MD5Context md5; + reader->Seek(0, SEEK_SET); + md5.Update(reader, reader->GetLength()); + md5.Final(cksum); + + for (size_t j = 0; j < sizeof(cksum); ++j) + { + sprintf(cksumout + (j * 2), "%02X", cksum[j]); + } + + fprintf(hashfile, "file: %s, hash: %s, size: %d\n", filename, cksumout, reader->GetLength()); + } + + else + fprintf(hashfile, "file: %s, Directory structure\n", filename); + + for (DWORD i = 0; i < resfile->LumpCount(); i++) + { + FResourceLump *lump = resfile->GetLump(i); + + if (!(lump->Flags & LUMPF_EMBEDDED)) + { + reader = lump->NewReader(); + + MD5Context md5; + md5.Update(reader, lump->LumpSize); + md5.Final(cksum); + + for (size_t j = 0; j < sizeof(cksum); ++j) + { + 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); + + delete reader; + } + } + } return; } } From 890fb39d25023aca7651c15f6ea46121ff842940 Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Tue, 24 Mar 2015 18:28:59 -0400 Subject: [PATCH 002/144] - Apparently cmake_policy doesn't ignore unknown policies (which seems to defeat the purpose to me) so we must wrap them in code to detect if the policy is known. --- CMakeLists.txt | 8 ++++++-- CreateLaunchers.cmake | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c39a492e6..e3ee74d55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,12 @@ cmake_minimum_required( VERSION 2.4 ) project(ZDoom) if( COMMAND cmake_policy ) - cmake_policy( SET CMP0011 NEW ) - cmake_policy( SET CMP0054 NEW ) + if( POLICY CMP0011 ) + cmake_policy( SET CMP0011 NEW ) + endif( POLICY CMP0011 ) + if( POLICY CMP0054 ) + cmake_policy( SET CMP0054 NEW ) + endif( POLICY CMP0054 ) endif( COMMAND cmake_policy ) list( APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ) diff --git a/CreateLaunchers.cmake b/CreateLaunchers.cmake index 83cc08b44..bd2b3e473 100644 --- a/CreateLaunchers.cmake +++ b/CreateLaunchers.cmake @@ -44,7 +44,9 @@ if(__create_launchers) endif() set(__create_launchers YES) -cmake_policy( SET CMP0026 OLD ) +if( POLICY CMP0026 ) + cmake_policy( SET CMP0026 OLD ) +endif( POLICY CMP0026 ) include(CleanDirectoryList) From f161c0c501622af829dbd505d5927b3370468f3d Mon Sep 17 00:00:00 2001 From: MajorCooke Date: Wed, 25 Mar 2015 14:19:50 -0500 Subject: [PATCH 003/144] - Fixed: Projectile impacts never called P_DamageMobj when damage was 0 without the CAUSEPAIN flag. --- src/p_interaction.cpp | 12 ++++++------ src/p_map.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index d9d7971ca..7593b55b5 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -925,9 +925,9 @@ static inline bool MustForcePain(AActor *target, AActor *inflictor) (inflictor->flags6 & MF6_FORCEPAIN) && !(inflictor->flags5 & MF5_PAINLESS)); } -static inline bool isFakePain(AActor *target, AActor *inflictor) +static inline bool isFakePain(AActor *target, AActor *inflictor, int damage) { - return ((target->flags7 & MF7_ALLOWPAIN) || ((inflictor != NULL) && (inflictor->flags7 & MF7_CAUSEPAIN))); + return ((target->flags7 & MF7_ALLOWPAIN && damage > 0) || ((inflictor != NULL) && (inflictor->flags7 & MF7_CAUSEPAIN))); } @@ -956,7 +956,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, } //Rather than unnecessarily call the function over and over again, let's be a little more efficient. - fakedPain = (isFakePain(target, inflictor)); + fakedPain = (isFakePain(target, inflictor, damage)); forcedPain = (MustForcePain(target, inflictor)); // Spectral targets only take damage from spectral projectiles. @@ -1453,8 +1453,8 @@ fakepain: //Needed so we can skip the rest of the above, but still obey the orig //CAUSEPAIN can always attempt to trigger the chances of pain. //ALLOWPAIN can do the same, only if the (unfiltered aka fake) damage is greater than 0. - if ((((target->flags7 & MF7_ALLOWPAIN) && (fakeDamage > 0)) - || ((inflictor != NULL) && (inflictor->flags7 & MF7_CAUSEPAIN)))) + if (((target->flags7 & MF7_ALLOWPAIN) && (fakeDamage > 0)) + || ((inflictor != NULL) && (inflictor->flags7 & MF7_CAUSEPAIN))) { holdDamage = damage; //Store the modified damage away after factors are taken into account. damage = fakeDamage; //Retrieve the original damage. @@ -1474,7 +1474,7 @@ fakepain: //Needed so we can skip the rest of the above, but still obey the orig } } - if ((((damage >= target->PainThreshold)) && (pr_damagemobj() < painchance)) + if ((((damage >= target->PainThreshold) || (fakedPain)) && (pr_damagemobj() < painchance)) || (inflictor != NULL && (inflictor->flags6 & MF6_FORCEPAIN))) { dopain: diff --git a/src/p_map.cpp b/src/p_map.cpp index fa13274ef..8c6c24828 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -1288,7 +1288,7 @@ bool PIT_CheckThing(AActor *thing, FCheckPosition &tm) // Do damage damage = tm.thing->GetMissileDamage((tm.thing->flags4 & MF4_STRIFEDAMAGE) ? 3 : 7, 1); - if ((damage > 0) || (tm.thing->flags6 & MF6_FORCEPAIN)) + if ((damage > 0) || (tm.thing->flags6 & MF6_FORCEPAIN) || (tm.thing->flags7 & MF7_CAUSEPAIN)) { int newdam = P_DamageMobj(thing, tm.thing, tm.thing->target, damage, tm.thing->DamageType); if (damage > 0) From d45d45583bcda1469ac7af07f68060a9a5cb161a Mon Sep 17 00:00:00 2001 From: MajorCooke Date: Wed, 25 Mar 2015 14:27:12 -0500 Subject: [PATCH 004/144] Take PainThresholds into account. --- src/p_interaction.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 7593b55b5..ec3947cc0 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1474,7 +1474,7 @@ fakepain: //Needed so we can skip the rest of the above, but still obey the orig } } - if ((((damage >= target->PainThreshold) || (fakedPain)) && (pr_damagemobj() < painchance)) + if (((damage >= target->PainThreshold) && (pr_damagemobj() < painchance)) || (inflictor != NULL && (inflictor->flags6 & MF6_FORCEPAIN))) { dopain: From d1a972ff3d25d54fd9432d362d5e8cf1f96e3f53 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 25 Mar 2015 20:33:24 +0100 Subject: [PATCH 005/144] - fixed: The recent ANIMDEFS extension missed adjusting the call to AddSimpleAnim for ANIMATED-defined animations. --- src/textures/animations.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/textures/animations.cpp b/src/textures/animations.cpp index 684869cf0..ffff062c6 100644 --- a/src/textures/animations.cpp +++ b/src/textures/animations.cpp @@ -253,7 +253,8 @@ void FTextureManager::InitAnimated (void) } // Speed is stored as tics, but we want ms so scale accordingly. - AddSimpleAnim (pic1, pic2 - pic1 + 1, animtype, Scale (animspeed, 1000, 35)); + FAnimDef *adef = AddSimpleAnim (pic1, pic2 - pic1 + 1, Scale (animspeed, 1000, 35)); + if (adef != NULL) adef->AnimType = animtype; } } } From 66b090cd44df7626a71de4d5bcc15c8645e5eb8e Mon Sep 17 00:00:00 2001 From: Edoardo Prezioso Date: Wed, 25 Mar 2015 22:25:00 +0100 Subject: [PATCH 006/144] - Improvements to some of the actor debug CCMDs. - 'monster' and 'items' can now filter the list if an argument is passed (like with 'kill'); - added 'countitems', which will show only the 'count items' in the current map, with the same filter parameter as 'monster' and 'items'. - reorganize the code to reduce the duplication. --- src/c_cmds.cpp | 78 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 22 deletions(-) diff --git a/src/c_cmds.cpp b/src/c_cmds.cpp index 5fc7f0fd8..778f25be1 100644 --- a/src/c_cmds.cpp +++ b/src/c_cmds.cpp @@ -889,21 +889,42 @@ CCMD(info) "the NOBLOCKMAP flag or have height/radius of 0.\n"); } -//----------------------------------------------------------------------------- -// -// -// -//----------------------------------------------------------------------------- -CCMD(monster) -{ - AActor * mo; +typedef bool (*ActorTypeChecker) (AActor *); - if (CheckCheatmode ()) return; +static bool IsActorAMonster(AActor *mo) +{ + return mo->flags3&MF3_ISMONSTER && !(mo->flags&MF_CORPSE) && !(mo->flags&MF_FRIENDLY); +} + +static bool IsActorAnItem(AActor *mo) +{ + return mo->IsKindOf(RUNTIME_CLASS(AInventory)) && mo->flags&MF_SPECIAL; +} + +static bool IsActorACountItem(AActor *mo) +{ + return mo->IsKindOf(RUNTIME_CLASS(AInventory)) && mo->flags&MF_SPECIAL && mo->flags&MF_COUNTITEM; +} + +static void PrintFilteredActorList(const ActorTypeChecker IsActorType, const char *FilterName) +{ + AActor *mo; + const PClass *FilterClass = NULL; + + if (FilterName != NULL) + { + FilterClass = PClass::FindClass(FilterName); + if (FilterClass == NULL || FilterClass->ActorInfo == NULL) + { + Printf("%s is not an actor class.\n", FilterName); + return; + } + } TThinkerIterator it; while ( (mo = it.Next()) ) { - if (mo->flags3&MF3_ISMONSTER && !(mo->flags&MF_CORPSE) && !(mo->flags&MF_FRIENDLY)) + if ((FilterClass == NULL || mo->IsA(FilterClass)) && IsActorType(mo)) { Printf ("%s at (%d,%d,%d)\n", mo->GetClass()->TypeName.GetChars(), @@ -912,6 +933,18 @@ CCMD(monster) } } +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- +CCMD(monster) +{ + if (CheckCheatmode ()) return; + + PrintFilteredActorList(IsActorAMonster, argv.argc() > 1 ? argv[1] : NULL); +} + //----------------------------------------------------------------------------- // // @@ -919,20 +952,21 @@ CCMD(monster) //----------------------------------------------------------------------------- CCMD(items) { - AActor * mo; - if (CheckCheatmode ()) return; - TThinkerIterator it; - while ( (mo = it.Next()) ) - { - if (mo->IsKindOf(RUNTIME_CLASS(AInventory)) && mo->flags&MF_SPECIAL) - { - Printf ("%s at (%d,%d,%d)\n", - mo->GetClass()->TypeName.GetChars(), - mo->x >> FRACBITS, mo->y >> FRACBITS, mo->z >> FRACBITS); - } - } + PrintFilteredActorList(IsActorAnItem, argv.argc() > 1 ? argv[1] : NULL); +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- +CCMD(countitems) +{ + if (CheckCheatmode ()) return; + + PrintFilteredActorList(IsActorACountItem, argv.argc() > 1 ? argv[1] : NULL); } //----------------------------------------------------------------------------- From 2c978bc6f72d738d6e06988c09af0e19e82963ee Mon Sep 17 00:00:00 2001 From: Edward Richardson Date: Thu, 26 Mar 2015 23:38:09 +1300 Subject: [PATCH 007/144] Change hashfiles filename string to a cstr - It seems some compilers don't like passing FNames to Printf, and this might as well be a cstr anyway. --- src/d_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 6491dc3e3..8b9e54680 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2223,7 +2223,7 @@ void D_DoomMain (void) if (Args->CheckParm("-hashfiles")) { - FString filename = "fileinfo.txt"; + const char *filename = "fileinfo.txt"; Printf("Hashing loaded content to: %s\n", filename); hashfile = fopen(filename, "w"); if (hashfile) From 32a55c9229d4604f4f931bfae73dde8ab36f7c65 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 26 Mar 2015 20:43:29 -0500 Subject: [PATCH 008/144] Revert "- Fixed: A_Die didn't consider missiles for the function." This reverts commit 5977cb04d9d24265b823168ccbb663e9ff9c65a2. - It breaks at least one mod (Complex Doom) and who knows how many others. Considering how long A_Die has been around, a random "fix" like this is probably not a good idea. [P.S. Missiles have health and can be damaged by P_DamageMob, so it's not like it never did anything on missiles.] --- src/p_enemy.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/p_enemy.cpp b/src/p_enemy.cpp index 55b49b65e..be0646d4b 100644 --- a/src/p_enemy.cpp +++ b/src/p_enemy.cpp @@ -3203,10 +3203,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Die) ACTION_PARAM_START(1); ACTION_PARAM_NAME(damagetype, 0); - if (self->flags & MF_MISSILE) - P_ExplodeMissile(self, NULL, NULL); - else - P_DamageMobj (self, NULL, NULL, self->health, damagetype, DMG_FORCED); + P_DamageMobj (self, NULL, NULL, self->health, damagetype, DMG_FORCED); } // From 93c7f4b4b5cfa8baf1a8699b5201b41e045861f7 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 26 Mar 2015 21:46:14 -0500 Subject: [PATCH 009/144] Don't accelerate BOOM colormaped player sprites - Fixed: Player weapons ignored BOOM colormaps when accelerated. --- src/r_things.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/r_things.cpp b/src/r_things.cpp index 515364970..8e53fb6d1 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -1359,6 +1359,11 @@ void R_DrawPSprite (pspdef_t* psp, int pspnum, AActor *owner, fixed_t sx, fixed_ { noaccel = true; } + // If drawing with a BOOM colormap, disable acceleration. + if (mybasecolormap == &NormalLight && NormalLight.Maps != realcolormaps) + { + noaccel = true; + } // If the main colormap has fixed lights, and this sprite is being drawn with that // colormap, disable acceleration so that the lights can remain fixed. if (!noaccel && realfixedcolormap == NULL && From ee9f64427c608ed3283caea97b46b6f2a83e6c61 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 26 Mar 2015 22:01:57 -0500 Subject: [PATCH 010/144] Add wad name to mapchecksum output --- src/compatibility.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compatibility.cpp b/src/compatibility.cpp index da4ab4945..fd309ec8b 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -595,12 +595,13 @@ CCMD (mapchecksum) else { map->GetChecksum(cksum); + const char *wadname = Wads.GetWadName(Wads.GetLumpFile(map->lumpnum)); delete map; for (size_t j = 0; j < sizeof(cksum); ++j) { Printf("%02X", cksum[j]); } - Printf(" // %s\n", argv[i]); + Printf(" // %s %s\n", wadname, argv[i]); } } } From 9cd6aae902ae9c571dd871c3d2907553bf58ae12 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 26 Mar 2015 22:02:10 -0500 Subject: [PATCH 011/144] Added Archvile ghosts compatibility flags for some more maps --- wadsrc/static/compatibility.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/wadsrc/static/compatibility.txt b/wadsrc/static/compatibility.txt index 152e55825..3a675f275 100644 --- a/wadsrc/static/compatibility.txt +++ b/wadsrc/static/compatibility.txt @@ -124,6 +124,14 @@ BA530202AF0BA0C6CBAE6A0C7076FB72 // Requiem map04 3CA5493FEFF2E27BFD4181E6C4A3C2BF // The Waterfront map01 CBDFEFAC579A62DE8F1B48CA4A09D381 // gather2.wad map05 and darkside.wad map01 C7A2FAFB0AFB2632C50AD625CDB50E51 // Reverie map18 +9E5724BC6135AA6F86EE54FD4D91F1E2 // Project X map14 +6DA6FCBA8089161BDEC6A1D3F6C8D60F // Eternal Doom map25 +01899825FFEAE016D39C02A7DA4B218F // Archie map01 +1D9F3AFDC2517C2E450491ED13896712 // Seej map01 +0AE745A3AB86D15FB2FB74489962C421 // 6pack2 map02 +2EA635C6B6AEC76B6BC77448DAB22F9A // Squadron 417 map21 +1E998262EE319B7D088E01DE782E6B41 // Mayhem 2013 map05 +A81E2734F735A82720D8E0F1442BA0C9 // Imp's [sic] are Ghost Gods map01 { corpsegibs vileghosts From 3463b878763c7fd036f263a0d9501773c2f8cc0a Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 26 Mar 2015 23:19:05 -0500 Subject: [PATCH 012/144] Fixed: MUSINFO was not multiplayer-aware - Move MUSINFO change request out of FLevelLocals and into player_t. This allows the MusicChanger actors to change music for each player independantly. This is similar to PrBoom+, which switches depending on the displayplayer. The difference being, we don't actually track the music other players are listening to. (Which might not be a bad idea to implement at some point.) - Moved a few fields in player_t for better packing. --- src/d_player.h | 11 +++++++---- src/g_level.cpp | 4 +++- src/g_level.h | 1 - src/p_mobj.cpp | 3 ++- src/p_user.cpp | 36 +++++++++++++++++++++++++++++++++++- src/s_advsound.cpp | 43 ++++++++++--------------------------------- src/version.h | 2 +- 7 files changed, 58 insertions(+), 42 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index e5644e8cb..e27bf1087 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -443,10 +443,15 @@ public: FName LastDamageType; // [RH] For damage-specific pain and death sounds - //Added by MC: - TObjPtr Bot; + TObjPtr MUSINFOactor; // For MUSINFO purposes + SBYTE MUSINFOtics; bool settings_controller; // Player can control game settings. + SBYTE crouching; + SBYTE crouchdir; + + //Added by MC: + TObjPtr Bot; float BlendR; // [RH] Final blending values float BlendG; @@ -458,8 +463,6 @@ public: int MinPitch; // Viewpitch limits (negative is up, positive is down) int MaxPitch; - SBYTE crouching; - SBYTE crouchdir; fixed_t crouchfactor; fixed_t crouchoffset; fixed_t crouchviewdelta; diff --git a/src/g_level.cpp b/src/g_level.cpp index 60609050a..fd6d8049a 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1457,7 +1457,9 @@ void G_SerializeLevel (FArchive &arc, bool hubLoad) if (SaveVersion >= 3313) { - arc << level.nextmusic; + // This is a player property now + int nextmusic; + arc << nextmusic; } // Hub transitions must keep the current total time diff --git a/src/g_level.h b/src/g_level.h index 6e07b0c74..8a4702639 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -412,7 +412,6 @@ struct FLevelLocals int musicorder; int cdtrack; unsigned int cdid; - int nextmusic; // For MUSINFO purposes FTextureID skytexture1; FTextureID skytexture2; diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 608ecb407..9102c0472 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4480,7 +4480,8 @@ APlayerPawn *P_SpawnPlayer (FPlayerStart *mthing, int playernum, int flags) p->mo->ResetAirSupply(false); p->Uncrouch(); p->MinPitch = p->MaxPitch = 0; // will be filled in by PostBeginPlay()/netcode - + p->MUSINFOactor = NULL; + p->MUSINFOtics = -1; p->velx = p->vely = 0; // killough 10/98: initialize bobbing to 0. diff --git a/src/p_user.cpp b/src/p_user.cpp index 4d05d2660..6042d5662 100644 --- a/src/p_user.cpp +++ b/src/p_user.cpp @@ -309,7 +309,9 @@ player_t::player_t() ConversationNPC(0), ConversationPC(0), ConversationNPCAngle(0), - ConversationFaceTalker(0) + ConversationFaceTalker(0), + MUSINFOactor(0), + MUSINFOtics(-1) { memset (&cmd, 0, sizeof(cmd)); memset (frags, 0, sizeof(frags)); @@ -400,6 +402,8 @@ player_t &player_t::operator=(const player_t &p) ConversationPC = p.ConversationPC; ConversationNPCAngle = p.ConversationNPCAngle; ConversationFaceTalker = p.ConversationFaceTalker; + MUSINFOactor = p.MUSINFOactor; + MUSINFOtics = p.MUSINFOtics; return *this; } @@ -430,6 +434,7 @@ size_t player_t::FixPointers (const DObject *old, DObject *rep) if (*&PremorphWeapon == old) PremorphWeapon = static_cast(rep), changed++; if (*&ConversationNPC == old) ConversationNPC = replacement, changed++; if (*&ConversationPC == old) ConversationPC = replacement, changed++; + if (*&MUSINFOactor == old) MUSINFOactor = replacement, changed++; return changed; } @@ -443,6 +448,7 @@ size_t player_t::PropagateMark() GC::Mark(ReadyWeapon); GC::Mark(ConversationNPC); GC::Mark(ConversationPC); + GC::Mark(MUSINFOactor); GC::Mark(PremorphWeapon); if (PendingWeapon != WP_NOCHANGE) { @@ -2331,6 +2337,30 @@ void P_PlayerThink (player_t *player) player->crouchoffset = -FixedMul(player->mo->ViewHeight, (FRACUNIT - player->crouchfactor)); + // MUSINFO stuff + if (player->MUSINFOtics >= 0 && player->MUSINFOactor != NULL) + { + if (--player->MUSINFOtics < 0) + { + if (player - players == consoleplayer) + { + if (player->MUSINFOactor->args[0] != 0) + { + FName *music = level.info->MusicMap.CheckKey(player->MUSINFOactor->args[0]); + + if (music != NULL) + { + S_ChangeMusic(music->GetChars(), player->MUSINFOactor->args[1]); + } + } + else + { + S_ChangeMusic("*"); + } + } + DPrintf("MUSINFO change for player %d to %d\n", (int)(player - players), player->MUSINFOactor->args[0]); + } + } if (player->playerstate == PST_DEAD) { @@ -3105,6 +3135,10 @@ void player_t::Serialize (FArchive &arc) { userinfo.SkinChanged(skinname, CurrentPlayerClass); } + if (SaveVersion >= 4522) + { + arc << MUSINFOactor << MUSINFOtics; + } } diff --git a/src/s_advsound.cpp b/src/s_advsound.cpp index f7a40da9b..60a6730f6 100644 --- a/src/s_advsound.cpp +++ b/src/s_advsound.cpp @@ -2348,7 +2348,6 @@ class AMusicChanger : public ASectorAction DECLARE_CLASS (AMusicChanger, ASectorAction) public: virtual bool DoTriggerAction (AActor *triggerer, int activationType); - virtual void Tick(); virtual void PostBeginPlay(); }; @@ -2356,49 +2355,27 @@ IMPLEMENT_CLASS(AMusicChanger) bool AMusicChanger::DoTriggerAction (AActor *triggerer, int activationType) { - if (activationType & SECSPAC_Enter) + if (activationType & SECSPAC_Enter && triggerer->player != NULL) { - if (args[0] == 0 || level.info->MusicMap.CheckKey(args[0])) - { - level.nextmusic = args[0]; - reactiontime = 30; + if (triggerer->player->MUSINFOactor != this) + { + triggerer->player->MUSINFOactor = this; + triggerer->player->MUSINFOtics = 30; } } return Super::DoTriggerAction (triggerer, activationType); } -void AMusicChanger::Tick() -{ - Super::Tick(); - if (reactiontime > -1 && --reactiontime == 0) - { - // Is it our music that's queued for being played? - if (level.nextmusic == args[0]) - { - if (args[0] != 0) - { - FName *music = level.info->MusicMap.CheckKey(args[0]); - - if (music != NULL) - { - S_ChangeMusic(music->GetChars(), args[1]); - } - } - else - { - S_ChangeMusic("*"); - } - } - } - } - void AMusicChanger::PostBeginPlay() { // The music changer should consider itself activated if the player // spawns in its sector as well as if it enters the sector during a P_TryMove. Super::PostBeginPlay(); - if (players[consoleplayer].mo && players[consoleplayer].mo->Sector == this->Sector) + for (int i = 0; i < MAXPLAYERS; ++i) { - TriggerAction(players[consoleplayer].mo, SECSPAC_Enter); + if (playeringame[i] && players[i].mo && players[i].mo->Sector == this->Sector) + { + TriggerAction(players[i].mo, SECSPAC_Enter); + } } } diff --git a/src/version.h b/src/version.h index de33e93a7..7f6d9cedd 100644 --- a/src/version.h +++ b/src/version.h @@ -76,7 +76,7 @@ const char *GetVersionString(); // Use 4500 as the base git save version, since it's higher than the // SVN revision ever got. -#define SAVEVER 4521 +#define SAVEVER 4522 #define SAVEVERSTRINGIFY2(x) #x #define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x) From 5d27bf77426c9a0658e9da6e61019861bc22a0c7 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 27 Mar 2015 00:25:53 -0500 Subject: [PATCH 013/144] Add Windows 8+ related bits to the manifest --- src/win32/i_system.cpp | 39 +++++++++++++----------------------- src/win32/zdoom.exe.manifest | 19 ++++++++++++++++++ zdoom.vcproj | 20 ++++++++++-------- 3 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/win32/i_system.cpp b/src/win32/i_system.cpp index 71cc42af0..2dabe7de9 100644 --- a/src/win32/i_system.cpp +++ b/src/win32/i_system.cpp @@ -561,37 +561,26 @@ void I_DetectOS(void) { if (info.dwMinorVersion == 0) { - if (info.wProductType == VER_NT_WORKSTATION) - { - osname = "Vista"; - } - else - { - osname = "Server 2008"; - } + osname = (info.wProductType == VER_NT_WORKSTATION) ? "Vista" : "Server 2008"; } else if (info.dwMinorVersion == 1) { - if (info.wProductType == VER_NT_WORKSTATION) - { - osname = "7"; - } - else - { - osname = "Server 2008 R2"; - } + osname = (info.wProductType == VER_NT_WORKSTATION) ? "7" : "Server 2008 R2"; } else if (info.dwMinorVersion == 2) { - // Microsoft broke this API for 8.1 so without jumping through hoops it won't be possible anymore to detect never versions aside from the build number, especially for older compilers. - if (info.wProductType == VER_NT_WORKSTATION) - { - osname = "8 (or higher)"; - } - else - { - osname = "Server 2012 (or higher)"; - } + // Starting with Windows 8.1, you need to specify in your manifest + // the highest version of Windows you support, which will also be the + // highest version of Windows this function returns. + osname = (info.wProductType == VER_NT_WORKSTATION) ? "8" : "Server 2012"; + } + else if (info.dwMinorVersion == 3) + { + osname = (info.wProductType == VER_NT_WORKSTATION) ? "8.1" : "Server 2012 R2"; + } + else if (info.dwMinorVersion == 4) + { + osname = (info.wProductType == VER_NT_WORKSTATION) ? "10 (or higher)" : "Server 10 (or higher)"; } } break; diff --git a/src/win32/zdoom.exe.manifest b/src/win32/zdoom.exe.manifest index 4aee7a96c..0d2074069 100644 --- a/src/win32/zdoom.exe.manifest +++ b/src/win32/zdoom.exe.manifest @@ -5,4 +5,23 @@ + + + true + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zdoom.vcproj b/zdoom.vcproj index 21aaccb8e..a6a94cafe 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -117,6 +117,7 @@ /> @@ -233,6 +234,7 @@ /> + + + + @@ -2632,14 +2644,6 @@ RelativePath=".\src\oplsynth\opl_mus_player.h" > - - - - From 66c3c93529bd9ba0290cb984bc29998a005755c9 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 09:03:44 +0100 Subject: [PATCH 014/144] - call TakeSpecialDamage, even if damage is 0, just like it was in older versions. --- src/p_interaction.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index ec3947cc0..74278153d 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1129,8 +1129,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, return -1; } } - if (damage > 0) - damage = target->TakeSpecialDamage (inflictor, source, damage, mod); + damage = target->TakeSpecialDamage (inflictor, source, damage, mod); } if (damage == -1 && target->player == NULL) //Make sure it's not a player, the pain has yet to be processed with cheats. { From c78fdae31d4f80e2733286090eae79daa5138951 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 09:25:26 +0100 Subject: [PATCH 015/144] - beautification of A_BFGSpray. Reordered checks so that only one 'spray != NULL' is needed, removed redundant thingToHit variable and reformatted slightly. --- src/g_doom/a_doomweaps.cpp | 63 +++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/src/g_doom/a_doomweaps.cpp b/src/g_doom/a_doomweaps.cpp index 05e1677c6..6dbf3d1ec 100644 --- a/src/g_doom/a_doomweaps.cpp +++ b/src/g_doom/a_doomweaps.cpp @@ -584,7 +584,6 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray) int j; int damage; angle_t an; - AActor *thingToHit; AActor *linetarget; ACTION_PARAM_START(7); @@ -615,42 +614,42 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BFGSpray) // self->target is the originator (player) of the missile P_AimLineAttack(self->target, an, distance, &linetarget, vrange); - if (!linetarget) - continue; - - AActor *spray = Spawn(spraytype, linetarget->x, linetarget->y, - linetarget->z + (linetarget->height >> 2), ALLOW_REPLACE); - - if (spray) + if (linetarget != NULL) { - if (spray->flags6 & MF6_MTHRUSPECIES && spray->GetSpecies() == linetarget->GetSpecies()) + AActor *spray = Spawn(spraytype, linetarget->x, linetarget->y, + linetarget->z + (linetarget->height >> 2), ALLOW_REPLACE); + + int dmgFlags = 0; + FName dmgType = NAME_BFGSplash; + + if (spray != NULL) { - spray->Destroy(); // [MC] Remove it because technically, the spray isn't trying to "hit" them. - continue; + if (spray->flags6 & MF6_MTHRUSPECIES && spray->GetSpecies() == linetarget->GetSpecies()) + { + spray->Destroy(); // [MC] Remove it because technically, the spray isn't trying to "hit" them. + continue; + } + if (spray->flags5 & MF5_PUFFGETSOWNER) spray->target = self->target; + if (spray->flags3 & MF3_FOILINVUL) dmgFlags |= DMG_FOILINVUL; + if (spray->flags7 & MF7_FOILBUDDHA) dmgFlags |= DMG_FOILBUDDHA; + dmgType = spray->DamageType; } - if (spray->flags5 & MF5_PUFFGETSOWNER) - spray->target = self->target; - } - if (defdamage == 0) - { - damage = 0; - for (j = 0; j < damagecnt; ++j) - damage += (pr_bfgspray() & 7) + 1; - } - else - { - // if this is used, damagecnt will be ignored - damage = defdamage; - } + if (defdamage == 0) + { + damage = 0; + for (j = 0; j < damagecnt; ++j) + damage += (pr_bfgspray() & 7) + 1; + } + else + { + // if this is used, damagecnt will be ignored + damage = defdamage; + } - int dmgFlagPass = 0; - dmgFlagPass += (spray != NULL && (spray->flags3 & MF3_FOILINVUL)) ? DMG_FOILINVUL : 0; //[MC]Because the original foilinvul wasn't working. - dmgFlagPass += (spray != NULL && (spray->flags7 & MF7_FOILBUDDHA)) ? DMG_FOILBUDDHA : 0; - thingToHit = linetarget; - int newdam = P_DamageMobj (thingToHit, self->target, self->target, damage, spray != NULL? FName(spray->DamageType) : FName(NAME_BFGSplash), - dmgFlagPass); - P_TraceBleed (newdam > 0 ? newdam : damage, thingToHit, self->target); + int newdam = P_DamageMobj(linetarget, self->target, self->target, damage, dmgType, dmgFlags); + P_TraceBleed(newdam > 0 ? newdam : damage, linetarget, self->target); + } } } From 602f541e31551ba29c060f7e1dfab9b71c42cf10 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 09:40:47 +0100 Subject: [PATCH 016/144] - use '|', not '+' to combine flags. There's probably going to be more of these coming... --- src/thingdef/thingdef_codeptr.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index fc577afcd..e1a2c7f6a 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -5234,17 +5234,17 @@ static void DoDamage(AActor *dmgtarget, AActor *self, int amount, FName DamageTy { int dmgFlags = 0; if (flags & DMSS_FOILINVUL) - dmgFlags += DMG_FOILINVUL; + dmgFlags |= DMG_FOILINVUL; if (flags & DMSS_FOILBUDDHA) - dmgFlags += DMG_FOILBUDDHA; - if ((flags & DMSS_KILL) || (flags & DMSS_NOFACTOR)) //Kill implies NoFactor - dmgFlags += DMG_NO_FACTOR; + dmgFlags |= DMG_FOILBUDDHA; + if (flags & (DMSS_KILL | DMSS_NOFACTOR)) //Kill implies NoFactor + dmgFlags |= DMG_NO_FACTOR; if (!(flags & DMSS_AFFECTARMOR) || (flags & DMSS_KILL)) //Kill overrides AffectArmor - dmgFlags += DMG_NO_ARMOR; + dmgFlags |= DMG_NO_ARMOR; if (flags & DMSS_KILL) //Kill adds the value of the damage done to it. Allows for more controlled extreme death types. amount += dmgtarget->health; if (flags & DMSS_NOPROTECT) //Ignore PowerProtection. - dmgFlags += DMG_NO_PROTECT; + dmgFlags |= DMG_NO_PROTECT; if (amount > 0) P_DamageMobj(dmgtarget, self, self, amount, DamageType, dmgFlags); //Should wind up passing them through just fine. @@ -5412,12 +5412,12 @@ static void DoKill(AActor *killtarget, AActor *self, FName damagetype, int flags speciespass = DoCheckSpecies(killtarget, species, (flags & KILS_EXSPECIES) ? true : false); if ((flags & KILS_EITHER) ? (filterpass || speciespass) : (filterpass && speciespass)) //Check this first. I think it'll save the engine a lot more time this way. { - int dmgFlags = DMG_NO_ARMOR + DMG_NO_FACTOR; + int dmgFlags = DMG_NO_ARMOR | DMG_NO_FACTOR; if (KILS_FOILINVUL) - dmgFlags += DMG_FOILINVUL; + dmgFlags |= DMG_FOILINVUL; if (KILS_FOILBUDDHA) - dmgFlags += DMG_FOILBUDDHA; + dmgFlags |= DMG_FOILBUDDHA; if ((killtarget->flags & MF_MISSILE) && (flags & KILS_KILLMISSILES)) @@ -5426,7 +5426,8 @@ static void DoKill(AActor *killtarget, AActor *self, FName damagetype, int flags //Check to see if it's invulnerable. Disregarded if foilinvul is on, but never works on a missile with NODAMAGE //since that's the whole point of it. if ((!(killtarget->flags2 & MF2_INVULNERABLE) || (flags & KILS_FOILINVUL)) && - (!(killtarget->flags2 & MF7_BUDDHA) || (flags & KILS_FOILBUDDHA)) && !(killtarget->flags5 & MF5_NODAMAGE)) + (!(killtarget->flags2 & MF7_BUDDHA) || (flags & KILS_FOILBUDDHA)) && + !(killtarget->flags5 & MF5_NODAMAGE)) { P_ExplodeMissile(killtarget, NULL, NULL); } From 19cea0f626ddc40b2ecebbbb7bfca6a5e2a39748 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 09:57:33 +0100 Subject: [PATCH 017/144] - fixed: DoCheckSpecies got an actor's species by directly reading the 'species' variable, bypassing initialization in GetSpecies. - cleaned up DoCheckSpecies and DoCheckFilter which both contained several redundant checks and renamed DoCheckFilter to DoCheckClass. --- src/thingdef/thingdef_codeptr.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index e1a2c7f6a..934f4cc4c 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -5186,15 +5186,18 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetSpeed) ref->Speed = speed; } -static bool DoCheckSpecies(AActor *mo, FName species, bool exclude) +static bool DoCheckSpecies(AActor *mo, FName filterSpecies, bool exclude) { - return (!(species) || mo->Species == NAME_None || (species && ((exclude) ? (mo->Species != species) : (mo->Species == species)))); + FName actorSpecies = mo->GetSpecies(); + if (filterSpecies == NAME_None) return true; + return exclude ? (actorSpecies != filterSpecies) : (actorSpecies == filterSpecies); } -static bool DoCheckFilter(AActor *mo, const PClass *filter, bool exclude) +static bool DoCheckClass(AActor *mo, const PClass *filterClass, bool exclude) { - const PClass *c1 = mo->GetClass(); - return (!(filter) || (filter == NULL) || (filter && ((exclude) ? (c1 != filter) : (c1 == filter)))); + const PClass *actorClass = mo->GetClass(); + if (filterClass == NULL) return true; + return exclude ? (actorClass != filterClass) : (actorClass == filterClass); } //=========================================================================== @@ -5228,8 +5231,8 @@ enum DMSS static void DoDamage(AActor *dmgtarget, AActor *self, int amount, FName DamageType, int flags, const PClass *filter, FName species) { - bool filterpass = DoCheckFilter(dmgtarget, filter, (flags & DMSS_EXFILTER) ? true : false), - speciespass = DoCheckSpecies(dmgtarget, species, (flags & DMSS_EXSPECIES) ? true : false); + bool filterpass = DoCheckClass(dmgtarget, filter, !!(flags & DMSS_EXFILTER)), + speciespass = DoCheckSpecies(dmgtarget, species, !!(flags & DMSS_EXSPECIES)); if ((flags & DMSS_EITHER) ? (filterpass || speciespass) : (filterpass && speciespass)) { int dmgFlags = 0; @@ -5408,8 +5411,8 @@ enum KILS static void DoKill(AActor *killtarget, AActor *self, FName damagetype, int flags, const PClass *filter, FName species) { - bool filterpass = DoCheckFilter(killtarget, filter, (flags & KILS_EXFILTER) ? true : false), - speciespass = DoCheckSpecies(killtarget, species, (flags & KILS_EXSPECIES) ? true : false); + bool filterpass = DoCheckClass(killtarget, filter, !!(flags & KILS_EXFILTER)), + speciespass = DoCheckSpecies(killtarget, species, !!(flags & KILS_EXSPECIES)); if ((flags & KILS_EITHER) ? (filterpass || speciespass) : (filterpass && speciespass)) //Check this first. I think it'll save the engine a lot more time this way. { int dmgFlags = DMG_NO_ARMOR | DMG_NO_FACTOR; @@ -5569,8 +5572,8 @@ enum RMVF_flags static void DoRemove(AActor *removetarget, int flags, const PClass *filter, FName species) { - bool filterpass = DoCheckFilter(removetarget, filter, (flags & RMVF_EXFILTER) ? true : false), - speciespass = DoCheckSpecies(removetarget, species, (flags & RMVF_EXSPECIES) ? true : false); + bool filterpass = DoCheckClass(removetarget, filter, !!(flags & RMVF_EXFILTER)), + speciespass = DoCheckSpecies(removetarget, species, !!(flags & RMVF_EXSPECIES)); if ((flags & RMVF_EITHER) ? (filterpass || speciespass) : (filterpass && speciespass)) { if ((flags & RMVF_EVERYTHING)) From 375c0ac736e3e64b05891685502bfba12b637ae5 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 10:10:22 +0100 Subject: [PATCH 018/144] - cleanup of damage flag handling in P_RailAttack. --- src/p_map.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index 8c6c24828..f858b8a4a 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4243,13 +4243,16 @@ void P_RailAttack(AActor *source, int damage, int offset_xy, fixed_t offset_z, i P_SpawnPuff(source, puffclass, x, y, z, (source->angle + angleoffset) - ANG90, 1, puffflags, hitactor); } - if (puffDefaults && puffDefaults->PoisonDamage > 0 && puffDefaults->PoisonDuration != INT_MIN) - { - P_PoisonMobj(hitactor, thepuff ? thepuff : source, source, puffDefaults->PoisonDamage, puffDefaults->PoisonDuration, puffDefaults->PoisonPeriod, puffDefaults->PoisonDamageType); - } int dmgFlagPass = DMG_INFLICTOR_IS_PUFF; - dmgFlagPass += (puffDefaults->flags3 & MF3_FOILINVUL) ? DMG_FOILINVUL : 0; //[MC]Because the original foilinvul check wasn't working. - dmgFlagPass += (puffDefaults->flags7 & MF7_FOILBUDDHA) ? DMG_FOILBUDDHA : 0; + if (puffDefaults != NULL) // is this even possible? + { + if (puffDefaults->PoisonDamage > 0 && puffDefaults->PoisonDuration != INT_MIN) + { + P_PoisonMobj(hitactor, thepuff ? thepuff : source, source, puffDefaults->PoisonDamage, puffDefaults->PoisonDuration, puffDefaults->PoisonPeriod, puffDefaults->PoisonDamageType); + } + if (puffDefaults->flags3 & MF3_FOILINVUL) dmgFlagPass |= DMG_FOILINVUL; + if (puffDefaults->flags7 & MF7_FOILBUDDHA) dmgFlagPass |= DMG_FOILBUDDHA; + } int newdam = P_DamageMobj(hitactor, thepuff ? thepuff : source, source, damage, damagetype, dmgFlagPass); if (bleed) From c78b9235a87335d59f58094e124056e67d0a815a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 11:50:27 +0100 Subject: [PATCH 019/144] - DoSpecialDamage was formerly called for any damage value, removed check for 'damage > 0' to restore original behavior. --- src/p_interaction.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 74278153d..6e5fc3776 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1065,8 +1065,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, return -1; } } - if (damage > 0) - damage = inflictor->DoSpecialDamage (target, damage, mod); + damage = inflictor->DoSpecialDamage (target, damage, mod); if ((damage == -1) && (target->player == NULL)) //This isn't meant for the player. { From ac7abca6f8ddd614d1363af3341e9b23194372f2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 11:55:11 +0100 Subject: [PATCH 020/144] - completely removed fakePain check in case DoSpecialDamage returns -1. This signifies a special case that should bypass anything that inflicting pain implies. --- src/p_interaction.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 6e5fc3776..032f5e162 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1066,11 +1066,8 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, } } damage = inflictor->DoSpecialDamage (target, damage, mod); - - if ((damage == -1) && (target->player == NULL)) //This isn't meant for the player. + if (damage == -1) { - if (fakedPain) //Hold off ending the function before we can deal the pain chances. - goto fakepain; return -1; } } From 9d5e6d32c7d07f09286703d8d4c8b47ef0530e1d Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 13:49:47 +0100 Subject: [PATCH 021/144] - review of P_DamageMobj: * decided that the pain threshold should always be checked against the actual damage, even if it's down to 0, for consistency. This also restores the original behavior of using actual damage for checking the pain threshold which was altered by the introduction of the ALLOWPAIN and CAUSEPAIN flags. * removed all newly added exceptions that excluded the player from checks for completely cancelled out damage. * if anything during damage modification causes negative damage, no pain handling whatsoever will be initiated. * made sure that TELEFRAG_DAMAGE will not be subjected to damage amount modification by protection items and any other kind of damage modification. --- src/p_interaction.cpp | 130 +++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 71 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 032f5e162..ed9635269 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -989,9 +989,11 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, { if (fakedPain) { - invulpain = true; //This returns -1 later. - fakeDamage = damage; - goto fakepain; //The label is above the massive pile of checks. + // big mess here: What do we use for the pain threshold? + // We cannot run the various damage filters below so for consistency it needs to be 0. + damage = 0; + invulpain = true; + goto fakepain; } else return -1; @@ -1010,12 +1012,6 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, } } - if ((fakedPain) && (damage < TELEFRAG_DAMAGE)) - { - //Intentionally do not jump to fakepain because the damage hasn't been dished out yet. - //Once it's dished out, THEN we can disregard damage factors affecting pain chances. - fakeDamage = damage; - } if (inflictor != NULL) { @@ -1035,16 +1031,15 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, { target->velx = target->vely = target->velz = 0; } - if (!(flags & DMG_FORCED)) // DMG_FORCED skips all special damage checks + if (!(flags & DMG_FORCED) && damage < TELEFRAG_DAMAGE) // DMG_FORCED skips all special damage checks, TELEFRAG_DAMAGE may not be reduced at all { if (target->flags2 & MF2_DORMANT) { // Invulnerable, and won't wake up return -1; } - player = target->player; - if (player && damage > 1 && damage < TELEFRAG_DAMAGE) + if (player && damage > 1) { // Take half damage in trainer mode damage = FixedMul(damage, G_SkillProperty(SKILLP_DamageFactor)); @@ -1065,78 +1060,69 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, return -1; } } + damage = inflictor->DoSpecialDamage (target, damage, mod); - if (damage == -1) + if (damage < 0) { return -1; } } - // Handle active damage modifiers (e.g. PowerDamage) - if (source != NULL) + + int olddam = damage; + + if (damage > 0 && source != NULL) { - int olddam = damage; - - if (source->Inventory != NULL) - { - source->Inventory->ModifyDamage(olddam, mod, damage, false); - } damage = FixedMul(damage, source->DamageMultiply); - - if (((source->flags7 & MF7_CAUSEPAIN) && (fakeDamage <= 0)) || (olddam != damage && damage <= 0)) - { // Still allow FORCEPAIN - if (forcedPain) - goto dopain; - else if (fakedPain) - goto fakepain; - - return -1; + + // Handle active damage modifiers (e.g. PowerDamage) + if (damage > 0 && source->Inventory != NULL) + { + source->Inventory->ModifyDamage(damage, mod, damage, false); } } // Handle passive damage modifiers (e.g. PowerProtection), provided they are not afflicted with protection penetrating powers. - if ((target->Inventory != NULL) && !(flags & DMG_NO_PROTECT)) + if (damage > 0 && (target->Inventory != NULL) && !(flags & DMG_NO_PROTECT)) { - int olddam = damage; - target->Inventory->ModifyDamage(olddam, mod, damage, true); - if ((olddam != damage && damage <= 0) && target->player == NULL) - { // Still allow FORCEPAIN and make sure we're still passing along fake damage to hit enemies for their pain states. - if (forcedPain) - goto dopain; - else if (fakedPain) - goto fakepain; - - return -1; - } + target->Inventory->ModifyDamage(damage, mod, damage, true); } - - if (!(flags & DMG_NO_FACTOR)) + if (damage > 0 && !(flags & DMG_NO_FACTOR)) { damage = FixedMul(damage, target->DamageFactor); if (damage > 0) { damage = DamageTypeDefinition::ApplyMobjDamageFactor(damage, mod, target->GetClass()->ActorInfo->DamageFactors); } - if (damage <= 0 && target->player == NULL) + } + + if (damage > 0) + { + damage = target->TakeSpecialDamage(inflictor, source, damage, mod); + } + + // '<0' is handled below. This only handles the case where damage gets reduced to 0. + if (damage == 0 && olddam > 0) + { { // Still allow FORCEPAIN if (forcedPain) + { goto dopain; + } else if (fakedPain) + { goto fakepain; - + } return -1; } } - damage = target->TakeSpecialDamage (inflictor, source, damage, mod); } - if (damage == -1 && target->player == NULL) //Make sure it's not a player, the pain has yet to be processed with cheats. + if (damage < 0) { - if (fakedPain) - goto fakepain; - + // any negative value means that something in the above chain has cancelled out all damage and all damage effects, including pain. return -1; } // Push the target unless the source's weapon's kickback is 0. // (i.e. Gauntlets/Chainsaw) - if (!(plrDontThrust) && inflictor && inflictor != target // [RH] Not if hurting own self + if (!plrDontThrust && inflictor && inflictor != target // [RH] Not if hurting own self && !(target->flags & MF_NOCLIP) && !(inflictor->flags2 & MF2_NODMGTHRUST) && !(flags & DMG_THRUSTLESS) @@ -1177,10 +1163,11 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, { fltthrust = clamp((damage * 0.125 * kickback) / target->Mass, 0., fltthrust); } + thrust = FLOAT2FIXED(fltthrust); - // Don't apply ultra-small damage thrust. - if (thrust < FRACUNIT / 100) - thrust = 0; + + // Don't apply ultra-small damage thrust + if (thrust < FRACUNIT/100) thrust = 0; // make fall forwards sometimes if ((damage < 40) && (damage > target->health) @@ -1189,7 +1176,8 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, // [RH] But only if not too fast and not flying && thrust < 10*FRACUNIT && !(target->flags & MF_NOGRAVITY) - && (inflictor == NULL || !(inflictor->flags5 & MF5_NOFORWARDFALL))) + && (inflictor == NULL || !(inflictor->flags5 & MF5_NOFORWARDFALL)) + ) { ang += ANG180; thrust *= 4; @@ -1225,8 +1213,22 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, if (damage < TELEFRAG_DAMAGE) { // Still allow telefragging :-( damage = (int)((float)damage * level.teamdamage); - if (damage <= 0) + if (damage < 0) + { return damage; + } + else if (damage == 0) + { + if (forcedPain) + { + goto dopain; + } + else if (fakedPain) + { + goto fakepain; + } + return -1; + } } } @@ -1263,7 +1265,6 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, else if ((((player->mo->flags7 & MF7_ALLOWPAIN) || (player->mo->flags5 & MF5_NODAMAGE)) || ((inflictor != NULL) && (inflictor->flags7 & MF7_CAUSEPAIN)))) { invulpain = true; - fakeDamage = damage; goto fakepain; } else @@ -1446,15 +1447,6 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, fakepain: //Needed so we can skip the rest of the above, but still obey the original rules. - //CAUSEPAIN can always attempt to trigger the chances of pain. - //ALLOWPAIN can do the same, only if the (unfiltered aka fake) damage is greater than 0. - if (((target->flags7 & MF7_ALLOWPAIN) && (fakeDamage > 0)) - || ((inflictor != NULL) && (inflictor->flags7 & MF7_CAUSEPAIN))) - { - holdDamage = damage; //Store the modified damage away after factors are taken into account. - damage = fakeDamage; //Retrieve the original damage. - } - if (!(target->flags5 & MF5_NOPAIN) && (inflictor == NULL || !(inflictor->flags5 & MF5_PAINLESS)) && (target->player != NULL || !G_SkillProperty(SKILLP_NoPain)) && !(target->flags & MF_SKULLFLY)) { @@ -1550,10 +1542,6 @@ dopain: { return -1; //NOW we return -1! } - else if (fakedPain) - { - return holdDamage; //This is the calculated damage after all is said and done. - } return damage; } From eb78c241406a7f84fc11ee799133a5a8c8a0a589 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 14:37:13 +0100 Subject: [PATCH 022/144] - small oversight: TakeSpecialDamage must be called if damage is 0 (to do the special death state checks) but it may not be called if damage is already -1, because that means that damage and pain have already been ruled out completely. --- src/p_interaction.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index ed9635269..3b5049ba6 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1094,7 +1094,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, } } - if (damage > 0) + if (damage >= 0) { damage = target->TakeSpecialDamage(inflictor, source, damage, mod); } From 164d523ecae776ab272347f80829f9eb6f2e36c0 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 16:58:21 +0100 Subject: [PATCH 023/144] - fixed incorrect flags word access. --- src/thingdef/thingdef_codeptr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index 934f4cc4c..f6e3425bc 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -5429,7 +5429,7 @@ static void DoKill(AActor *killtarget, AActor *self, FName damagetype, int flags //Check to see if it's invulnerable. Disregarded if foilinvul is on, but never works on a missile with NODAMAGE //since that's the whole point of it. if ((!(killtarget->flags2 & MF2_INVULNERABLE) || (flags & KILS_FOILINVUL)) && - (!(killtarget->flags2 & MF7_BUDDHA) || (flags & KILS_FOILBUDDHA)) && + (!(killtarget->flags7 & MF7_BUDDHA) || (flags & KILS_FOILBUDDHA)) && !(killtarget->flags5 & MF5_NODAMAGE)) { P_ExplodeMissile(killtarget, NULL, NULL); From 94a04f36e5a82fe829541ec80034a43fb7f5780e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 17:06:56 +0100 Subject: [PATCH 024/144] - fixed: Dormant monsters should not be telefraggable. --- src/p_interaction.cpp | 125 +++++++++++++++++++++--------------------- 1 file changed, 64 insertions(+), 61 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 3b5049ba6..3b9d78710 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1031,87 +1031,90 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, { target->velx = target->vely = target->velz = 0; } - if (!(flags & DMG_FORCED) && damage < TELEFRAG_DAMAGE) // DMG_FORCED skips all special damage checks, TELEFRAG_DAMAGE may not be reduced at all + if (!(flags & DMG_FORCED)) // DMG_FORCED skips all special damage checks, TELEFRAG_DAMAGE may not be reduced at all { if (target->flags2 & MF2_DORMANT) { // Invulnerable, and won't wake up return -1; } - player = target->player; - if (player && damage > 1) + if (damage < TELEFRAG_DAMAGE) // TELEFRAG_DAMAGE may not be reduced at all or it may not guarantee its effect. { - // Take half damage in trainer mode - damage = FixedMul(damage, G_SkillProperty(SKILLP_DamageFactor)); - } - // Special damage types - if (inflictor) - { - if (inflictor->flags4 & MF4_SPECTRAL) + player = target->player; + if (player && damage > 1) { - if (player != NULL) + // Take half damage in trainer mode + damage = FixedMul(damage, G_SkillProperty(SKILLP_DamageFactor)); + } + // Special damage types + if (inflictor) + { + if (inflictor->flags4 & MF4_SPECTRAL) { - if (!deathmatch && inflictor->FriendPlayer > 0) - return -1; + if (player != NULL) + { + if (!deathmatch && inflictor->FriendPlayer > 0) + return -1; + } + else if (target->flags4 & MF4_SPECTRAL) + { + if (inflictor->FriendPlayer == 0 && !target->IsHostile(inflictor)) + return -1; + } } - else if (target->flags4 & MF4_SPECTRAL) + + damage = inflictor->DoSpecialDamage(target, damage, mod); + if (damage < 0) { - if (inflictor->FriendPlayer == 0 && !target->IsHostile(inflictor)) - return -1; + return -1; } } - damage = inflictor->DoSpecialDamage (target, damage, mod); - if (damage < 0) + int olddam = damage; + + if (damage > 0 && source != NULL) { - return -1; - } - } + damage = FixedMul(damage, source->DamageMultiply); - int olddam = damage; - - if (damage > 0 && source != NULL) - { - damage = FixedMul(damage, source->DamageMultiply); - - // Handle active damage modifiers (e.g. PowerDamage) - if (damage > 0 && source->Inventory != NULL) - { - source->Inventory->ModifyDamage(damage, mod, damage, false); - } - } - // Handle passive damage modifiers (e.g. PowerProtection), provided they are not afflicted with protection penetrating powers. - if (damage > 0 && (target->Inventory != NULL) && !(flags & DMG_NO_PROTECT)) - { - target->Inventory->ModifyDamage(damage, mod, damage, true); - } - if (damage > 0 && !(flags & DMG_NO_FACTOR)) - { - damage = FixedMul(damage, target->DamageFactor); - if (damage > 0) - { - damage = DamageTypeDefinition::ApplyMobjDamageFactor(damage, mod, target->GetClass()->ActorInfo->DamageFactors); - } - } - - if (damage >= 0) - { - damage = target->TakeSpecialDamage(inflictor, source, damage, mod); - } - - // '<0' is handled below. This only handles the case where damage gets reduced to 0. - if (damage == 0 && olddam > 0) - { - { // Still allow FORCEPAIN - if (forcedPain) + // Handle active damage modifiers (e.g. PowerDamage) + if (damage > 0 && source->Inventory != NULL) { - goto dopain; + source->Inventory->ModifyDamage(damage, mod, damage, false); } - else if (fakedPain) + } + // Handle passive damage modifiers (e.g. PowerProtection), provided they are not afflicted with protection penetrating powers. + if (damage > 0 && (target->Inventory != NULL) && !(flags & DMG_NO_PROTECT)) + { + target->Inventory->ModifyDamage(damage, mod, damage, true); + } + if (damage > 0 && !(flags & DMG_NO_FACTOR)) + { + damage = FixedMul(damage, target->DamageFactor); + if (damage > 0) { - goto fakepain; + damage = DamageTypeDefinition::ApplyMobjDamageFactor(damage, mod, target->GetClass()->ActorInfo->DamageFactors); + } + } + + if (damage >= 0) + { + damage = target->TakeSpecialDamage(inflictor, source, damage, mod); + } + + // '<0' is handled below. This only handles the case where damage gets reduced to 0. + if (damage == 0 && olddam > 0) + { + { // Still allow FORCEPAIN + if (forcedPain) + { + goto dopain; + } + else if (fakedPain) + { + goto fakepain; + } + return -1; } - return -1; } } } From 15e0f19fdb489260409797bd2d2e095efe5e5d19 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 17:16:53 +0100 Subject: [PATCH 025/144] - fixed another flags mismatch. --- src/p_interaction.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 3b9d78710..a16069c7b 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1389,7 +1389,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, if (target->health <= 0) { //[MC]Buddha flag for monsters. - if ((target->flags7 & MF7_BUDDHA) && (damage < TELEFRAG_DAMAGE) && ((inflictor == NULL || !(inflictor->flags3 & MF7_FOILBUDDHA)) && !(flags & DMG_FOILBUDDHA))) + if ((target->flags7 & MF7_BUDDHA) && (damage < TELEFRAG_DAMAGE) && ((inflictor == NULL || !(inflictor->flags7 & MF7_FOILBUDDHA)) && !(flags & DMG_FOILBUDDHA))) { //FOILBUDDHA or Telefrag damage must kill it. target->health = 1; } From 25e5ac7e2aeef6bc55cceeea92c5ba5f680ecfcf Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 27 Mar 2015 18:29:57 +0100 Subject: [PATCH 026/144] - fixed: CheckForResurrection should check whether the active translation is actually a blood translation before resetting it, not assuming that GenericCrush is a single state with infinite duration. --- src/p_enemy.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/p_enemy.cpp b/src/p_enemy.cpp index be0646d4b..540aa119e 100644 --- a/src/p_enemy.cpp +++ b/src/p_enemy.cpp @@ -44,6 +44,7 @@ #include "thingdef/thingdef.h" #include "d_dehacked.h" #include "g_level.h" +#include "r_data/r_translate.h" #include "teaminfo.h" #include "gi.h" @@ -2615,7 +2616,7 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates) S_Sound(corpsehit, CHAN_BODY, "vile/raise", 1, ATTN_IDLE); info = corpsehit->GetDefault(); - if (corpsehit->state == corpsehit->FindState(NAME_GenericCrush)) + if (GetTranslationType(corpsehit->Translation) == TRANSLATION_Blood) { corpsehit->Translation = info->Translation; // Clean up bloodcolor translation from crushed corpses } From 267054071fa28e8a82473bafc9f6c32148ad9391 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sat, 28 Mar 2015 12:13:47 +0200 Subject: [PATCH 027/144] Added missing render styles to info console command --- src/p_mobj.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 9102c0472..23fb9cf3c 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -6443,7 +6443,8 @@ void PrintMiscActorInfo(AActor *query) } } static const char * renderstyles[]= {"None", "Normal", "Fuzzy", "SoulTrans", - "OptFuzzy", "Stencil", "Translucent", "Add", "Shaded", "TranslucentStencil"}; + "OptFuzzy", "Stencil", "Translucent", "Add", "Shaded", "TranslucentStencil", + "Shadow", "Subtract", "AddStencil", "AddShaded"}; Printf("%s @ %p has the following flags:\n flags: %x", query->GetTag(), query, query->flags); for (flagi = 0; flagi <= 31; flagi++) From 3849cb86231ce24131a86e9c29795a8cf3706a3d Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 29 Mar 2015 13:02:45 +0200 Subject: [PATCH 028/144] - added precaching of textures via MAPINFO. --- src/g_level.h | 1 + src/g_mapinfo.cpp | 19 +++++++++++++++++++ src/textures/texturemanager.cpp | 6 ++++++ 3 files changed, 26 insertions(+) diff --git a/src/g_level.h b/src/g_level.h index 8a4702639..f94fefa42 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -336,6 +336,7 @@ struct level_info_t TArray specialactions; TArray PrecacheSounds; + TArray PrecacheTextures; level_info_t() { diff --git a/src/g_mapinfo.cpp b/src/g_mapinfo.cpp index 6d49b9c17..306c3645a 100644 --- a/src/g_mapinfo.cpp +++ b/src/g_mapinfo.cpp @@ -1065,6 +1065,25 @@ DEFINE_MAP_OPTION(PrecacheSounds, true) } while (parse.sc.CheckString(",")); } +DEFINE_MAP_OPTION(PrecacheTextures, true) +{ + parse.ParseAssign(); + + do + { + parse.sc.MustGetString(); + FTextureID tex = TexMan.CheckForTexture(parse.sc.String, FTexture::TEX_Wall, FTextureManager::TEXMAN_Overridable|FTextureManager::TEXMAN_TryAny|FTextureManager::TEXMAN_ReturnFirst); + if (!tex.isValid()) + { + parse.sc.ScriptMessage("Unknown texture \"%s\"", parse.sc.String); + } + else + { + info->PrecacheTextures.Push(tex); + } + } while (parse.sc.CheckString(",")); +} + DEFINE_MAP_OPTION(redirect, true) { parse.ParseAssign(); diff --git a/src/textures/texturemanager.cpp b/src/textures/texturemanager.cpp index b8256bc65..be0426e98 100644 --- a/src/textures/texturemanager.cpp +++ b/src/textures/texturemanager.cpp @@ -1243,6 +1243,12 @@ void FTextureManager::PrecacheLevel (void) memset (hitlist, 0, cnt); screen->GetHitlist(hitlist); + + for (unsigned i = 0; i < level.info->PrecacheTextures.Size(); i++) + { + hitlist[level.info->PrecacheTextures[i].GetIndex()] |= 1; + } + for (int i = cnt - 1; i >= 0; i--) { Renderer->PrecacheTexture(ByIndex(i), hitlist[i]); From 5f56fb5a16156a0e227ae9263eedba67141d0a51 Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Mon, 30 Mar 2015 21:54:58 -0400 Subject: [PATCH 029/144] Changed the behavior of SetActorTeleFog. - Don't force "null" to resolve to no actor since "none" is already defined as NULL (via FindClass). (This change also applies to the decorate properties.) - Passing an empty actor name will keep the existing fog since there's otherwise no way set only one fog. Since "none" works to remove the fog, I see no reason not to have this option. --- src/p_acs.cpp | 39 ++++++++++------------------ src/thingdef/thingdef_properties.cpp | 4 +-- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 2bbbc944a..8894bc936 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -4767,25 +4767,19 @@ static void SetActorRoll(AActor *activator, int tid, int angle, bool interpolate } } -static void SetActorTeleFog(AActor *activator, int tid, FName telefogsrc, FName telefogdest) +static void SetActorTeleFog(AActor *activator, int tid, FString telefogsrc, FString telefogdest) { - //Simply put, if it doesn't exist, it won't change. One can use "" in this scenario. - const PClass *check; + // Set the actor's telefog to the specified actor. Handle "" as "don't + // change" since "None" should work just fine for disabling the fog (given + // that it will resolve to NAME_None which is not a valid actor name). if (tid == 0) { if (activator != NULL) { - check = PClass::FindClass(telefogsrc); - if (check == NULL || !stricmp(telefogsrc, "none") || !stricmp(telefogsrc, "null")) - activator->TeleFogSourceType = NULL; - else - activator->TeleFogSourceType = check; - - check = PClass::FindClass(telefogdest); - if (check == NULL || !stricmp(telefogdest, "none") || !stricmp(telefogdest, "null")) - activator->TeleFogDestType = NULL; - else - activator->TeleFogDestType = check; + if (telefogsrc.IsNotEmpty()) + activator->TeleFogSourceType = PClass::FindClass(telefogsrc); + if (telefogdest.IsNotEmpty()) + activator->TeleFogDestType = PClass::FindClass(telefogdest); } } else @@ -4793,19 +4787,14 @@ static void SetActorTeleFog(AActor *activator, int tid, FName telefogsrc, FName FActorIterator iterator(tid); AActor *actor; + const PClass * const src = telefogsrc.IsNotEmpty() ? PClass::FindClass(telefogsrc) : NULL; + const PClass * const dest = telefogdest.IsNotEmpty() ? PClass::FindClass(telefogdest) : NULL; while ((actor = iterator.Next())) { - check = PClass::FindClass(telefogsrc); - if (check == NULL || !stricmp(telefogsrc, "none") || !stricmp(telefogsrc, "null")) - actor->TeleFogSourceType = NULL; - else - actor->TeleFogSourceType = check; - - check = PClass::FindClass(telefogdest); - if (check == NULL || !stricmp(telefogdest, "none") || !stricmp(telefogdest, "null")) - actor->TeleFogDestType = NULL; - else - actor->TeleFogDestType = check; + if (telefogsrc.IsNotEmpty()) + actor->TeleFogSourceType = src; + if (telefogdest.IsNotEmpty()) + actor->TeleFogDestType = dest; } } } diff --git a/src/thingdef/thingdef_properties.cpp b/src/thingdef/thingdef_properties.cpp index 677979276..33066828c 100644 --- a/src/thingdef/thingdef_properties.cpp +++ b/src/thingdef/thingdef_properties.cpp @@ -1422,7 +1422,7 @@ DEFINE_PROPERTY(stamina, I, Actor) DEFINE_PROPERTY(telefogsourcetype, S, Actor) { PROP_STRING_PARM(str, 0); - if (!stricmp(str, "") || (!stricmp(str, "none")) || (!stricmp(str, "null")) || *str == 0) defaults->TeleFogSourceType = NULL; + if (!stricmp(str, "") || !stricmp(str, "none")) defaults->TeleFogSourceType = NULL; else defaults->TeleFogSourceType = FindClassTentative(str,"TeleportFog"); } @@ -1432,7 +1432,7 @@ DEFINE_PROPERTY(telefogsourcetype, S, Actor) DEFINE_PROPERTY(telefogdesttype, S, Actor) { PROP_STRING_PARM(str, 0); - if (!stricmp(str, "") || (!stricmp(str, "none")) || (!stricmp(str, "null")) || *str == 0) defaults->TeleFogDestType = NULL; + if (!stricmp(str, "") || !stricmp(str, "none")) defaults->TeleFogDestType = NULL; else defaults->TeleFogDestType = FindClassTentative(str, "TeleportFog"); } From 4d59190446c60aed6ed37394d9b06d0a3ac86a47 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 31 Mar 2015 09:24:16 +0200 Subject: [PATCH 030/144] - redit commit 5f56fb5a16156a0e227ae9263eedba67141d0a51 without altering the line endings throughout thingdef_codeptr.cpp. * Changed the behavior of SetActorTeleFog. - Don't force "null" to resolve to no actor since "none" is already defined as NULL (via FindClass). (This change also applies to the decorate properties.) - Passing an empty actor name will keep the existing fog since there's otherwise no way set only one fog. Since "none" works to remove the fog, I see no reason not to have this option. --- src/thingdef/thingdef_codeptr.cpp | 26 +++++--------------------- wadsrc/static/actors/actor.txt | 2 +- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index f6e3425bc..cb59f8a1f 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -5726,33 +5726,17 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Remove) // A_SetTeleFog // // Sets the teleport fog(s) for the calling actor. -// Takes a name of the classes for te source and destination. -// Can set both at the same time. Use "" to retain the previous fog without -// changing it. +// Takes a name of the classes for the source and destination. //=========================================================================== DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetTeleFog) { ACTION_PARAM_START(2); - ACTION_PARAM_NAME(oldpos, 0); - ACTION_PARAM_NAME(newpos, 1); - const PClass *check = PClass::FindClass(oldpos); - if (check == NULL || !stricmp(oldpos, "none") || !stricmp(oldpos, "null")) - self->TeleFogSourceType = NULL; - else if (!stricmp(oldpos, "")) - { //Don't change it if it's just "" - } - else - self->TeleFogSourceType = check; + ACTION_PARAM_CLASS(oldpos, 0); + ACTION_PARAM_CLASS(newpos, 1); - check = PClass::FindClass(newpos); - if (check == NULL || !stricmp(newpos, "none") || !stricmp(newpos, "null")) - self->TeleFogDestType = NULL; - else if (!stricmp(newpos, "")) - { //Don't change it if it's just "" - } - else - self->TeleFogDestType = check; + self->TeleFogSourceType = oldpos; + self->TeleFogDestType = newpos; } //=========================================================================== diff --git a/wadsrc/static/actors/actor.txt b/wadsrc/static/actors/actor.txt index f84151d18..d85717ead 100644 --- a/wadsrc/static/actors/actor.txt +++ b/wadsrc/static/actors/actor.txt @@ -325,7 +325,7 @@ ACTOR Actor native //: Thinker action native A_GiveToSiblings(class itemtype, int amount = 0); action native A_TakeFromChildren(class itemtype, int amount = 0); action native A_TakeFromSiblings(class itemtype, int amount = 0); - action native A_SetTeleFog(name oldpos, name newpos); + action native A_SetTeleFog(class oldpos, class newpos); action native A_SwapTeleFog(); action native A_SetFloatBobPhase(int bob); action native A_SetHealth(int health, int ptr = AAPTR_DEFAULT); From 5febac09944fc74c5ce8a72653547aa7835bd6b1 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 31 Mar 2015 15:21:15 +0200 Subject: [PATCH 031/144] - removed incorrect multiplication from FraggleScript's PointToDist function. The problem was introduced by replacing a (fixed_t) type cast with FLOATTOFIXED without removing the value range adjustment. --- src/fragglescript/t_func.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 4825fe06b..0bddcd7fd 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -1420,7 +1420,7 @@ void FParser::SF_PointToDist(void) double y = floatvalue(t_argv[3]) - floatvalue(t_argv[1]); t_return.type = svt_fixed; - t_return.value.f = FLOAT2FIXED(sqrt(x*x+y*y)*65536.f); + t_return.value.f = FLOAT2FIXED(sqrt(x*x+y*y)); } } From d481ba7b5a6ec90234b8ea6ca7fef0e8d6e447d1 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 31 Mar 2015 22:11:16 +0200 Subject: [PATCH 032/144] - fixed: The replacement actors for A_SetTelefog should not require inheriting from TeleportFog. --- wadsrc/static/actors/actor.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wadsrc/static/actors/actor.txt b/wadsrc/static/actors/actor.txt index d85717ead..7d8fad5bf 100644 --- a/wadsrc/static/actors/actor.txt +++ b/wadsrc/static/actors/actor.txt @@ -325,7 +325,7 @@ ACTOR Actor native //: Thinker action native A_GiveToSiblings(class itemtype, int amount = 0); action native A_TakeFromChildren(class itemtype, int amount = 0); action native A_TakeFromSiblings(class itemtype, int amount = 0); - action native A_SetTeleFog(class oldpos, class newpos); + action native A_SetTeleFog(class oldpos, class newpos); action native A_SwapTeleFog(); action native A_SetFloatBobPhase(int bob); action native A_SetHealth(int health, int ptr = AAPTR_DEFAULT); From d940c6a2eecb2b4897433791d897a8712cfe8e3b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 31 Mar 2015 23:15:43 +0200 Subject: [PATCH 033/144] - fixed: With the recent changes to the damage code, the check for MF5_NODAMAGE was too early. Putting it into AActor::TakeSpecialDamage is also not the best idea because that limits that function's potential. --- src/p_interaction.cpp | 5 +++++ src/p_mobj.cpp | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index a16069c7b..a309360c4 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1038,6 +1038,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, // Invulnerable, and won't wake up return -1; } + if (damage < TELEFRAG_DAMAGE) // TELEFRAG_DAMAGE may not be reduced at all or it may not guarantee its effect. { player = target->player; @@ -1116,6 +1117,10 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, return -1; } } + if (target->flags5 & MF5_NODAMAGE) + { + damage = 0; + } } } if (damage < 0) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 23fb9cf3c..c12bd53db 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -6159,11 +6159,6 @@ int AActor::TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FN { FState *death; - if (flags5 & MF5_NODAMAGE) - { - return 0; - } - // If the actor does not have a corresponding death state, then it does not take damage. // Note that DeathState matches every kind of damagetype, so an actor has that, it can // be hurt with any type of damage. Exception: Massacre damage always succeeds, because From 34aeb428a1cd8be2558b532fc85136928e7bac20 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 1 Apr 2015 10:01:48 +0200 Subject: [PATCH 034/144] - Removed the check for this flag from P_RadiusAttack because MF7_CAUSEPAIN cannot be used for radius attacks. Their logic is too different from regular attacks. --- src/p_interaction.cpp | 2 ++ src/p_map.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index a309360c4..74bfc56f4 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -950,6 +950,8 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, int fakeDamage = 0; int holdDamage = 0; + if (damage < 0) damage = 0; + if (target == NULL || !((target->flags & MF_SHOOTABLE) || (target->flags6 & MF6_VULNERABLE))) { // Shouldn't happen return -1; diff --git a/src/p_map.cpp b/src/p_map.cpp index f858b8a4a..2362fbd12 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4790,7 +4790,7 @@ void P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bo points *= thing->GetClass()->Meta.GetMetaFixed(AMETA_RDFactor, FRACUNIT) / (double)FRACUNIT; // points and bombdamage should be the same sign - if (((bombspot->flags7 & MF7_CAUSEPAIN) || (points * bombdamage) > 0) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY)) + if (((points * bombdamage) > 0) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY)) { // OK to damage; target is in direct path double velz; double thrust; From ad9e4413fa3a4b9458d39bf9183db2de0d26a05f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 1 Apr 2015 11:48:47 +0200 Subject: [PATCH 035/144] - made the texture precaching code a bit more self-descriptive after finding a discrepancy in handling between ZDoom and GZDoom's versions. --- src/r_swrenderer.cpp | 2 +- src/textures/texturemanager.cpp | 2 +- src/textures/textures.h | 10 ++++++++++ src/v_video.cpp | 10 +++++----- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/r_swrenderer.cpp b/src/r_swrenderer.cpp index fb54b6f0a..df928b25e 100644 --- a/src/r_swrenderer.cpp +++ b/src/r_swrenderer.cpp @@ -84,7 +84,7 @@ void FSoftwareRenderer::PrecacheTexture(FTexture *tex, int cache) { if (tex != NULL) { - if (cache & 1) + if (cache & FTextureManager::HIT_Columnmode) { const FTexture::Span *spanp; tex->GetColumn(0, &spanp); diff --git a/src/textures/texturemanager.cpp b/src/textures/texturemanager.cpp index be0426e98..2944e4200 100644 --- a/src/textures/texturemanager.cpp +++ b/src/textures/texturemanager.cpp @@ -1246,7 +1246,7 @@ void FTextureManager::PrecacheLevel (void) for (unsigned i = 0; i < level.info->PrecacheTextures.Size(); i++) { - hitlist[level.info->PrecacheTextures[i].GetIndex()] |= 1; + hitlist[level.info->PrecacheTextures[i].GetIndex()] |= FTextureManager::HIT_Wall; } for (int i = cnt - 1; i >= 0; i--) diff --git a/src/textures/textures.h b/src/textures/textures.h index aa8505d4e..cb3680ead 100644 --- a/src/textures/textures.h +++ b/src/textures/textures.h @@ -365,6 +365,16 @@ public: TEXMAN_DontCreate = 32 }; + enum + { + HIT_Wall = 1, + HIT_Flat = 2, + HIT_Sky = 4, + HIT_Sprite = 8, + + HIT_Columnmode = HIT_Wall|HIT_Sky|HIT_Sprite + }; + FTextureID CheckForTexture (const char *name, int usetype, BITFIELD flags=TEXMAN_TryAny); FTextureID GetTexture (const char *name, int usetype, BITFIELD flags=0); int ListTextures (const char *name, TArray &list); diff --git a/src/v_video.cpp b/src/v_video.cpp index 453772886..aaf1aec3d 100644 --- a/src/v_video.cpp +++ b/src/v_video.cpp @@ -1245,7 +1245,7 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) FTextureID pic = frame->Texture[k]; if (pic.isValid()) { - hitlist[pic.GetIndex()] = 1; + hitlist[pic.GetIndex()] = HIT_Sprite; } } } @@ -1257,14 +1257,14 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) for (i = numsectors - 1; i >= 0; i--) { hitlist[sectors[i].GetTexture(sector_t::floor).GetIndex()] = - hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= 2; + hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= HIT_Flat; } for (i = numsides - 1; i >= 0; i--) { hitlist[sides[i].GetTexture(side_t::top).GetIndex()] = hitlist[sides[i].GetTexture(side_t::mid).GetIndex()] = - hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= 1; + hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= HIT_Wall; } // Sky texture is always present. @@ -1276,11 +1276,11 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) if (sky1texture.isValid()) { - hitlist[sky1texture.GetIndex()] |= 1; + hitlist[sky1texture.GetIndex()] |= HIT_Sky; } if (sky2texture.isValid()) { - hitlist[sky2texture.GetIndex()] |= 1; + hitlist[sky2texture.GetIndex()] |= HIT_Sky; } } From 74f4ae86d804b6fdada69133a759850ea41b0e67 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 1 Apr 2015 11:57:10 +0200 Subject: [PATCH 036/144] - forgot to save this... --- src/v_video.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/v_video.cpp b/src/v_video.cpp index aaf1aec3d..d48bd91ae 100644 --- a/src/v_video.cpp +++ b/src/v_video.cpp @@ -1245,7 +1245,7 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) FTextureID pic = frame->Texture[k]; if (pic.isValid()) { - hitlist[pic.GetIndex()] = HIT_Sprite; + hitlist[pic.GetIndex()] = FTextureManager::HIT_Sprite; } } } @@ -1257,14 +1257,14 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) for (i = numsectors - 1; i >= 0; i--) { hitlist[sectors[i].GetTexture(sector_t::floor).GetIndex()] = - hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= HIT_Flat; + hitlist[sectors[i].GetTexture(sector_t::ceiling).GetIndex()] |= FTextureManager::HIT_Flat; } for (i = numsides - 1; i >= 0; i--) { hitlist[sides[i].GetTexture(side_t::top).GetIndex()] = hitlist[sides[i].GetTexture(side_t::mid).GetIndex()] = - hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= HIT_Wall; + hitlist[sides[i].GetTexture(side_t::bottom).GetIndex()] |= FTextureManager::HIT_Wall; } // Sky texture is always present. @@ -1276,11 +1276,11 @@ void DFrameBuffer::GetHitlist(BYTE *hitlist) if (sky1texture.isValid()) { - hitlist[sky1texture.GetIndex()] |= HIT_Sky; + hitlist[sky1texture.GetIndex()] |= FTextureManager::HIT_Sky; } if (sky2texture.isValid()) { - hitlist[sky2texture.GetIndex()] |= HIT_Sky; + hitlist[sky2texture.GetIndex()] |= FTextureManager::HIT_Sky; } } From e70aae91e3dced125206c4b3bbcb7d0bfe6f9743 Mon Sep 17 00:00:00 2001 From: MajorCooke Date: Wed, 1 Apr 2015 10:31:47 -0500 Subject: [PATCH 037/144] - Fixed NODAMAGE not ignoring telefrag damage. --- src/p_interaction.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 74bfc56f4..edcd28c91 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1119,10 +1119,10 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, return -1; } } - if (target->flags5 & MF5_NODAMAGE) - { - damage = 0; - } + } + if (target->flags5 & MF5_NODAMAGE) + { + damage = 0; } } if (damage < 0) From 0a16855232f8a35748052c7ba70c46baf3af48a9 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 2 Apr 2015 10:05:32 +0200 Subject: [PATCH 038/144] - fixed: The assignment to the 'player' variable in P_DamageMobj occured too late, skipping a few cases. - changed monster unblocking logic to include players as well (i.e. a player being stuck inside another actor is allowed to move away from that other actor.) --- src/p_interaction.cpp | 3 ++- src/p_map.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index edcd28c91..3f4147c33 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1033,6 +1033,8 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, { target->velx = target->vely = target->velz = 0; } + + player = target->player; if (!(flags & DMG_FORCED)) // DMG_FORCED skips all special damage checks, TELEFRAG_DAMAGE may not be reduced at all { if (target->flags2 & MF2_DORMANT) @@ -1043,7 +1045,6 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, if (damage < TELEFRAG_DAMAGE) // TELEFRAG_DAMAGE may not be reduced at all or it may not guarantee its effect. { - player = target->player; if (player && damage > 1) { // Take half damage in trainer mode diff --git a/src/p_map.cpp b/src/p_map.cpp index 2362fbd12..1ad1728ce 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -1034,7 +1034,7 @@ bool PIT_CheckThing(AActor *thing, FCheckPosition &tm) // Both things overlap in x or y direction bool unblocking = false; - if (tm.FromPMove) + if (tm.FromPMove || tm.thing->player != NULL) { // Both actors already overlap. To prevent them from remaining stuck allow the move if it // takes them further apart or the move does not change the position (when called from P_ChangeSector.) From 6c07d765db6c0e03a07febe80580d38c5a4c86aa Mon Sep 17 00:00:00 2001 From: Edoardo Prezioso Date: Thu, 2 Apr 2015 13:18:37 +0200 Subject: [PATCH 039/144] - Fixed a wrong linux macro in an ifdef. --- src/cmdlib.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmdlib.cpp b/src/cmdlib.cpp index 557c80cf8..b3c406ee0 100644 --- a/src/cmdlib.cpp +++ b/src/cmdlib.cpp @@ -957,7 +957,7 @@ void ScanDirectory(TArray &list, const char *dirpath) } } -#elif defined(__sun) || defined(linux) +#elif defined(__sun) || defined(__linux__) //========================================================================== // From e07f64a23ac240366dcbb5947e7e381150ec222d Mon Sep 17 00:00:00 2001 From: Edoardo Prezioso Date: Thu, 2 Apr 2015 13:19:48 +0200 Subject: [PATCH 040/144] - Increase the SDL crashinfo char buffer to 4 KB. This helps the crash catcher when there are numerous wad files, for which it's possible that either the wad list, the map or the position is truncated. A more reliable alternative to this should be allocating the char buffer, but I never heard about a way to do this reliably during signal handling. --- src/posix/sdl/crashcatcher.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/posix/sdl/crashcatcher.c b/src/posix/sdl/crashcatcher.c index 4754a369a..f85713e31 100644 --- a/src/posix/sdl/crashcatcher.c +++ b/src/posix/sdl/crashcatcher.c @@ -37,7 +37,7 @@ static struct { pid_t pid; int has_siginfo; siginfo_t siginfo; - char buf[1024]; + char buf[4096]; } crash_info; From a88f515364c1cfa67b67833181bdee040d252559 Mon Sep 17 00:00:00 2001 From: Edoardo Prezioso Date: Thu, 2 Apr 2015 13:27:52 +0200 Subject: [PATCH 041/144] - Import GAMENAMELOWERCASE macro from Zandronum. This will greatly help reducing the code delta between ZDoom and the child ports. --- src/d_iwad.cpp | 15 ++++++++------- src/m_specialpaths.cpp | 18 +++++++++--------- src/posix/sdl/i_main.cpp | 2 +- src/version.h | 3 ++- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 393ca11cc..4bb53e3fe 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -47,6 +47,7 @@ #include "v_video.h" #include "gameconfigfile.h" #include "resourcefiles/resourcefile.h" +#include "version.h" CVAR (Bool, queryiwad, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); @@ -504,19 +505,19 @@ int FIWadManager::IdentifyVersion (TArray &wadfiles, const char *iwad, if (numwads == 0) { I_FatalError ("Cannot find a game IWAD (doom.wad, doom2.wad, heretic.wad, etc.).\n" - "Did you install ZDoom properly? You can do either of the following:\n" + "Did you install " GAMENAME " properly? You can do either of the following:\n" "\n" #if defined(_WIN32) - "1. Place one or more of these wads in the same directory as ZDoom.\n" - "2. Edit your zdoom-username.ini and add the directories of your iwads\n" + "1. Place one or more of these wads in the same directory as " GAMENAME ".\n" + "2. Edit your " GAMENAMELOWERCASE "-username.ini and add the directories of your iwads\n" "to the list beneath [IWADSearch.Directories]"); #elif defined(__APPLE__) - "1. Place one or more of these wads in ~/Library/Application Support/zdoom/\n" - "2. Edit your ~/Library/Preferences/zdoom.ini and add the directories\n" + "1. Place one or more of these wads in ~/Library/Application Support/" GAMENAMELOWERCASE "/\n" + "2. Edit your ~/Library/Preferences/" GAMENAMELOWERCASE ".ini and add the directories\n" "of your iwads to the list beneath [IWADSearch.Directories]"); #else - "1. Place one or more of these wads in ~/.config/zdoom/.\n" - "2. Edit your ~/.config/zdoom/zdoom.ini and add the directories of your\n" + "1. Place one or more of these wads in ~/.config/" GAMENAMELOWERCASE "/.\n" + "2. Edit your ~/.config/" GAMENAMELOWERCASE "/" GAMENAMELOWERCASE ".ini and add the directories of your\n" "iwads to the list beneath [IWADSearch.Directories]"); #endif } diff --git a/src/m_specialpaths.cpp b/src/m_specialpaths.cpp index e6f74eda6..a45c23dc7 100644 --- a/src/m_specialpaths.cpp +++ b/src/m_specialpaths.cpp @@ -204,7 +204,7 @@ FString M_GetConfigPath(bool for_reading) { path += "/" GAME_DIR; CreatePath(path); - path += "/zdoom.ini"; + path += "/" GAMENAMELOWERCASE ".ini"; } else { // construct "$PROGDIR/zdoom-$USER.ini" @@ -224,11 +224,11 @@ FString M_GetConfigPath(bool for_reading) *probe = '_'; ++probe; } - path << "zdoom-" << uname << ".ini"; + path << GAMENAMELOWERCASE "-" << uname << ".ini"; } else { // Couldn't get user name, so just use zdoom.ini - path += "zdoom.ini"; + path += GAMENAMELOWERCASE ".ini"; } } @@ -239,7 +239,7 @@ FString M_GetConfigPath(bool for_reading) if (!FileExists(path)) { path = progdir; - path << "zdoom.ini"; + path << GAMENAMELOWERCASE ".ini"; } } @@ -411,11 +411,11 @@ FString M_GetConfigPath(bool for_reading) noErr == FSRefMakePath(&folder, (UInt8*)cpath, PATH_MAX)) { FString path; - path << cpath << "/zdoom.ini"; + path << cpath << "/" GAMENAMELOWERCASE ".ini"; return path; } // Ungh. - return "zdoom.ini"; + return GAMENAMELOWERCASE ".ini"; } //=========================================================================== @@ -497,12 +497,12 @@ FString GetUserFile (const char *file) // This can be removed after a release or two // Transfer the old zdoom directory to the new location bool moved = false; - FString oldpath = NicePath("~/.zdoom/"); + FString oldpath = NicePath("~/." GAMENAMELOWERCASE "/"); if (stat (oldpath, &extrainfo) != -1) { if (rename(oldpath, path) == -1) { - I_Error ("Failed to move old zdoom directory (%s) to new location (%s).", + I_Error ("Failed to move old " GAMENAMELOWERCASE " directory (%s) to new location (%s).", oldpath.GetChars(), path.GetChars()); } else @@ -598,7 +598,7 @@ FString M_GetCajunPath(const char *botfilename) FString M_GetConfigPath(bool for_reading) { - return GetUserFile("zdoom.ini"); + return GetUserFile(GAMENAMELOWERCASE ".ini"); } //=========================================================================== diff --git a/src/posix/sdl/i_main.cpp b/src/posix/sdl/i_main.cpp index d60494d1a..7c08dacdb 100644 --- a/src/posix/sdl/i_main.cpp +++ b/src/posix/sdl/i_main.cpp @@ -240,7 +240,7 @@ int main (int argc, char **argv) #if !defined (__APPLE__) { int s[4] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS }; - cc_install_handlers(argc, argv, 4, s, "zdoom-crash.log", DoomSpecificInfo); + cc_install_handlers(argc, argv, 4, s, GAMENAMELOWERCASE "-crash.log", DoomSpecificInfo); } #endif // !__APPLE__ diff --git a/src/version.h b/src/version.h index 7f6d9cedd..cbbb8bd21 100644 --- a/src/version.h +++ b/src/version.h @@ -88,13 +88,14 @@ const char *GetVersionString(); // More stuff that needs to be different for derivatives. #define GAMENAME "ZDoom" +#define GAMENAMELOWERCASE "zdoom" #define FORUM_URL "http://forum.zdoom.org" #define BUGS_FORUM_URL "http://forum.zdoom.org/index.php?c=3" #if defined(__APPLE__) || defined(_WIN32) #define GAME_DIR GAMENAME #else -#define GAME_DIR ".config/zdoom" +#define GAME_DIR ".config/" GAMENAMELOWERCASE #endif From 7c7c3fb54ec941a99ff15592031b15f7df11365b Mon Sep 17 00:00:00 2001 From: Edoardo Prezioso Date: Thu, 2 Apr 2015 20:00:51 +0200 Subject: [PATCH 042/144] - Make the 'crashout' CCMD available in non-win32. --- src/c_cmds.cpp | 17 +++++++++++++++++ src/win32/i_main.cpp | 17 ----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/c_cmds.cpp b/src/c_cmds.cpp index 778f25be1..74968404d 100644 --- a/src/c_cmds.cpp +++ b/src/c_cmds.cpp @@ -641,6 +641,23 @@ CCMD (error_fatal) } } +//========================================================================== +// +// CCMD crashout +// +// Debugging routine for testing the crash logger. +// Useless in a win32 debug build, because that doesn't enable the crash logger. +// +//========================================================================== + +#if !defined(_WIN32) || !defined(_DEBUG) +CCMD (crashout) +{ + *(volatile int *)0 = 0; +} +#endif + + CCMD (dir) { FString dir, path; diff --git a/src/win32/i_main.cpp b/src/win32/i_main.cpp index f2a4fab4d..c63e7bc1c 100644 --- a/src/win32/i_main.cpp +++ b/src/win32/i_main.cpp @@ -1288,20 +1288,3 @@ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE nothing, LPSTR cmdline, int n MainThread = INVALID_HANDLE_VALUE; return 0; } - -//========================================================================== -// -// CCMD crashout -// -// Debugging routine for testing the crash logger. -// Useless in a debug build, because that doesn't enable the crash logger. -// -//========================================================================== - -#ifndef _DEBUG -#include "c_dispatch.h" -CCMD (crashout) -{ - *(int *)0 = 0; -} -#endif From d37f9cbcaeadf97f87371be985e2562c490b90b4 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 2 Apr 2015 17:06:04 -0500 Subject: [PATCH 043/144] Add flies (doomed #112) from the Hexen retail beta ...because it brought back memories of adding Strife support. - The search function is radically different, but the flying mechanics are the same. --- src/CMakeLists.txt | 1 + src/actor.h | 2 +- src/g_hexen/a_flies.cpp | 106 +++++++++++++++++++++++++++ src/g_hexen/a_hexenmisc.cpp | 1 + src/p_mobj.cpp | 4 +- wadsrc/static/actors/hexen/flies.txt | 28 +++++++ wadsrc/static/decorate.txt | 1 + zdoom.vcproj | 36 +++++++++ 8 files changed, 176 insertions(+), 3 deletions(-) create mode 100644 src/g_hexen/a_flies.cpp create mode 100644 wadsrc/static/actors/hexen/flies.txt diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ea8ebcb85..26871cf1e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -741,6 +741,7 @@ set( NOT_COMPILED_SOURCE_FILES g_hexen/a_fighterquietus.cpp g_hexen/a_firedemon.cpp g_hexen/a_flechette.cpp + g_hexen/a_flies.cpp g_hexen/a_fog.cpp g_hexen/a_healingradius.cpp g_hexen/a_heresiarch.cpp diff --git a/src/actor.h b/src/actor.h index 78c82066c..862858b32 100644 --- a/src/actor.h +++ b/src/actor.h @@ -1035,7 +1035,7 @@ public: virtual bool UpdateWaterLevel (fixed_t oldz, bool splash=true); bool isFast(); bool isSlow(); - void SetIdle(); + void SetIdle(bool nofunction=false); void ClearCounters(); FState *GetRaiseState(); void Revive(); diff --git a/src/g_hexen/a_flies.cpp b/src/g_hexen/a_flies.cpp new file mode 100644 index 000000000..3c677d5cb --- /dev/null +++ b/src/g_hexen/a_flies.cpp @@ -0,0 +1,106 @@ +static FRandom pr_fly("GetOffMeFly"); + +//=========================================================================== +// +// FindCorpse +// +// Finds a corpse to buzz around. We can't use a blockmap check because +// corpses generally aren't linked into the blockmap. +// +//=========================================================================== + +static AActor *FindCorpse(AActor *fly, sector_t *sec, int recurselimit) +{ + AActor *fallback = NULL; + sec->validcount = validcount; + + // Search the current sector + for (AActor *check = sec->thinglist; check != NULL; check = check->snext) + { + if (check == fly) + continue; + if (!(check->flags & MF_CORPSE)) + continue; + if (!P_CheckSight(fly, check)) + continue; + fallback = check; + if (pr_fly(2)) // 50% chance to try to pick a different corpse + continue; + return check; + } + if (--recurselimit <= 0 || (fallback != NULL && pr_fly(2))) + { + return fallback; + } + // Try neighboring sectors + for (int i = 0; i < sec->linecount; ++i) + { + line_t *line = sec->lines[i]; + sector_t *sec2 = (line->frontsector == sec) ? line->backsector : line->frontsector; + if (sec2 != NULL && sec2->validcount != validcount) + { + AActor *neighbor = FindCorpse(fly, sec2, recurselimit); + if (neighbor != NULL) + { + return neighbor; + } + } + } + return fallback; +} + +DEFINE_ACTION_FUNCTION(AActor, A_FlySearch) +{ + // The version from the retail beta is not so great for general use: + // 1. Pick one of the first fifty thinkers at random. + // 2. Starting from that thinker, find one that is an actor, not itself, + // and within sight. Give up after 100 sequential thinkers. + // It's effectively useless if there are more than 150 thinkers on a map. + // + // So search the sectors instead. We can't potentially find something all + // the way on the other side of the map and we can't find invisible corpses, + // but at least we aren't crippled on maps with lots of stuff going on. + validcount++; + AActor *other = FindCorpse(self, self->Sector, 5); + if (other != NULL) + { + self->target = other; + self->SetState(self->FindState("Buzz")); + } +} + +DEFINE_ACTION_FUNCTION(AActor, A_FlyBuzz) +{ + AActor *targ = self->target; + + if (targ == NULL || !(targ->flags & MF_CORPSE) || pr_fly() < 5) + { + self->SetIdle(); + return; + } + + angle_t ang = R_PointToAngle2(self->x, self->y, targ->x, targ->y); + self->angle = ang; + self->args[0]++; + ang >>= ANGLETOFINESHIFT; + if (!P_TryMove(self, self->x + 6 * finecosine[ang], self->y + 6 * finesine[ang], true)) + { + self->SetIdle(true); + return; + } + if (self->args[0] & 2) + { + self->velx += (pr_fly() - 128) << BOBTOFINESHIFT; + self->vely += (pr_fly() - 128) << BOBTOFINESHIFT; + } + int zrand = pr_fly(); + if (targ->z + 5*FRACUNIT < self->z && zrand > 150) + { + zrand = -zrand; + } + self->velz = zrand << BOBTOFINESHIFT; + if (pr_fly() < 40) + { + S_Sound(self, CHAN_VOICE, self->ActiveSound, 0.5f, ATTN_STATIC); + } +} diff --git a/src/g_hexen/a_hexenmisc.cpp b/src/g_hexen/a_hexenmisc.cpp index fa07a6759..1141f381f 100644 --- a/src/g_hexen/a_hexenmisc.cpp +++ b/src/g_hexen/a_hexenmisc.cpp @@ -38,6 +38,7 @@ #include "a_fighterquietus.cpp" #include "a_firedemon.cpp" #include "a_flechette.cpp" +#include "a_flies.cpp" #include "a_fog.cpp" #include "a_healingradius.cpp" #include "a_heresiarch.cpp" diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index c12bd53db..9dd9f1ddc 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -6236,11 +6236,11 @@ void AActor::Crash() } } -void AActor::SetIdle() +void AActor::SetIdle(bool nofunction) { FState *idle = FindState (NAME_Idle); if (idle == NULL) idle = SpawnState; - SetState(idle); + SetState(idle, nofunction); } int AActor::SpawnHealth() diff --git a/wadsrc/static/actors/hexen/flies.txt b/wadsrc/static/actors/hexen/flies.txt new file mode 100644 index 000000000..6be4a749f --- /dev/null +++ b/wadsrc/static/actors/hexen/flies.txt @@ -0,0 +1,28 @@ + +// Buzzy fly ---------------------------------------------------------------- + +ACTOR LittleFly 112 +{ + Game Hexen + +NOBLOCKMAP +NOGRAVITY + +CANPASS + + Speed 6 + Radius 5 + Height 5 + Mass 2 + ActiveSound "FlyBuzz" + + action native A_FlySearch(); + action native A_FlyBuzz(); + + States + { + Spawn: + TNT1 A 20 A_FlySearch // [RH] Invisible when not flying + Loop + Buzz: + AFLY ABCD 3 A_FlyBuzz + Loop + } +} diff --git a/wadsrc/static/decorate.txt b/wadsrc/static/decorate.txt index ae4b6f851..46f1854b9 100644 --- a/wadsrc/static/decorate.txt +++ b/wadsrc/static/decorate.txt @@ -93,6 +93,7 @@ #include "actors/hexen/mageplayer.txt" #include "actors/hexen/pig.txt" #include "actors/hexen/flame.txt" +#include "actors/hexen/flies.txt" #include "actors/hexen/hexenarmor.txt" #include "actors/hexen/hexendecorations.txt" #include "actors/hexen/hexenkeys.txt" diff --git a/zdoom.vcproj b/zdoom.vcproj index a6a94cafe..9c3367ff2 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -5228,6 +5228,42 @@ /> + + + + + + + + + + + + + + From ef562c0341ce57202d500c315a8fe17c49404620 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 2 Apr 2015 17:39:03 -0500 Subject: [PATCH 044/144] Add dot sprites for Hexen beta flies --- wadsrc/static/sprites/AFLYA0.png | Bin 0 -> 111 bytes wadsrc/static/sprites/AFLYB0.png | Bin 0 -> 95 bytes wadsrc/static/sprites/AFLYC0.png | Bin 0 -> 111 bytes wadsrc/static/sprites/AFLYD0.png | Bin 0 -> 112 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc/static/sprites/AFLYA0.png create mode 100644 wadsrc/static/sprites/AFLYB0.png create mode 100644 wadsrc/static/sprites/AFLYC0.png create mode 100644 wadsrc/static/sprites/AFLYD0.png diff --git a/wadsrc/static/sprites/AFLYA0.png b/wadsrc/static/sprites/AFLYA0.png new file mode 100644 index 0000000000000000000000000000000000000000..d12ca16c6edf797071310cda019fc11b2cda34b5 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y<1R@_u^>qR%&H$efR~8nQn3$N!lP9Mhy!ss| z$XF8O7tG-B>_!@pBjV}e7*Y|(+Q7&O~l+|Ci?V_d^9(;+D0I#7hc)78&qol`;+ E02=!mga7~l literal 0 HcmV?d00001 diff --git a/wadsrc/static/sprites/AFLYB0.png b/wadsrc/static/sprites/AFLYB0.png new file mode 100644 index 0000000000000000000000000000000000000000..6f39e47d44e8077858d48c7e0107a71b9bd2e354 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y@2qG2r+P(uRwg8_H*O-`?$&)AN>HL!giimi+ pIEGZju^wpT0rDC){Lys!E5)#gVc}`N>9>I*44$rjF6*2UngFi+7&`y} literal 0 HcmV?d00001 diff --git a/wadsrc/static/sprites/AFLYC0.png b/wadsrc/static/sprites/AFLYC0.png new file mode 100644 index 0000000000000000000000000000000000000000..bc2a9a37163c841d59f34b5105af4e75fe70ecb3 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m}3?%t)JlzhYI0Jk_Tv=FHVq#(@PoA85@alJ< zAY)08UoeBivm0qZj)zopr E08Q~5?f?J) literal 0 HcmV?d00001 diff --git a/wadsrc/static/sprites/AFLYD0.png b/wadsrc/static/sprites/AFLYD0.png new file mode 100644 index 0000000000000000000000000000000000000000..8509a127daf5ecf1499ddb04c0cba0447e3ea238 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m}3?%t)JlzhYI0Jk_Tv=FHVq#(@PoA85@alJ< zAY)08UoeBivm0qZj;N=LV@O3D>j6eiAn(uySJSSG{n3n17#?1ANWK6RV(@hJb6Mw< G&;$UTkseF{ literal 0 HcmV?d00001 From 27c1434585f62811b8024a1a58616791d31cc7ef Mon Sep 17 00:00:00 2001 From: MajorCooke Date: Thu, 2 Apr 2015 20:52:51 -0500 Subject: [PATCH 045/144] - Fixed: Buddha never took forced damage into account. --- src/p_interaction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 3f4147c33..1e9dbf9b6 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -1332,7 +1332,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, // but telefragging should still do enough damage to kill the player) // Ignore players that are already dead. // [MC]Buddha2 absorbs telefrag damage, and anything else thrown their way. - if (((player->cheats & CF_BUDDHA2) || (((player->cheats & CF_BUDDHA) || (player->mo->flags7 & MF7_BUDDHA)) && (damage < TELEFRAG_DAMAGE))) && (player->playerstate != PST_DEAD)) + if (!(flags & DMG_FORCED) && (((player->cheats & CF_BUDDHA2) || (((player->cheats & CF_BUDDHA) || (player->mo->flags7 & MF7_BUDDHA)) && (damage < TELEFRAG_DAMAGE))) && (player->playerstate != PST_DEAD))) { // If this is a voodoo doll we need to handle the real player as well. player->mo->health = target->health = player->health = 1; @@ -1397,7 +1397,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, if (target->health <= 0) { //[MC]Buddha flag for monsters. - if ((target->flags7 & MF7_BUDDHA) && (damage < TELEFRAG_DAMAGE) && ((inflictor == NULL || !(inflictor->flags7 & MF7_FOILBUDDHA)) && !(flags & DMG_FOILBUDDHA))) + if (!(flags & DMG_FORCED) && ((target->flags7 & MF7_BUDDHA) && (damage < TELEFRAG_DAMAGE) && ((inflictor == NULL || !(inflictor->flags7 & MF7_FOILBUDDHA)) && !(flags & DMG_FOILBUDDHA)))) { //FOILBUDDHA or Telefrag damage must kill it. target->health = 1; } From ccd9fb9c2325ead68f977a97d21a4832e437b266 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 10:54:55 +0200 Subject: [PATCH 046/144] - moved FDoomEdMap to its own file to make the upcoming changes a bit nicer to handle. --- src/CMakeLists.txt | 1 + src/g_doomedmap.cpp | 182 ++++++++++++++++++++++++++++++++++++++++++++ src/info.cpp | 133 -------------------------------- 3 files changed, 183 insertions(+), 133 deletions(-) create mode 100644 src/g_doomedmap.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 26871cf1e..6e43c0d46 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -834,6 +834,7 @@ add_executable( zdoom WIN32 MACOSX_BUNDLE f_wipe.cpp farchive.cpp files.cpp + g_doomedmap.cpp g_game.cpp g_hub.cpp g_level.cpp diff --git a/src/g_doomedmap.cpp b/src/g_doomedmap.cpp new file mode 100644 index 000000000..9ee2ce0c5 --- /dev/null +++ b/src/g_doomedmap.cpp @@ -0,0 +1,182 @@ +/* +** g_doomedmap.cpp +** +**--------------------------------------------------------------------------- +** Copyright 1998-2015 Randy Heit +** Copyright 2015 Christoph Oelckers +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** 3. The name of the author may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**--------------------------------------------------------------------------- +** +** +*/ + +#include "info.h" +#include "m_fixed.h" +#include "c_dispatch.h" +#include "d_net.h" +#include "v_text.h" + +#include "gi.h" + +#include "actor.h" +#include "r_state.h" +#include "i_system.h" +#include "p_local.h" +#include "templates.h" +#include "cmdlib.h" +#include "g_level.h" + +//========================================================================== +// +// +//========================================================================== + +FDoomEdMap DoomEdMap; + +FDoomEdMap::FDoomEdEntry *FDoomEdMap::DoomEdHash[DOOMED_HASHSIZE]; + +FDoomEdMap::~FDoomEdMap() +{ + Empty(); +} + +void FDoomEdMap::AddType (int doomednum, const PClass *type, bool temporary) +{ + unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; + FDoomEdEntry *entry = DoomEdHash[hash]; + while (entry && entry->DoomEdNum != doomednum) + { + entry = entry->HashNext; + } + if (entry == NULL) + { + entry = new FDoomEdEntry; + entry->HashNext = DoomEdHash[hash]; + entry->DoomEdNum = doomednum; + DoomEdHash[hash] = entry; + } + else if (!entry->temp) + { + Printf (PRINT_BOLD, "Warning: %s and %s both have doomednum %d.\n", + type->TypeName.GetChars(), entry->Type->TypeName.GetChars(), doomednum); + } + entry->temp = temporary; + entry->Type = type; +} + +void FDoomEdMap::DelType (int doomednum) +{ + unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; + FDoomEdEntry **prev = &DoomEdHash[hash]; + FDoomEdEntry *entry = *prev; + while (entry && entry->DoomEdNum != doomednum) + { + prev = &entry->HashNext; + entry = entry->HashNext; + } + if (entry != NULL) + { + *prev = entry->HashNext; + delete entry; + } +} + +void FDoomEdMap::Empty () +{ + int bucket; + + for (bucket = 0; bucket < DOOMED_HASHSIZE; ++bucket) + { + FDoomEdEntry *probe = DoomEdHash[bucket]; + + while (probe != NULL) + { + FDoomEdEntry *next = probe->HashNext; + delete probe; + probe = next; + } + DoomEdHash[bucket] = NULL; + } +} + +const PClass *FDoomEdMap::FindType (int doomednum) const +{ + unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; + FDoomEdEntry *entry = DoomEdHash[hash]; + while (entry && entry->DoomEdNum != doomednum) + entry = entry->HashNext; + return entry ? entry->Type : NULL; +} + +struct EdSorting +{ + const PClass *Type; + int DoomEdNum; +}; + +static int STACK_ARGS sortnums (const void *a, const void *b) +{ + return ((const EdSorting *)a)->DoomEdNum - + ((const EdSorting *)b)->DoomEdNum; +} + +void FDoomEdMap::DumpMapThings () +{ + TArray infos (PClass::m_Types.Size()); + int i; + + for (i = 0; i < DOOMED_HASHSIZE; ++i) + { + FDoomEdEntry *probe = DoomEdHash[i]; + + while (probe != NULL) + { + EdSorting sorting = { probe->Type, probe->DoomEdNum }; + infos.Push (sorting); + probe = probe->HashNext; + } + } + + if (infos.Size () == 0) + { + Printf ("No map things registered\n"); + } + else + { + qsort (&infos[0], infos.Size (), sizeof(EdSorting), sortnums); + + for (i = 0; i < (int)infos.Size (); ++i) + { + Printf ("%6d %s\n", + infos[i].DoomEdNum, infos[i].Type->TypeName.GetChars()); + } + } +} + +CCMD (dumpmapthings) +{ + FDoomEdMap::DumpMapThings (); +} diff --git a/src/info.cpp b/src/info.cpp index e26ac3b8e..f4852a1d1 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -389,139 +389,6 @@ fixed_t *DmgFactors::CheckFactor(FName type) return pdf; } -//========================================================================== -// -// -//========================================================================== - -FDoomEdMap DoomEdMap; - -FDoomEdMap::FDoomEdEntry *FDoomEdMap::DoomEdHash[DOOMED_HASHSIZE]; - -FDoomEdMap::~FDoomEdMap() -{ - Empty(); -} - -void FDoomEdMap::AddType (int doomednum, const PClass *type, bool temporary) -{ - unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; - FDoomEdEntry *entry = DoomEdHash[hash]; - while (entry && entry->DoomEdNum != doomednum) - { - entry = entry->HashNext; - } - if (entry == NULL) - { - entry = new FDoomEdEntry; - entry->HashNext = DoomEdHash[hash]; - entry->DoomEdNum = doomednum; - DoomEdHash[hash] = entry; - } - else if (!entry->temp) - { - Printf (PRINT_BOLD, "Warning: %s and %s both have doomednum %d.\n", - type->TypeName.GetChars(), entry->Type->TypeName.GetChars(), doomednum); - } - entry->temp = temporary; - entry->Type = type; -} - -void FDoomEdMap::DelType (int doomednum) -{ - unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; - FDoomEdEntry **prev = &DoomEdHash[hash]; - FDoomEdEntry *entry = *prev; - while (entry && entry->DoomEdNum != doomednum) - { - prev = &entry->HashNext; - entry = entry->HashNext; - } - if (entry != NULL) - { - *prev = entry->HashNext; - delete entry; - } -} - -void FDoomEdMap::Empty () -{ - int bucket; - - for (bucket = 0; bucket < DOOMED_HASHSIZE; ++bucket) - { - FDoomEdEntry *probe = DoomEdHash[bucket]; - - while (probe != NULL) - { - FDoomEdEntry *next = probe->HashNext; - delete probe; - probe = next; - } - DoomEdHash[bucket] = NULL; - } -} - -const PClass *FDoomEdMap::FindType (int doomednum) const -{ - unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; - FDoomEdEntry *entry = DoomEdHash[hash]; - while (entry && entry->DoomEdNum != doomednum) - entry = entry->HashNext; - return entry ? entry->Type : NULL; -} - -struct EdSorting -{ - const PClass *Type; - int DoomEdNum; -}; - -static int STACK_ARGS sortnums (const void *a, const void *b) -{ - return ((const EdSorting *)a)->DoomEdNum - - ((const EdSorting *)b)->DoomEdNum; -} - -void FDoomEdMap::DumpMapThings () -{ - TArray infos (PClass::m_Types.Size()); - int i; - - for (i = 0; i < DOOMED_HASHSIZE; ++i) - { - FDoomEdEntry *probe = DoomEdHash[i]; - - while (probe != NULL) - { - EdSorting sorting = { probe->Type, probe->DoomEdNum }; - infos.Push (sorting); - probe = probe->HashNext; - } - } - - if (infos.Size () == 0) - { - Printf ("No map things registered\n"); - } - else - { - qsort (&infos[0], infos.Size (), sizeof(EdSorting), sortnums); - - for (i = 0; i < (int)infos.Size (); ++i) - { - Printf ("%6d %s\n", - infos[i].DoomEdNum, infos[i].Type->TypeName.GetChars()); - } - } -} - -CCMD (dumpmapthings) -{ - FDoomEdMap::DumpMapThings (); -} - - static void SummonActor (int command, int command2, FCommandLine argv) { if (CheckCheatmode ()) From bd77f83bab48e6f241a79b14a62dbf139b0ccc38 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 13:54:38 +0200 Subject: [PATCH 047/144] - added editor number definitions to MAPINFO. --- wadsrc/static/mapinfo/chex.txt | 59 +++++++ wadsrc/static/mapinfo/common.txt | 71 ++++++++ wadsrc/static/mapinfo/doomcommon.txt | 1 + wadsrc/static/mapinfo/doomitems.txt | 148 ++++++++++++++++ wadsrc/static/mapinfo/heretic.txt | 96 +++++++++++ wadsrc/static/mapinfo/hexen.txt | 229 +++++++++++++++++++++++++ wadsrc/static/mapinfo/strife.txt | 241 +++++++++++++++++++++++++++ 7 files changed, 845 insertions(+) create mode 100644 wadsrc/static/mapinfo/doomitems.txt diff --git a/wadsrc/static/mapinfo/chex.txt b/wadsrc/static/mapinfo/chex.txt index 1edaf9256..9bd974bc7 100644 --- a/wadsrc/static/mapinfo/chex.txt +++ b/wadsrc/static/mapinfo/chex.txt @@ -1,5 +1,6 @@ // MAPINFO for Chex Quest include "mapinfo/common.txt" +include "mapinfo/doomitems.txt" gameinfo { @@ -67,6 +68,64 @@ gameinfo statscreen_enteringpatch = "WIENTER" } +DoomEdNums +{ + 5 = ChexBlueCard + 6 = ChexYellowCard + 8 = Zorchpack + 9 = FlemoidusBipedicus + 13 = ChexRedCard + 17 = PhasingZorchPack + 25 = ChexTallFlower2 + 28 = ChexTallFlower + 30 = ChexCavernStalagmite + 31 = ChexSubmergedPlant + 32 = ChexCavernColumn + 33 = ChexMineCart + 34 = ChexChemicalFlask + 35 = ChexGasTank + 37 = ChexFlagOnPole + 41 = ChexChemicalBurner + 43 = ChexOrangeTree + 44 = ChexSlimeFountain + 45 = ChexCivilian1 + 47 = ChexAppleTree + 48 = ChexSpaceship + 54 = ChexBananaTree + 55 = ChexLightColumn + 56 = ChexCivilian2 + 57 = ChexCivilian3 + 82 = SuperLargeZorcher + 2001 = LargeZorcher + 2002 = RapidZorcher + 2003 = ZorchPropulsor + 2004 = PhasingZorcher + 2005 = SuperBootspork + 2006 = LAZDevice + 2007 = MiniZorchRecharge + 2008 = LargeZorchRecharge + 2010 = PropulsorZorch + 2011 = BowlOfFruit + 2012 = BowlOfVegetables + 2013 = SuperchargeBreakfast + 2014 = GlassOfWater + 2015 = SlimeRepellent + 2018 = ChexArmor + 2019 = SuperChexArmor + 2025 = SlimeProofSuit + 2026 = ComputerAreaMap + 2028 = ChexLandingLight + 2046 = PropulsorZorchPack + 2047 = PhasingZorch + 2048 = MiniZorchPack + 2049 = LargeZorchPack + 3001 = ArmoredFlemoidusBipedicus + 3002 = FlemoidusCycloptisCommonus + 3003 = Flembrane + 3004 = FlemoidusCommonus + 3006 = ChexSoul +} + skill baby { AutoUseHealth diff --git a/wadsrc/static/mapinfo/common.txt b/wadsrc/static/mapinfo/common.txt index fc6379d01..d2aa234c6 100644 --- a/wadsrc/static/mapinfo/common.txt +++ b/wadsrc/static/mapinfo/common.txt @@ -4,6 +4,77 @@ Gameinfo EasyKey = "maparrows/ravenkey.txt" } +DoomEdNums +{ + 0 = Unknown + 14 = TeleportDest + 118 = ZBridge + 888 = MBFHelperDog + 5001 = PointPusher + 5002 = PointPuller + 5004 = FS_Mapspot + 5061 = InvisibleBridge32 + 5064 = InvisibleBridge16 + 5065 = InvisibleBridge8 + 9001 = MapSpot + 9013 = MapSpotGravity + 9024 = PatrolPoint + 9025 = SecurityCamera + 9026 = Spark + 9027 = RedParticleFountain + 9028 = GreenParticleFountain + 9029 = BlueParticleFountain + 9030 = YellowParticleFountain + 9031 = PurpleParticleFountain + 9032 = BlackParticleFountain + 9033 = WhiteParticleFountain + 9037 = BetaSkull + 9038 = ColorSetter + 9039 = FadeSetter + 9040 = MapMarker + 9041 = SectorFlagSetter + 9043 = TeleportDest3 + 9044 = TeleportDest2 + 9045 = Waterzone + 9046 = SecretTrigger + 9047 = PatrolSpecial + 9048 = SoundEnvironment + 9070 = InterpolationPoint + 9071 = PathFollower + 9072 = MovingCamera + 9073 = AimingCamera + 9074 = ActorMover + 9075 = InterpolationSpecial + 9076 = HateTarget + 9077 = UpperStackLookOnly + 9078 = LowerStackLookOnly + 9080 = SkyViewpoint + 9081 = SkyPicker + 9082 = SectorSilencer + 9083 = SkyCamCompat + 9200 = Decal + 9982 = SecActEyesAboveC + 9983 = SecActEyesBelowC + 9988 = CustomSprite + 9989 = SecActHitFakeFloor + 9990 = InvisibleBridge + 9991 = CustomBridge + 9992 = SecActEyesSurface + 9993 = SecActEyesDive + 9994 = SecActUseWall + 9995 = SecActUse + 9996 = SecActHitCeil + 9997 = SecActExit + 9998 = SecActEnter + 9999 = SecActHitFloor + 14065 = AmbientSound + 14066 = SoundSequence + 14067 = AmbientSoundNoGravity + 14165 = MusicChanger + 32000 = DoomBuilderCamera +} + + Intermission Inter_Titlescreen { GotoTitle diff --git a/wadsrc/static/mapinfo/doomcommon.txt b/wadsrc/static/mapinfo/doomcommon.txt index 9e3665533..00ce910f1 100644 --- a/wadsrc/static/mapinfo/doomcommon.txt +++ b/wadsrc/static/mapinfo/doomcommon.txt @@ -1,4 +1,5 @@ include "mapinfo/common.txt" +include "mapinfo/doomitems.txt" gameinfo { diff --git a/wadsrc/static/mapinfo/doomitems.txt b/wadsrc/static/mapinfo/doomitems.txt new file mode 100644 index 000000000..fc86f659c --- /dev/null +++ b/wadsrc/static/mapinfo/doomitems.txt @@ -0,0 +1,148 @@ +DoomEdNums +{ + 5 = BlueCard + 6 = YellowCard + 7 = SpiderMastermind + 8 = Backpack + 9 = ShotgunGuy + 10 = GibbedMarine + 12 = GibbedMarineExtra + 13 = RedCard + 15 = DeadMarine + 16 = Cyberdemon + 17 = CellPack + 18 = DeadZombieMan + 19 = DeadShotgunGuy + 20 = DeadDoomImp + 21 = DeadDemon + 22 = DeadCacodemon + 23 = DeadLostSoul + 24 = Gibs + 25 = DeadStick + 26 = LiveStick + 27 = HeadOnAStick + 28 = HeadsOnAStick + 29 = HeadCandles + 30 = TallGreenColumn + 31 = ShortGreenColumn + 32 = TallRedColumn + 33 = ShortRedColumn + 34 = Candlestick + 35 = Candelabra + 36 = HeartColumn + 37 = SkullColumn + 38 = RedSkull + 39 = YellowSkull + 40 = BlueSkull + 41 = EvilEye + 42 = FloatingSkull + 43 = TorchTree + 44 = BlueTorch + 45 = GreenTorch + 46 = RedTorch + 47 = Stalagtite + 48 = TechPillar + 49 = BloodyTwitch + 50 = Meat2 + 51 = Meat3 + 52 = Meat4 + 53 = Meat5 + 54 = BigTree + 55 = ShortBlueTorch + 56 = ShortGreenTorch + 57 = ShortRedTorch + 58 = Spectre + 59 = NonsolidMeat2 + 60 = NonsolidMeat4 + 61 = NonsolidMeat3 + 62 = NonsolidMeat5 + 63 = NonsolidTwitch + 64 = Archvile + 65 = ChaingunGuy + 66 = Revenant + 67 = Fatso + 68 = Arachnotron + 69 = HellKnight + 70 = BurningBarrel + 71 = PainElemental + 72 = CommanderKeen + 73 = HangNoGuts + 74 = HangBNoBrain + 75 = HangTLookingDown + 76 = HangTSkull + 77 = HangTLookingUp + 78 = HangTNoBrain + 79 = ColonGibs + 80 = SmallBloodPool + 81 = BrainStem + 82 = SuperShotgun + 83 = Megasphere + 84 = WolfensteinSS + 85 = TechLamp + 86 = TechLamp2 + 87 = BossTarget + 88 = BossBrain + 89 = BossEye + 2001 = Shotgun + 2002 = Chaingun + 2003 = RocketLauncher + 2004 = PlasmaRifle + 2005 = Chainsaw + 2006 = BFG9000 + 2007 = Clip + 2008 = Shell + 2010 = RocketAmmo + 2011 = Stimpack + 2012 = Medikit + 2013 = Soulsphere + 2014 = HealthBonus + 2015 = ArmorBonus + 2016 = EvilSceptre + 2017 = UnholyBible + 2018 = GreenArmor + 2019 = BlueArmor + 2022 = InvulnerabilitySphere + 2023 = Berserk + 2024 = BlurSphere + 2025 = RadSuit + 2026 = Allmap + 2028 = Column + 2035 = ExplosiveBarrel + 2045 = Infrared + 2046 = RocketBox + 2047 = Cell + 2048 = ClipBox + 2049 = ShellBox + 3001 = DoomImp + 3002 = Demon + 3003 = BaronOfHell + 3004 = Zombieman + 3005 = Cacodemon + 3006 = LostSoul + 5010 = Pistol + 5050 = Stalagmite + 9050 = StealthArachnotron + 9051 = StealthArchvile + 9052 = StealthBaron + 9053 = StealthCacodemon + 9054 = StealthChaingunGuy + 9055 = StealthDemon + 9056 = StealthHellKnight + 9057 = StealthDoomImp + 9058 = StealthFatso + 9059 = StealthRevenant + 9060 = StealthShotgunGuy + 9061 = StealthZombieMan + 9100 = ScriptedMarine + 9101 = MarineFist + 9102 = MarineBerserk + 9103 = MarineChainsaw + 9104 = MarinePistol + 9105 = MarineShotgun + 9106 = MarineSSG + 9107 = MarineChaingun + 9108 = MarineRocket + 9109 = MarinePlasma + 9110 = MarineRailgun + 9111 = MarineBFG +} \ No newline at end of file diff --git a/wadsrc/static/mapinfo/heretic.txt b/wadsrc/static/mapinfo/heretic.txt index 196e81c50..61dccbacc 100644 --- a/wadsrc/static/mapinfo/heretic.txt +++ b/wadsrc/static/mapinfo/heretic.txt @@ -66,6 +66,102 @@ gameinfo statscreen_enteringfont = "SmallFont" } +DoomEdNums +{ + 5 = HereticImpLeader + 6 = Ironlich + 7 = Sorcerer1 + 8 = BagOfHolding + 9 = Minotaur + 10 = GoldWandAmmo + 12 = GoldWandHefty + 13 = MaceAmmo + 15 = Wizard + 16 = MaceHefty + 17 = SkullHang70 + 18 = CrossbowAmmo + 19 = CrossbowHefty + 20 = SkullRodAmmo + 21 = SkullRodHefty + 22 = PhoenixRodAmmo + 23 = PhoenixRodHefty + 24 = SkullHang60 + 25 = SkullHang45 + 26 = SkullHang35 + 27 = SerpentTorch + 28 = Chandelier + 29 = SmallPillar + 30 = ArtiEgg + 31 = EnchantedShield + 32 = ArtiSuperHealth + 33 = ArtiTorch + 34 = ArtiTimeBomb + 35 = SuperMap + 36 = ArtiTeleport + 37 = StalagmiteSmall + 38 = StalagmiteLarge + 39 = StalactiteSmall + 40 = StalactiteLarge + 41 = SoundWaterfall + 42 = SoundWind + 43 = PodGenerator + 44 = Barrel + 45 = MummyLeader + 46 = MummyLeaderGhost + 47 = BrownPillar + 48 = Moss1 + 49 = Moss2 + 50 = WallTorch + 51 = HangingCorpse + 52 = TeleGlitterGenerator2 + 53 = Blaster + 54 = BlasterAmmo + 55 = BlasterHefty + 56 = BossSpot + 64 = Knight + 65 = KnightGhost + 66 = HereticImp + 68 = Mummy + 69 = MummyGhost + 70 = Beast + 73 = KeyGreen + 74 = TeleGlitterGenerator1 + 75 = ArtiInvisibility + 76 = FireBrazier + 79 = KeyBlue + 80 = KeyYellow + 81 = CrystalVial + 82 = ArtiHealth + 83 = ArtiFly + 84 = ArtiInvulnerability + 85 = SilverShield + 86 = ArtiTomeOfPower + 87 = Volcano + 90 = Clink + 92 = Snake + 94 = KeyGizmoBlue + 95 = KeyGizmoGreen + 96 = KeyGizmoYellow + 118 = Bridge + 1200 = HereticSoundSequence1 + 1201 = HereticSoundSequence2 + 1202 = HereticSoundSequence3 + 1203 = HereticSoundSequence4 + 1204 = HereticSoundSequence5 + 1205 = HereticSoundSequence6 + 1206 = HereticSoundSequence7 + 1207 = HereticSoundSequence8 + 1208 = HereticSoundSequence9 + 1209 = HereticSoundSequence10 + 2001 = Crossbow + 2002 = MaceSpawner + 2003 = PhoenixRod + 2004 = SkullRod + 2005 = Gauntlets + 2035 = Pod + 9042 = GoldWand +} + skill baby { AutoUseHealth diff --git a/wadsrc/static/mapinfo/hexen.txt b/wadsrc/static/mapinfo/hexen.txt index 631c6d1e9..6cb4419d9 100644 --- a/wadsrc/static/mapinfo/hexen.txt +++ b/wadsrc/static/mapinfo/hexen.txt @@ -64,6 +64,235 @@ gameinfo statscreen_enteringfont = "SmallFont" } +DoomEdNums +{ + 5 ZWingedStatue + 6 ZRock1 + 7 ZRock2 + 9 ZRock3 + 10 CWeapStaff + 12 FWeaponPiece1 + 13 FWeaponPiece2 + 15 ZRock4 + 16 FWeaponPiece3 + 17 ZChandelier + 18 CWeaponPiece1 + 19 CWeaponPiece2 + 20 CWeaponPiece3 + 21 MWeaponPiece1 + 22 MWeaponPiece2 + 23 MWeaponPiece3 + 24 ZTreeDead + 25 ZTree + 26 ZTreeSwamp150 + 27 ZTreeSwamp120 + 28 ZStumpBurned + 29 ZStumpBare + 30 ArtiPork + 31 Demon1 + 32 ArtiSuperHealth + 33 ArtiTorch + 34 Wraith + 36 ArtiTeleport + 37 ZStumpSwamp1 + 38 ZStumpSwamp2 + 39 ZShroomLarge1 + 40 ZShroomLarge2 + 41 ZShroomLarge3 + 42 ZShroomSmall1 + 44 ZShroomSmall2 + 45 ZShroomSmall3 + 46 ZShroomSmall4 + 47 ZShroomSmall5 + 48 ZStalagmitePillar + 49 ZStalagmiteLarge + 50 ZStalagmiteMedium + 51 ZStalagmiteSmall + 52 ZStalactiteLarge + 53 MWeapFrost + 54 ZWallTorch + 55 ZWallTorchUnlit + 56 ZStalactiteMedium + 57 ZStalactiteSmall + 58 ZMossCeiling1 + 59 ZMossCeiling2 + 60 ZSwampVine + 61 ZCorpseKabob + 62 ZCorpseSleeping + 63 ZTombstoneRIP + 64 ZTombstoneShane + 65 ZTombstoneBigCross + 66 ZTombstoneBrianR + 67 ZTombstoneCrossCircle + 68 ZTombstoneSmallCross + 69 ZTombstoneBrianP + 71 ZCorpseHanging + 72 ZStatueGargoyleGreenTall + 73 ZStatueGargoyleBlueTall + 74 ZStatueGargoyleGreenShort + 76 ZStatueGargoyleBlueShort + 77 ZBannerTattered + 78 ZTreeLarge1 + 79 ZTreeLarge2 + 80 ZTreeGnarled1 + 81 CrystalVial + 82 ArtiHealth + 83 ArtiFly + 84 ArtiInvulnerability2 + 86 ArtiDarkServant + 87 ZTreeGnarled2 + 88 ZLog + 89 ZStalactiteIceLarge + 90 ZStalactiteIceMedium + 91 ZStalactiteIceSmall + 92 ZStalactiteIceTiny + 93 ZStalagmiteIceLarge + 94 ZStalagmiteIceMedium + 95 ZStalagmiteIceSmall + 96 ZStalagmiteIceTiny + 97 ZRockBrown1 + 98 ZRockBrown2 + 99 ZRockBlack + 100 ZRubble1 + 101 ZRubble2 + 102 ZRubble3 + 103 ZVasePillar + 104 Pottery1 + 105 Pottery2 + 106 Pottery3 + 107 Centaur + 108 ZCorpseLynched + 109 ZCorpseLynchedNoHeart + 110 ZCorpseSitting + 111 BloodPool + 112 LittleFly + 113 LeafSpawner + 114 Bishop + 115 CentaurLeader + 116 ZTwinedTorch + 117 ZTwinedTorchUnlit + 118 Bridge + 119 ZCandle + 120 SerpentLeader + 121 Serpent + 122 Mana1 + 123 FWeapHammer + 124 Mana2 + 140 TeleSmoke + 254 Dragon + 1410 SoundWindHexen + 8000 ArtiPoisonBag + 8002 ArtiSpeedBoots + 8003 ArtiBoostMana + 8004 Mana3 + 8005 MeshArmor + 8006 FalconShield + 8007 PlatinumHelm + 8008 AmuletOfWarding + 8009 CWeapFlame + 8010 FWeapAxe + 8020 IceGuy + 8030 KeySteel + 8031 KeyCave + 8032 KeyAxe + 8033 KeyFire + 8034 KeyEmerald + 8035 KeyDungeon + 8036 KeySilver + 8037 KeyRusted + 8038 KeyHorn + 8039 KeySwamp + 8040 MWeapLightning + 8041 ArtiBoostArmor + 8042 ZFireBull + 8043 ZFireBullUnlit + 8044 ZStatueGargoyleStripeTall + 8045 ZStatueGargoyleDarkRedTall + 8046 ZStatueGargoyleRedTall + 8047 ZStatueGargoyleTanTall + 8048 ZStatueGargoyleRustTall + 8049 ZStatueGargoyleDarkRedShort + 8050 ZStatueGargoyleRedShort + 8051 ZStatueGargoyleTanShort + 8052 ZStatueGargoyleRustShort + 8060 FireThing + 8061 BrassTorch + 8062 TreeDestructible + 8063 ZChandelierUnlit + 8064 ZSuitOfArmor + 8065 ZBell + 8066 ZBlueCandle + 8067 ZIronMaiden + 8068 ZXmasTree + 8069 ZCauldron + 8070 ZCauldronUnlit + 8071 ZChainBit32 + 8072 ZChainBit64 + 8073 ZChainEndHeart + 8074 ZChainEndHook1 + 8075 ZChainEndHook2 + 8076 ZChainEndSpike + 8077 ZChainEndSkull + 8080 Demon2 + 8100 ZBarrel + 8101 ZShrub1 + 8102 ZShrub2 + 8103 ZBucket + 8104 ZPoisonShroom + 8200 KeyCastle + 8500 TableShit1 + 8501 TableShit2 + 8502 TableShit3 + 8503 TableShit4 + 8504 TableShit5 + 8505 TableShit6 + 8506 TableShit7 + 8507 TableShit8 + 8508 TableShit9 + 8509 TableShit10 + 9002 PuzzSkull + 9003 PuzzGemBig + 9004 PuzzGemRed + 9005 PuzzGemGreen1 + 9006 PuzzGemBlue1 + 9007 PuzzBook1 + 9008 PuzzBook2 + 9009 PuzzGemGreen2 + 9010 PuzzGemBlue2 + 9011 ZWingedStatueNoSkull + 9012 ZGemPedestal + 9014 PuzzFlameMask + 9015 PuzzFWeapon + 9016 PuzzCWeapon + 9017 PuzzMWeapon + 9018 PuzzGear1 + 9019 PuzzGear2 + 9020 PuzzGear3 + 9021 PuzzGear4 + 10000 FogSpawner + 10001 FogPatchSmall + 10002 FogPatchMedium + 10003 FogPatchLarge + 10011 WraithBuried + 10030 Ettin + 10040 ArtiTeleportOther + 10060 FireDemon + 10080 Heresiarch + 10090 ThrustFloorDown + 10091 ThrustFloorUp + 10100 FighterBoss + 10101 ClericBoss + 10102 MageBoss + 10110 ArtiBlastRadius + 10120 ArtiHealingRadius + 10200 Korax + 10225 BatSpawner + 10500 FlameSmallTemp + 10501 FlameSmall + 10502 FlameLargeTemp + 10503 FlameLarge +} + skill baby { AutoUseHealth diff --git a/wadsrc/static/mapinfo/strife.txt b/wadsrc/static/mapinfo/strife.txt index 5a25f3779..f2f736dbf 100644 --- a/wadsrc/static/mapinfo/strife.txt +++ b/wadsrc/static/mapinfo/strife.txt @@ -66,6 +66,247 @@ gameinfo statscreen_enteringfont = "BigFont", "white" } +DoomEdNums +{ + 9 Rebel1 + 10 TeleporterBeacon + 12 Loremaster + 13 IDCard + 15 DeadStrifePlayer + 16 Inquisitor + 17 EnergyPack + 18 DeadPeasant + 19 DeadRebel + 20 DeadReaver + 21 DeadAcolyte + 22 DeadCrusader + 23 TeleportSwirl + 24 KlaxonWarningLight + 25 ForceFieldGuard + 26 EntityNest + 27 CeilingTurret + 28 CageLight + 29 Rubble1 + 30 Rubble2 + 31 Rubble3 + 32 Rubble4 + 33 TreeStub + 34 Candle + 35 StrifeCandelabra + 36 Rubble5 + 37 Rubble6 + 38 SilverKey + 39 BrassKey + 40 GoldKey + 41 Rubble7 + 42 Rubble8 + 43 OutsideLamp + 44 StatueRuined + 45 Piston + 46 PoleLantern + 47 LargeTorch + 48 PillarTechno + 50 HugeTorch + 51 PalmTree + 52 OfficersUniform + 53 WaterDrip + 54 PillarAztec + 55 PillarAztecDamaged + 56 PillarAztecRuined + 57 PillarHugeTech + 58 AcolyteShadow + 59 DegninOre + 60 ShortBush + 61 OracleKey + 62 TallBush + 63 ChimneyStack + 64 Macil1 + 65 Peasant4 + 66 Peasant7 + 67 Peasant10 + 68 Tray + 69 BarricadeColumn + 70 StrifeBurningBarrel + 71 Programmer + 72 BarKeep + 73 Armorer + 74 Medic + 75 AlienSpectre2 + 76 AlienSpectre3 + 77 Sigil1 + 78 Sigil2 + 79 Sigil3 + 80 Sigil4 + 81 Sigil5 + 82 WoodenBarrel + 83 SurgeryKit + 85 RatBuddy + 86 OrderKey + 90 GuardUniform + 91 SeveredHand + 92 PowerCrystal + 93 Coin + 94 ExplosiveBarrel2 + 95 LightSilverFluorescent + 96 LightBrownFluorescent + 97 LightGoldFluorescent + 98 SStalactiteBig + 99 SRock1 + 100 SRock2 + 101 SRock3 + 102 SRock4 + 103 WaterDropOnFloor + 104 WaterfallSplash + 105 BurningBowl + 106 BurningBrazier + 107 SmallTorchLit + 108 SmallTorchUnlit + 109 CeilingChain + 110 Statue + 111 MediumTorch + 112 WaterFountain + 113 HeartsInTank + 114 ElectricBolts + 115 PoisonBolts + 116 WeaponSmith + 117 SurgeryCrab + 128 EntityBoss + 129 AlienSpectre1 + 130 Peasant2 + 131 Peasant3 + 132 Peasant5 + 133 Peasant6 + 134 Peasant8 + 135 Peasant9 + 136 Peasant11 + 137 Peasant12 + 138 Gold10 + 139 Gold25 + 140 Gold50 + 141 Beggar1 + 142 AcolyteRed + 143 AcolyteRust + 144 Rebel2 + 145 Rebel3 + 146 AcolyteGray + 147 AcolyteDGreen + 148 AcolyteGold + 149 Rebel4 + 150 Rebel5 + 151 Rebel6 + 152 HEGrenadeRounds + 153 PhosphorusGrenadeRounds + 154 StrifeGrenadeLauncher + 155 Beggar2 + 156 Beggar3 + 157 Beggar4 + 158 Beggar5 + 159 CavePillarTop + 160 SStalagmiteBig + 161 SStalactiteSmall + 162 CavePillarBottom + 163 SStalagmiteSmall + 164 Mug + 165 Pot + 166 WarehouseKey + 167 AlienSpectre4 + 168 AlienSpectre5 + 169 Zombie + 170 ZombieSpawner + 172 Peasant13 + 173 Peasant14 + 174 Peasant15 + 175 Peasant16 + 176 Peasant17 + 177 Peasant18 + 178 Peasant19 + 179 Peasant20 + 180 Peasant21 + 181 Peasant22 + 182 Computer + 183 AmmoSatchel + 184 IDBadge + 185 Passcard + 186 Stalker + 187 StrifeBishop + 188 Pitcher + 189 Stool + 190 MetalPot + 191 Tub + 192 RedCrystalKey + 193 BlueCrystalKey + 194 Anvil + 195 ChapelKey + 196 TechLampSilver + 197 TechLampBrass + 198 EntityPod + 199 Oracle + 200 Macil2 + 201 AcolyteToBe + 202 BigTree2 + 203 PottedTree + 204 KneelingGuy + 205 OfferingChalice + 206 Communicator + 207 Targeter + 208 TargetPractice + 209 Tank1 + 210 Tank2 + 211 Tank3 + 212 SacrificedGuy + 213 Tank4 + 214 Tank5 + 215 StickInWater + 216 SigilBanner + 217 RebelBoots + 218 RebelHelmet + 219 RebelShirt + 220 PowerCoupling + 221 AlienBubbleColumn + 222 AlienFloorBubble + 223 AlienCeilingBubble + 224 AlienAspClimber + 225 AlienSpiderLight + 226 BrokenPowerCoupling + 227 PillarAlienPower + 228 AmmoFiller + 229 Tank6 + 230 BaseKey + 231 AcolyteBlue + 232 AcolyteLGreen + 233 MaulerKey + 234 FactoryKey + 235 MineKey + 236 CoreKey + 2001 StrifeCrossbow + 2002 AssaultGun + 2003 MiniMissileLauncher + 2004 Mauler + 2005 FlameThrower + 2006 AssaultGunStanding + 2007 ClipOfBullets + 2010 MiniMissiles + 2011 MedPatch + 2012 MedicalKit + 2014 WaterBottle + 2018 LeatherArmor + 2019 MetalArmor + 2024 ShadowArmor + 2025 EnvironmentalSuit + 2026 StrifeMap + 2027 Scanner + 2028 LightGlobe + 2046 CrateOfMissiles + 2047 EnergyPod + 2048 BoxOfBullets + 3001 Reaver + 3002 AcolyteTan + 3003 Templar + 3004 Peasant1 + 3005 Crusader + 3006 Sentinel +} + Intermission Inter_Strife_Good { Image From 937d793353f020e5692c7aa46d2fd278f29bc64f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 15:34:41 +0200 Subject: [PATCH 048/144] - fixed Hexen editor numbers. --- wadsrc/static/mapinfo/hexen.txt | 474 ++++++++++++++++---------------- 1 file changed, 237 insertions(+), 237 deletions(-) diff --git a/wadsrc/static/mapinfo/hexen.txt b/wadsrc/static/mapinfo/hexen.txt index 6cb4419d9..1a92c7f44 100644 --- a/wadsrc/static/mapinfo/hexen.txt +++ b/wadsrc/static/mapinfo/hexen.txt @@ -21,7 +21,7 @@ gameinfo borderflat = "F_022" border = HereticBorder telefogheight = 32 - defkickback = 150 + defkickback 150 skyflatname = "F_SKY" translator = "xlat/heretic.txt" // not really correct but this was used before. defaultbloodcolor = "68 00 00" @@ -30,15 +30,15 @@ gameinfo statusbar = "sbarinfo/hexen.txt" intermissionmusic = "hub" intermissioncounter = false - weaponslot = 1, "FWeapFist", "CWeapMace", "MWeapWand" + weaponslot 1, "FWeapFist", "CWeapMace", "MWeapWand" weaponslot = 2, "FWeapAxe", "CWeapStaff", "MWeapFrost" weaponslot = 3, "FWeapHammer", "CWeapFlame", "MWeapLightning" weaponslot = 4, "FWeapQuietus", "CWeapWraithverge", "MWeapBloodscourge" dimcolor = "00 00 ff" dimamount = 0.2 definventorymaxamount = 25 - defaultrespawntime = 12 - defaultdropstyle = 1 + defaultrespawntime 12 + defaultdropstyle 1 player5start = 9100 pickupcolor = "d7 ba 45" quitmessages = "$*RAVENQUITMSG" @@ -55,7 +55,7 @@ gameinfo pausesign = "PAUSED" gibfactor = 0.5 cursorpic = "hexncurs" - textscreenx = 10 + textscreenx 10 textscreeny = 5 defaultendsequence = "Inter_Chess" maparrow = "maparrows/dagger.txt" @@ -66,238 +66,238 @@ gameinfo DoomEdNums { - 5 ZWingedStatue - 6 ZRock1 - 7 ZRock2 - 9 ZRock3 - 10 CWeapStaff - 12 FWeaponPiece1 - 13 FWeaponPiece2 - 15 ZRock4 - 16 FWeaponPiece3 - 17 ZChandelier - 18 CWeaponPiece1 - 19 CWeaponPiece2 - 20 CWeaponPiece3 - 21 MWeaponPiece1 - 22 MWeaponPiece2 - 23 MWeaponPiece3 - 24 ZTreeDead - 25 ZTree - 26 ZTreeSwamp150 - 27 ZTreeSwamp120 - 28 ZStumpBurned - 29 ZStumpBare - 30 ArtiPork - 31 Demon1 - 32 ArtiSuperHealth - 33 ArtiTorch - 34 Wraith - 36 ArtiTeleport - 37 ZStumpSwamp1 - 38 ZStumpSwamp2 - 39 ZShroomLarge1 - 40 ZShroomLarge2 - 41 ZShroomLarge3 - 42 ZShroomSmall1 - 44 ZShroomSmall2 - 45 ZShroomSmall3 - 46 ZShroomSmall4 - 47 ZShroomSmall5 - 48 ZStalagmitePillar - 49 ZStalagmiteLarge - 50 ZStalagmiteMedium - 51 ZStalagmiteSmall - 52 ZStalactiteLarge - 53 MWeapFrost - 54 ZWallTorch - 55 ZWallTorchUnlit - 56 ZStalactiteMedium - 57 ZStalactiteSmall - 58 ZMossCeiling1 - 59 ZMossCeiling2 - 60 ZSwampVine - 61 ZCorpseKabob - 62 ZCorpseSleeping - 63 ZTombstoneRIP - 64 ZTombstoneShane - 65 ZTombstoneBigCross - 66 ZTombstoneBrianR - 67 ZTombstoneCrossCircle - 68 ZTombstoneSmallCross - 69 ZTombstoneBrianP - 71 ZCorpseHanging - 72 ZStatueGargoyleGreenTall - 73 ZStatueGargoyleBlueTall - 74 ZStatueGargoyleGreenShort - 76 ZStatueGargoyleBlueShort - 77 ZBannerTattered - 78 ZTreeLarge1 - 79 ZTreeLarge2 - 80 ZTreeGnarled1 - 81 CrystalVial - 82 ArtiHealth - 83 ArtiFly - 84 ArtiInvulnerability2 - 86 ArtiDarkServant - 87 ZTreeGnarled2 - 88 ZLog - 89 ZStalactiteIceLarge - 90 ZStalactiteIceMedium - 91 ZStalactiteIceSmall - 92 ZStalactiteIceTiny - 93 ZStalagmiteIceLarge - 94 ZStalagmiteIceMedium - 95 ZStalagmiteIceSmall - 96 ZStalagmiteIceTiny - 97 ZRockBrown1 - 98 ZRockBrown2 - 99 ZRockBlack - 100 ZRubble1 - 101 ZRubble2 - 102 ZRubble3 - 103 ZVasePillar - 104 Pottery1 - 105 Pottery2 - 106 Pottery3 - 107 Centaur - 108 ZCorpseLynched - 109 ZCorpseLynchedNoHeart - 110 ZCorpseSitting - 111 BloodPool - 112 LittleFly - 113 LeafSpawner - 114 Bishop - 115 CentaurLeader - 116 ZTwinedTorch - 117 ZTwinedTorchUnlit - 118 Bridge - 119 ZCandle - 120 SerpentLeader - 121 Serpent - 122 Mana1 - 123 FWeapHammer - 124 Mana2 - 140 TeleSmoke - 254 Dragon - 1410 SoundWindHexen - 8000 ArtiPoisonBag - 8002 ArtiSpeedBoots - 8003 ArtiBoostMana - 8004 Mana3 - 8005 MeshArmor - 8006 FalconShield - 8007 PlatinumHelm - 8008 AmuletOfWarding - 8009 CWeapFlame - 8010 FWeapAxe - 8020 IceGuy - 8030 KeySteel - 8031 KeyCave - 8032 KeyAxe - 8033 KeyFire - 8034 KeyEmerald - 8035 KeyDungeon - 8036 KeySilver - 8037 KeyRusted - 8038 KeyHorn - 8039 KeySwamp - 8040 MWeapLightning - 8041 ArtiBoostArmor - 8042 ZFireBull - 8043 ZFireBullUnlit - 8044 ZStatueGargoyleStripeTall - 8045 ZStatueGargoyleDarkRedTall - 8046 ZStatueGargoyleRedTall - 8047 ZStatueGargoyleTanTall - 8048 ZStatueGargoyleRustTall - 8049 ZStatueGargoyleDarkRedShort - 8050 ZStatueGargoyleRedShort - 8051 ZStatueGargoyleTanShort - 8052 ZStatueGargoyleRustShort - 8060 FireThing - 8061 BrassTorch - 8062 TreeDestructible - 8063 ZChandelierUnlit - 8064 ZSuitOfArmor - 8065 ZBell - 8066 ZBlueCandle - 8067 ZIronMaiden - 8068 ZXmasTree - 8069 ZCauldron - 8070 ZCauldronUnlit - 8071 ZChainBit32 - 8072 ZChainBit64 - 8073 ZChainEndHeart - 8074 ZChainEndHook1 - 8075 ZChainEndHook2 - 8076 ZChainEndSpike - 8077 ZChainEndSkull - 8080 Demon2 - 8100 ZBarrel - 8101 ZShrub1 - 8102 ZShrub2 - 8103 ZBucket - 8104 ZPoisonShroom - 8200 KeyCastle - 8500 TableShit1 - 8501 TableShit2 - 8502 TableShit3 - 8503 TableShit4 - 8504 TableShit5 - 8505 TableShit6 - 8506 TableShit7 - 8507 TableShit8 - 8508 TableShit9 - 8509 TableShit10 - 9002 PuzzSkull - 9003 PuzzGemBig - 9004 PuzzGemRed - 9005 PuzzGemGreen1 - 9006 PuzzGemBlue1 - 9007 PuzzBook1 - 9008 PuzzBook2 - 9009 PuzzGemGreen2 - 9010 PuzzGemBlue2 - 9011 ZWingedStatueNoSkull - 9012 ZGemPedestal - 9014 PuzzFlameMask - 9015 PuzzFWeapon - 9016 PuzzCWeapon - 9017 PuzzMWeapon - 9018 PuzzGear1 - 9019 PuzzGear2 - 9020 PuzzGear3 - 9021 PuzzGear4 - 10000 FogSpawner - 10001 FogPatchSmall - 10002 FogPatchMedium - 10003 FogPatchLarge - 10011 WraithBuried - 10030 Ettin - 10040 ArtiTeleportOther - 10060 FireDemon - 10080 Heresiarch - 10090 ThrustFloorDown - 10091 ThrustFloorUp - 10100 FighterBoss - 10101 ClericBoss - 10102 MageBoss - 10110 ArtiBlastRadius - 10120 ArtiHealingRadius - 10200 Korax - 10225 BatSpawner - 10500 FlameSmallTemp - 10501 FlameSmall - 10502 FlameLargeTemp - 10503 FlameLarge + 5 = ZWingedStatue + 6 = ZRock1 + 7 = ZRock2 + 9 = ZRock3 + 10 = CWeapStaff + 12 = FWeaponPiece1 + 13 = FWeaponPiece2 + 15 = ZRock4 + 16 = FWeaponPiece3 + 17 = ZChandelier + 18 = CWeaponPiece1 + 19 = CWeaponPiece2 + 20 = CWeaponPiece3 + 21 = MWeaponPiece1 + 22 = MWeaponPiece2 + 23 = MWeaponPiece3 + 24 = ZTreeDead + 25 = ZTree + 26 = ZTreeSwamp150 + 27 = ZTreeSwamp120 + 28 = ZStumpBurned + 29 = ZStumpBare + 30 = ArtiPork + 31 = Demon1 + 32 = ArtiSuperHealth + 33 = ArtiTorch + 34 = Wraith + 36 = ArtiTeleport + 37 = ZStumpSwamp1 + 38 = ZStumpSwamp2 + 39 = ZShroomLarge1 + 40 = ZShroomLarge2 + 41 = ZShroomLarge3 + 42 = ZShroomSmall1 + 44 = ZShroomSmall2 + 45 = ZShroomSmall3 + 46 = ZShroomSmall4 + 47 = ZShroomSmall5 + 48 = ZStalagmitePillar + 49 = ZStalagmiteLarge + 50 = ZStalagmiteMedium + 51 = ZStalagmiteSmall + 52 = ZStalactiteLarge + 53 = MWeapFrost + 54 = ZWallTorch + 55 = ZWallTorchUnlit + 56 = ZStalactiteMedium + 57 = ZStalactiteSmall + 58 = ZMossCeiling1 + 59 = ZMossCeiling2 + 60 = ZSwampVine + 61 = ZCorpseKabob + 62 = ZCorpseSleeping + 63 = ZTombstoneRIP + 64 = ZTombstoneShane + 65 = ZTombstoneBigCross + 66 = ZTombstoneBrianR + 67 = ZTombstoneCrossCircle + 68 = ZTombstoneSmallCross + 69 = ZTombstoneBrianP + 71 = ZCorpseHanging + 72 = ZStatueGargoyleGreenTall + 73 = ZStatueGargoyleBlueTall + 74 = ZStatueGargoyleGreenShort + 76 = ZStatueGargoyleBlueShort + 77 = ZBannerTattered + 78 = ZTreeLarge1 + 79 = ZTreeLarge2 + 80 = ZTreeGnarled1 + 81 = CrystalVial + 82 = ArtiHealth + 83 = ArtiFly + 84 = ArtiInvulnerability2 + 86 = ArtiDarkServant + 87 = ZTreeGnarled2 + 88 = ZLog + 89 = ZStalactiteIceLarge + 90 = ZStalactiteIceMedium + 91 = ZStalactiteIceSmall + 92 = ZStalactiteIceTiny + 93 = ZStalagmiteIceLarge + 94 = ZStalagmiteIceMedium + 95 = ZStalagmiteIceSmall + 96 = ZStalagmiteIceTiny + 97 = ZRockBrown1 + 98 = ZRockBrown2 + 99 = ZRockBlack + 100 = ZRubble1 + 101 = ZRubble2 + 102 = ZRubble3 + 103 = ZVasePillar + 104 = Pottery1 + 105 = Pottery2 + 106 = Pottery3 + 107 = Centaur + 108 = ZCorpseLynched + 109 = ZCorpseLynchedNoHeart + 110 = ZCorpseSitting + 111 = BloodPool + 112 = LittleFly + 113 = LeafSpawner + 114 = Bishop + 115 = CentaurLeader + 116 = ZTwinedTorch + 117 = ZTwinedTorchUnlit + 118 = Bridge + 119 = ZCandle + 120 = SerpentLeader + 121 = Serpent + 122 = Mana1 + 123 = FWeapHammer + 124 = Mana2 + 140 = TeleSmoke + 254 = Dragon + 1410 = SoundWindHexen + 8000 = ArtiPoisonBag + 8002 = ArtiSpeedBoots + 8003 = ArtiBoostMana + 8004 = Mana3 + 8005 = MeshArmor + 8006 = FalconShield + 8007 = PlatinumHelm + 8008 = AmuletOfWarding + 8009 = CWeapFlame + 8010 = FWeapAxe + 8020 = IceGuy + 8030 = KeySteel + 8031 = KeyCave + 8032 = KeyAxe + 8033 = KeyFire + 8034 = KeyEmerald + 8035 = KeyDungeon + 8036 = KeySilver + 8037 = KeyRusted + 8038 = KeyHorn + 8039 = KeySwamp + 8040 = MWeapLightning + 8041 = ArtiBoostArmor + 8042 = ZFireBull + 8043 = ZFireBullUnlit + 8044 = ZStatueGargoyleStripeTall + 8045 = ZStatueGargoyleDarkRedTall + 8046 = ZStatueGargoyleRedTall + 8047 = ZStatueGargoyleTanTall + 8048 = ZStatueGargoyleRustTall + 8049 = ZStatueGargoyleDarkRedShort + 8050 = ZStatueGargoyleRedShort + 8051 = ZStatueGargoyleTanShort + 8052 = ZStatueGargoyleRustShort + 8060 = FireThing + 8061 = BrassTorch + 8062 = TreeDestructible + 8063 = ZChandelierUnlit + 8064 = ZSuitOfArmor + 8065 = ZBell + 8066 = ZBlueCandle + 8067 = ZIronMaiden + 8068 = ZXmasTree + 8069 = ZCauldron + 8070 = ZCauldronUnlit + 8071 = ZChainBit32 + 8072 = ZChainBit64 + 8073 = ZChainEndHeart + 8074 = ZChainEndHook1 + 8075 = ZChainEndHook2 + 8076 = ZChainEndSpike + 8077 = ZChainEndSkull + 8080 = Demon2 + 8100 = ZBarrel + 8101 = ZShrub1 + 8102 = ZShrub2 + 8103 = ZBucket + 8104 = ZPoisonShroom + 8200 = KeyCastle + 8500 = TableShit1 + 8501 = TableShit2 + 8502 = TableShit3 + 8503 = TableShit4 + 8504 = TableShit5 + 8505 = TableShit6 + 8506 = TableShit7 + 8507 = TableShit8 + 8508 = TableShit9 + 8509 = TableShit10 + 9002 = PuzzSkull + 9003 = PuzzGemBig + 9004 = PuzzGemRed + 9005 = PuzzGemGreen1 + 9006 = PuzzGemBlue1 + 9007 = PuzzBook1 + 9008 = PuzzBook2 + 9009 = PuzzGemGreen2 + 9010 = PuzzGemBlue2 + 9011 = ZWingedStatueNoSkull + 9012 = ZGemPedestal + 9014 = PuzzFlameMask + 9015 = PuzzFWeapon + 9016 = PuzzCWeapon + 9017 = PuzzMWeapon + 9018 = PuzzGear1 + 9019 = PuzzGear2 + 9020 = PuzzGear3 + 9021 = PuzzGear4 + 10000 = FogSpawner + 10001 = FogPatchSmall + 10002 = FogPatchMedium + 10003 = FogPatchLarge + 10011 = WraithBuried + 10030 = Ettin + 10040 = ArtiTeleportOther + 10060 = FireDemon + 10080 = Heresiarch + 10090 = ThrustFloorDown + 10091 = ThrustFloorUp + 10100 = FighterBoss + 10101 = ClericBoss + 10102 = MageBoss + 10110 = ArtiBlastRadius + 10120 = ArtiHealingRadius + 10200 = Korax + 10225 = BatSpawner + 10500 = FlameSmallTemp + 10501 = FlameSmall + 10502 = FlameLargeTemp + 10503 = FlameLarge } skill baby { AutoUseHealth - AmmoFactor = 1.5 - DoubleAmmoFactor = 1.5 + AmmoFactor 1.5 + DoubleAmmoFactor 1.5 DamageFactor = 0.5 EasyBossBrain SpawnFilter = Baby @@ -309,7 +309,7 @@ skill baby skill easy { - DoubleAmmoFactor = 1.5 + DoubleAmmoFactor 1.5 SpawnFilter = Easy Name = "$MNU_YELLOWBELLIES" playerclassname = "fighter", "$MNU_KNIGHT" @@ -319,7 +319,7 @@ skill easy skill normal { - DoubleAmmoFactor = 1.5 + DoubleAmmoFactor 1.5 SpawnFilter = Normal Name = "$MNU_BRINGEST" playerclassname = "fighter", "$MNU_WARRIOR" @@ -330,7 +330,7 @@ skill normal skill hard { - DoubleAmmoFactor = 1.5 + DoubleAmmoFactor 1.5 SpawnFilter = Hard Name = "$MNU_SMITE" playerclassname = "fighter", "$MNU_BERSERKER" @@ -340,8 +340,8 @@ skill hard skill nightmare { - AmmoFactor = 1.5 - DoubleAmmoFactor = 1.5 + AmmoFactor 1.5 + DoubleAmmoFactor 1.5 FastMonsters DisableCheats SpawnFilter = Nightmare From 9617b4afa8207285c59bcb83bab63352b0987c68 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 16:31:28 +0200 Subject: [PATCH 049/144] - fix more search&replace mess. --- wadsrc/static/mapinfo/hexen.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/wadsrc/static/mapinfo/hexen.txt b/wadsrc/static/mapinfo/hexen.txt index 1a92c7f44..90d7398d9 100644 --- a/wadsrc/static/mapinfo/hexen.txt +++ b/wadsrc/static/mapinfo/hexen.txt @@ -21,7 +21,7 @@ gameinfo borderflat = "F_022" border = HereticBorder telefogheight = 32 - defkickback 150 + defkickback = 150 skyflatname = "F_SKY" translator = "xlat/heretic.txt" // not really correct but this was used before. defaultbloodcolor = "68 00 00" @@ -30,15 +30,15 @@ gameinfo statusbar = "sbarinfo/hexen.txt" intermissionmusic = "hub" intermissioncounter = false - weaponslot 1, "FWeapFist", "CWeapMace", "MWeapWand" + weaponslot = 1, "FWeapFist", "CWeapMace", "MWeapWand" weaponslot = 2, "FWeapAxe", "CWeapStaff", "MWeapFrost" weaponslot = 3, "FWeapHammer", "CWeapFlame", "MWeapLightning" weaponslot = 4, "FWeapQuietus", "CWeapWraithverge", "MWeapBloodscourge" dimcolor = "00 00 ff" dimamount = 0.2 definventorymaxamount = 25 - defaultrespawntime 12 - defaultdropstyle 1 + defaultrespawntime = 12 + defaultdropstyle = 1 player5start = 9100 pickupcolor = "d7 ba 45" quitmessages = "$*RAVENQUITMSG" @@ -55,7 +55,7 @@ gameinfo pausesign = "PAUSED" gibfactor = 0.5 cursorpic = "hexncurs" - textscreenx 10 + textscreenx = 10 textscreeny = 5 defaultendsequence = "Inter_Chess" maparrow = "maparrows/dagger.txt" @@ -296,8 +296,8 @@ DoomEdNums skill baby { AutoUseHealth - AmmoFactor 1.5 - DoubleAmmoFactor 1.5 + AmmoFactor = 1.5 + DoubleAmmoFactor = 1.5 DamageFactor = 0.5 EasyBossBrain SpawnFilter = Baby @@ -309,7 +309,7 @@ skill baby skill easy { - DoubleAmmoFactor 1.5 + DoubleAmmoFactor = 1.5 SpawnFilter = Easy Name = "$MNU_YELLOWBELLIES" playerclassname = "fighter", "$MNU_KNIGHT" @@ -319,7 +319,7 @@ skill easy skill normal { - DoubleAmmoFactor 1.5 + DoubleAmmoFactor = 1.5 SpawnFilter = Normal Name = "$MNU_BRINGEST" playerclassname = "fighter", "$MNU_WARRIOR" @@ -330,7 +330,7 @@ skill normal skill hard { - DoubleAmmoFactor 1.5 + DoubleAmmoFactor = 1.5 SpawnFilter = Hard Name = "$MNU_SMITE" playerclassname = "fighter", "$MNU_BERSERKER" @@ -340,8 +340,8 @@ skill hard skill nightmare { - AmmoFactor 1.5 - DoubleAmmoFactor 1.5 + AmmoFactor = 1.5 + DoubleAmmoFactor = 1.5 FastMonsters DisableCheats SpawnFilter = Nightmare From 8b06b240357fe6c69f0e9ef8251eb9cfaa9ec149 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 16:34:07 +0200 Subject: [PATCH 050/144] - took editor numbers out of DECORATE definitions. --- wadsrc/static/actors/chex/chexammo.txt | 16 +- wadsrc/static/actors/chex/chexdecorations.txt | 40 ++-- wadsrc/static/actors/chex/chexitems.txt | 20 +- wadsrc/static/actors/chex/chexkeys.txt | 6 +- wadsrc/static/actors/chex/chexmonsters.txt | 12 +- wadsrc/static/actors/chex/chexweapons.txt | 14 +- wadsrc/static/actors/doom/arachnotron.txt | 2 +- wadsrc/static/actors/doom/archvile.txt | 2 +- wadsrc/static/actors/doom/bossbrain.txt | 6 +- wadsrc/static/actors/doom/bruiser.txt | 4 +- wadsrc/static/actors/doom/cacodemon.txt | 2 +- wadsrc/static/actors/doom/cyberdemon.txt | 2 +- wadsrc/static/actors/doom/deadthings.txt | 18 +- wadsrc/static/actors/doom/demon.txt | 4 +- wadsrc/static/actors/doom/doomammo.txt | 18 +- wadsrc/static/actors/doom/doomarmor.txt | 6 +- wadsrc/static/actors/doom/doomartifacts.txt | 16 +- wadsrc/static/actors/doom/doomdecorations.txt | 98 ++++----- wadsrc/static/actors/doom/doomhealth.txt | 6 +- wadsrc/static/actors/doom/doomimp.txt | 2 +- wadsrc/static/actors/doom/doomkeys.txt | 12 +- wadsrc/static/actors/doom/doommisc.txt | 6 +- wadsrc/static/actors/doom/doomweapons.txt | 16 +- wadsrc/static/actors/doom/fatso.txt | 2 +- wadsrc/static/actors/doom/keen.txt | 2 +- wadsrc/static/actors/doom/lostsoul.txt | 4 +- wadsrc/static/actors/doom/painelemental.txt | 2 +- wadsrc/static/actors/doom/possessed.txt | 8 +- wadsrc/static/actors/doom/revenant.txt | 2 +- wadsrc/static/actors/doom/scriptedmarine.txt | 24 +- wadsrc/static/actors/doom/spidermaster.txt | 2 +- wadsrc/static/actors/doom/stealthmonsters.txt | 24 +- wadsrc/static/actors/heretic/beast.txt | 2 +- wadsrc/static/actors/heretic/clink.txt | 2 +- wadsrc/static/actors/heretic/dsparil.txt | 4 +- wadsrc/static/actors/heretic/hereticammo.txt | 26 +-- wadsrc/static/actors/heretic/hereticarmor.txt | 4 +- .../actors/heretic/hereticartifacts.txt | 8 +- .../actors/heretic/hereticdecorations.txt | 36 +-- wadsrc/static/actors/heretic/hereticimp.txt | 4 +- wadsrc/static/actors/heretic/heretickeys.txt | 12 +- wadsrc/static/actors/heretic/hereticmisc.txt | 10 +- wadsrc/static/actors/heretic/hereticweaps.txt | 14 +- wadsrc/static/actors/heretic/ironlich.txt | 2 +- wadsrc/static/actors/heretic/knight.txt | 4 +- wadsrc/static/actors/heretic/mummy.txt | 8 +- wadsrc/static/actors/heretic/snake.txt | 2 +- wadsrc/static/actors/heretic/wizard.txt | 2 +- wadsrc/static/actors/hexen/bats.txt | 2 +- wadsrc/static/actors/hexen/bishop.txt | 2 +- wadsrc/static/actors/hexen/blastradius.txt | 2 +- wadsrc/static/actors/hexen/boostarmor.txt | 2 +- wadsrc/static/actors/hexen/centaur.txt | 4 +- wadsrc/static/actors/hexen/clericboss.txt | 2 +- wadsrc/static/actors/hexen/clericflame.txt | 2 +- wadsrc/static/actors/hexen/clericholy.txt | 6 +- wadsrc/static/actors/hexen/clericstaff.txt | 2 +- wadsrc/static/actors/hexen/demons.txt | 4 +- wadsrc/static/actors/hexen/dragon.txt | 2 +- wadsrc/static/actors/hexen/ettin.txt | 2 +- wadsrc/static/actors/hexen/fighteraxe.txt | 2 +- wadsrc/static/actors/hexen/fighterboss.txt | 2 +- wadsrc/static/actors/hexen/fighterhammer.txt | 2 +- wadsrc/static/actors/hexen/fighterquietus.txt | 6 +- wadsrc/static/actors/hexen/firedemon.txt | 2 +- wadsrc/static/actors/hexen/flame.txt | 8 +- wadsrc/static/actors/hexen/flechette.txt | 4 +- wadsrc/static/actors/hexen/flies.txt | 2 +- wadsrc/static/actors/hexen/fog.txt | 8 +- wadsrc/static/actors/hexen/healingradius.txt | 2 +- wadsrc/static/actors/hexen/heresiarch.txt | 2 +- wadsrc/static/actors/hexen/hexenarmor.txt | 8 +- .../static/actors/hexen/hexendecorations.txt | 206 +++++++++--------- wadsrc/static/actors/hexen/hexenkeys.txt | 22 +- .../static/actors/hexen/hexenspecialdecs.txt | 46 ++-- wadsrc/static/actors/hexen/iceguy.txt | 2 +- wadsrc/static/actors/hexen/korax.txt | 2 +- wadsrc/static/actors/hexen/mageboss.txt | 2 +- wadsrc/static/actors/hexen/magecone.txt | 2 +- wadsrc/static/actors/hexen/magelightning.txt | 2 +- wadsrc/static/actors/hexen/magestaff.txt | 6 +- wadsrc/static/actors/hexen/mana.txt | 8 +- wadsrc/static/actors/hexen/puzzleitems.txt | 34 +-- wadsrc/static/actors/hexen/serpent.txt | 4 +- wadsrc/static/actors/hexen/speedboots.txt | 2 +- wadsrc/static/actors/hexen/spike.txt | 4 +- wadsrc/static/actors/hexen/summon.txt | 2 +- wadsrc/static/actors/hexen/teleportother.txt | 2 +- wadsrc/static/actors/hexen/wraith.txt | 4 +- wadsrc/static/actors/raven/artiegg.txt | 4 +- wadsrc/static/actors/raven/artitele.txt | 2 +- wadsrc/static/actors/raven/minotaur.txt | 2 +- wadsrc/static/actors/raven/ravenambient.txt | 6 +- wadsrc/static/actors/raven/ravenartifacts.txt | 12 +- wadsrc/static/actors/raven/ravenhealth.txt | 2 +- wadsrc/static/actors/shared/bridge.txt | 14 +- wadsrc/static/actors/shared/camera.txt | 6 +- wadsrc/static/actors/shared/decal.txt | 2 +- wadsrc/static/actors/shared/dog.txt | 2 +- wadsrc/static/actors/shared/fountain.txt | 14 +- wadsrc/static/actors/shared/hatetarget.txt | 2 +- wadsrc/static/actors/shared/mapmarker.txt | 2 +- wadsrc/static/actors/shared/movingcamera.txt | 10 +- wadsrc/static/actors/shared/secrettrigger.txt | 2 +- wadsrc/static/actors/shared/sectoraction.txt | 24 +- wadsrc/static/actors/shared/setcolor.txt | 4 +- wadsrc/static/actors/shared/sharedmisc.txt | 20 +- wadsrc/static/actors/shared/skies.txt | 12 +- .../static/actors/shared/soundenvironment.txt | 2 +- wadsrc/static/actors/shared/soundsequence.txt | 26 +-- wadsrc/static/actors/shared/spark.txt | 2 +- wadsrc/static/actors/shared/teleport.txt | 6 +- wadsrc/static/actors/shared/waterzone.txt | 2 +- wadsrc/static/actors/strife/acolyte.txt | 20 +- wadsrc/static/actors/strife/alienspectres.txt | 10 +- wadsrc/static/actors/strife/beggars.txt | 10 +- wadsrc/static/actors/strife/coin.txt | 8 +- wadsrc/static/actors/strife/crusader.txt | 4 +- wadsrc/static/actors/strife/entityboss.txt | 6 +- wadsrc/static/actors/strife/inquisitor.txt | 2 +- wadsrc/static/actors/strife/loremaster.txt | 2 +- wadsrc/static/actors/strife/macil.txt | 4 +- wadsrc/static/actors/strife/merchants.txt | 8 +- wadsrc/static/actors/strife/oracle.txt | 2 +- wadsrc/static/actors/strife/peasants.txt | 44 ++-- wadsrc/static/actors/strife/programmer.txt | 2 +- wadsrc/static/actors/strife/ratbuddy.txt | 2 +- wadsrc/static/actors/strife/reaver.txt | 2 +- wadsrc/static/actors/strife/rebels.txt | 14 +- wadsrc/static/actors/strife/sentinel.txt | 2 +- wadsrc/static/actors/strife/sigil.txt | 10 +- wadsrc/static/actors/strife/stalker.txt | 2 +- wadsrc/static/actors/strife/strifeammo.txt | 22 +- wadsrc/static/actors/strife/strifearmor.txt | 4 +- wadsrc/static/actors/strife/strifebishop.txt | 2 +- wadsrc/static/actors/strife/strifeitems.txt | 28 +-- wadsrc/static/actors/strife/strifekeys.txt | 36 +-- wadsrc/static/actors/strife/strifestuff.txt | 202 ++++++++--------- wadsrc/static/actors/strife/strifeweapons.txt | 14 +- wadsrc/static/actors/strife/templar.txt | 2 +- .../static/actors/strife/thingstoblowup.txt | 6 +- wadsrc/static/actors/strife/zombie.txt | 4 +- 142 files changed, 811 insertions(+), 811 deletions(-) diff --git a/wadsrc/static/actors/chex/chexammo.txt b/wadsrc/static/actors/chex/chexammo.txt index b7d644876..57a4ca285 100644 --- a/wadsrc/static/actors/chex/chexammo.txt +++ b/wadsrc/static/actors/chex/chexammo.txt @@ -2,13 +2,13 @@ // Mini Zorch ----------------------------------------------------------------- -actor MiniZorchRecharge : Clip 2007 +actor MiniZorchRecharge : Clip { Game Chex inventory.pickupmessage "$GOTZORCHRECHARGE" } -actor MiniZorchPack : Clip 2048 +actor MiniZorchPack : Clip { Game Chex Inventory.PickupMessage "$GOTMINIZORCHPACK" @@ -23,13 +23,13 @@ actor MiniZorchPack : Clip 2048 // Large Zorch ---------------------------------------------------------------- -actor LargeZorchRecharge : Shell 2008 +actor LargeZorchRecharge : Shell { Game Chex inventory.pickupmessage "$GOTLARGEZORCHERRECHARGE" } -actor LargeZorchPack : Shell 2049 +actor LargeZorchPack : Shell { Game Chex Inventory.PickupMessage "$GOTLARGEZORCHERPACK" @@ -44,13 +44,13 @@ actor LargeZorchPack : Shell 2049 // Zorch Propulsor ------------------------------------------------------------ -actor PropulsorZorch : RocketAmmo 2010 +actor PropulsorZorch : RocketAmmo { Game Chex inventory.pickupmessage "$GOTPROPULSORRECHARGE" } -actor PropulsorZorchPack : RocketAmmo 2046 +actor PropulsorZorchPack : RocketAmmo { Game Chex Inventory.PickupMessage "$GOTPROPULSORPACK" @@ -65,13 +65,13 @@ actor PropulsorZorchPack : RocketAmmo 2046 // Phasing Zorch -------------------------------------------------------------- -actor PhasingZorch : Cell 2047 +actor PhasingZorch : Cell { Game Chex inventory.pickupmessage "$GOTPHASINGZORCHERRECHARGE" } -actor PhasingZorchPack : Cell 17 +actor PhasingZorchPack : Cell { Game Chex SpawnID 142 diff --git a/wadsrc/static/actors/chex/chexdecorations.txt b/wadsrc/static/actors/chex/chexdecorations.txt index 29b0099c1..398e08836 100644 --- a/wadsrc/static/actors/chex/chexdecorations.txt +++ b/wadsrc/static/actors/chex/chexdecorations.txt @@ -2,19 +2,19 @@ // Civilians ------------------------------------------------------------------ -actor ChexCivilian1 : GreenTorch 45 +actor ChexCivilian1 : GreenTorch { game Chex height 54 } -actor ChexCivilian2 : ShortGreenTorch 56 +actor ChexCivilian2 : ShortGreenTorch { game Chex height 54 } -actor ChexCivilian3 : ShortRedTorch 57 +actor ChexCivilian3 : ShortRedTorch { game Chex height 48 @@ -22,13 +22,13 @@ actor ChexCivilian3 : ShortRedTorch 57 // Landing Zone --------------------------------------------------------------- -actor ChexLandingLight : Column 2028 +actor ChexLandingLight : Column { game Chex height 35 } -actor ChexSpaceship : TechPillar 48 +actor ChexSpaceship : TechPillar { game Chex height 52 @@ -36,37 +36,37 @@ actor ChexSpaceship : TechPillar 48 // Trees and Plants ----------------------------------------------------------- -actor ChexAppleTree : Stalagtite 47 +actor ChexAppleTree : Stalagtite { game Chex height 92 } -actor ChexBananaTree : BigTree 54 +actor ChexBananaTree : BigTree { game Chex height 108 } -actor ChexOrangeTree : TorchTree 43 +actor ChexOrangeTree : TorchTree { game Chex height 92 } -actor ChexSubmergedPlant : ShortGreenColumn 31 +actor ChexSubmergedPlant : ShortGreenColumn { game Chex height 42 } -actor ChexTallFlower : HeadsOnAStick 28 +actor ChexTallFlower : HeadsOnAStick { game Chex height 25 } -actor ChexTallFlower2 : DeadStick 25 +actor ChexTallFlower2 : DeadStick { game Chex height 25 @@ -74,7 +74,7 @@ actor ChexTallFlower2 : DeadStick 25 // Slime Fountain ------------------------------------------------------------- -actor ChexSlimeFountain : BlueTorch 44 +actor ChexSlimeFountain : BlueTorch { game Chex height 48 @@ -88,13 +88,13 @@ actor ChexSlimeFountain : BlueTorch 44 // Cavern Decorations --------------------------------------------------------- -actor ChexCavernColumn : TallRedColumn 32 +actor ChexCavernColumn : TallRedColumn { game Chex height 128 } -actor ChexCavernStalagmite : TallGreenColumn 30 +actor ChexCavernStalagmite : TallGreenColumn { game Chex height 60 @@ -102,38 +102,38 @@ actor ChexCavernStalagmite : TallGreenColumn 30 // Misc. Props ---------------------------------------------------------------- -actor ChexChemicalBurner : EvilEye 41 +actor ChexChemicalBurner : EvilEye { game Chex height 25 } -actor ChexChemicalFlask : Candlestick 34 +actor ChexChemicalFlask : Candlestick { game Chex renderstyle translucent alpha 0.75 } -actor ChexFlagOnPole : SkullColumn 37 +actor ChexFlagOnPole : SkullColumn { game Chex height 128 } -actor ChexGasTank : Candelabra 35 +actor ChexGasTank : Candelabra { game Chex height 36 } -actor ChexLightColumn : ShortBlueTorch 55 +actor ChexLightColumn : ShortBlueTorch { game Chex height 86 } -actor ChexMineCart : ShortRedColumn 33 +actor ChexMineCart : ShortRedColumn { game Chex height 30 diff --git a/wadsrc/static/actors/chex/chexitems.txt b/wadsrc/static/actors/chex/chexitems.txt index bbdc68dea..b26065395 100644 --- a/wadsrc/static/actors/chex/chexitems.txt +++ b/wadsrc/static/actors/chex/chexitems.txt @@ -3,26 +3,26 @@ // Health --------------------------------------------------------------------- -actor GlassOfWater : HealthBonus 2014 +actor GlassOfWater : HealthBonus { game Chex inventory.pickupmessage "$GOTWATER" } -actor BowlOfFruit : Stimpack 2011 +actor BowlOfFruit : Stimpack { game Chex inventory.pickupmessage "$GOTFRUIT" } -actor BowlOfVegetables : Medikit 2012 +actor BowlOfVegetables : Medikit { game Chex inventory.pickupmessage "$GOTVEGETABLES" health.lowmessage 25, "$GOTVEGETABLESNEED" } -actor SuperchargeBreakfast : Soulsphere 2013 +actor SuperchargeBreakfast : Soulsphere { game Chex inventory.pickupmessage "$GOTBREAKFAST" @@ -30,19 +30,19 @@ actor SuperchargeBreakfast : Soulsphere 2013 // Armor ---------------------------------------------------------------------- -actor SlimeRepellent : ArmorBonus 2015 +actor SlimeRepellent : ArmorBonus { game Chex inventory.pickupmessage "$GOTREPELLENT" } -actor ChexArmor : GreenArmor 2018 +actor ChexArmor : GreenArmor { game Chex inventory.pickupmessage "$GOTCHEXARMOR" } -actor SuperChexArmor : BlueArmor 2019 +actor SuperChexArmor : BlueArmor { game Chex inventory.pickupmessage "$GOTSUPERCHEXARMOR" @@ -50,19 +50,19 @@ actor SuperChexArmor : BlueArmor 2019 // Powerups =================================================================== -actor ComputerAreaMap : Allmap 2026 +actor ComputerAreaMap : Allmap { game Chex inventory.pickupmessage "$GOTCHEXMAP" } -actor SlimeProofSuit : RadSuit 2025 +actor SlimeProofSuit : RadSuit { game Chex inventory.pickupmessage "$GOTSLIMESUIT" } -actor Zorchpack : Backpack 8 +actor Zorchpack : Backpack { game Chex inventory.pickupmessage "$GOTZORCHPACK" diff --git a/wadsrc/static/actors/chex/chexkeys.txt b/wadsrc/static/actors/chex/chexkeys.txt index 60c9ce54e..6142f833c 100644 --- a/wadsrc/static/actors/chex/chexkeys.txt +++ b/wadsrc/static/actors/chex/chexkeys.txt @@ -1,18 +1,18 @@ // These are merely renames of the Doom cards -actor ChexBlueCard : BlueCard 5 +actor ChexBlueCard : BlueCard { Game Chex inventory.pickupmessage "$GOTCBLUEKEY" } -actor ChexYellowCard : YellowCard 6 +actor ChexYellowCard : YellowCard { Game Chex inventory.pickupmessage "$GOTCYELLOWKEY" } -actor ChexRedCard : RedCard 13 +actor ChexRedCard : RedCard { Game Chex inventory.pickupmessage "$GOTCREDKEY" diff --git a/wadsrc/static/actors/chex/chexmonsters.txt b/wadsrc/static/actors/chex/chexmonsters.txt index 3941e8eb9..eae27f6a1 100644 --- a/wadsrc/static/actors/chex/chexmonsters.txt +++ b/wadsrc/static/actors/chex/chexmonsters.txt @@ -5,7 +5,7 @@ // //=========================================================================== -actor FlemoidusCommonus : ZombieMan 3004 +actor FlemoidusCommonus : ZombieMan { Game Chex DropItem "" @@ -25,7 +25,7 @@ actor FlemoidusCommonus : ZombieMan 3004 // //=========================================================================== -actor FlemoidusBipedicus : ShotgunGuy 9 +actor FlemoidusBipedicus : ShotgunGuy { Game Chex DropItem "" @@ -45,7 +45,7 @@ actor FlemoidusBipedicus : ShotgunGuy 9 // //=========================================================================== -actor ArmoredFlemoidusBipedicus : DoomImp 3001 +actor ArmoredFlemoidusBipedicus : DoomImp { Game Chex Obituary "$OB_BIPEDICUS2" @@ -58,7 +58,7 @@ actor ArmoredFlemoidusBipedicus : DoomImp 3001 // //=========================================================================== -actor FlemoidusCycloptisCommonus : Demon 3002 +actor FlemoidusCycloptisCommonus : Demon { Game Chex Obituary "$OB_CYCLOPTIS" @@ -70,7 +70,7 @@ actor FlemoidusCycloptisCommonus : Demon 3002 // //=========================================================================== -actor Flembrane : BaronOfHell 3003 +actor Flembrane : BaronOfHell { Game Chex radius 44 @@ -88,7 +88,7 @@ actor Flembrane : BaronOfHell 3003 //=========================================================================== -actor ChexSoul : LostSoul 3006 +actor ChexSoul : LostSoul { Game Chex height 0 diff --git a/wadsrc/static/actors/chex/chexweapons.txt b/wadsrc/static/actors/chex/chexweapons.txt index 96d8b4c4b..bb00e255c 100644 --- a/wadsrc/static/actors/chex/chexweapons.txt +++ b/wadsrc/static/actors/chex/chexweapons.txt @@ -7,7 +7,7 @@ actor Bootspoon : Fist Tag "$TAG_SPOON" } -actor SuperBootspork : Chainsaw 2005 +actor SuperBootspork : Chainsaw { game Chex obituary "$OB_MPBOOTSPORK" @@ -28,7 +28,7 @@ actor MiniZorcher : Pistol } } -actor LargeZorcher : Shotgun 2001 +actor LargeZorcher : Shotgun { game Chex obituary "$OB_MPZORCH" @@ -36,7 +36,7 @@ actor LargeZorcher : Shotgun 2001 Tag "$TAG_LARGEZORCHER" } -actor SuperLargeZorcher : SuperShotgun 82 +actor SuperLargeZorcher : SuperShotgun { game Chex obituary "$OB_MPMEGAZORCH" @@ -44,7 +44,7 @@ actor SuperLargeZorcher : SuperShotgun 82 Tag "$TAG_SUPERLARGEZORCHER" } -actor RapidZorcher : Chaingun 2002 +actor RapidZorcher : Chaingun { game Chex obituary "$OB_MPRAPIDZORCH" @@ -52,7 +52,7 @@ actor RapidZorcher : Chaingun 2002 Tag "$TAG_RAPIDZORCHER" } -actor ZorchPropulsor : RocketLauncher 2003 +actor ZorchPropulsor : RocketLauncher { game Chex obituary "" @@ -77,7 +77,7 @@ actor PropulsorMissile : Rocket Alpha 0.75 } -actor PhasingZorcher : PlasmaRifle 2004 +actor PhasingZorcher : PlasmaRifle { game Chex obituary "" @@ -107,7 +107,7 @@ actor PhaseZorchMissile : PlasmaBall Alpha 0.75 } -actor LAZDevice : BFG9000 2006 +actor LAZDevice : BFG9000 { game Chex obituary "" diff --git a/wadsrc/static/actors/doom/arachnotron.txt b/wadsrc/static/actors/doom/arachnotron.txt index 9348339d5..9831e7ea9 100644 --- a/wadsrc/static/actors/doom/arachnotron.txt +++ b/wadsrc/static/actors/doom/arachnotron.txt @@ -3,7 +3,7 @@ // Arachnotron // //=========================================================================== -ACTOR Arachnotron 68 +ACTOR Arachnotron { Game Doom SpawnID 6 diff --git a/wadsrc/static/actors/doom/archvile.txt b/wadsrc/static/actors/doom/archvile.txt index 96503d717..ba3a9ca16 100644 --- a/wadsrc/static/actors/doom/archvile.txt +++ b/wadsrc/static/actors/doom/archvile.txt @@ -4,7 +4,7 @@ // //=========================================================================== -ACTOR Archvile 64 +ACTOR Archvile { Game Doom SpawnID 111 diff --git a/wadsrc/static/actors/doom/bossbrain.txt b/wadsrc/static/actors/doom/bossbrain.txt index 492cb1f80..92b8611f9 100644 --- a/wadsrc/static/actors/doom/bossbrain.txt +++ b/wadsrc/static/actors/doom/bossbrain.txt @@ -5,7 +5,7 @@ // //=========================================================================== -ACTOR BossBrain 88 +ACTOR BossBrain { Game Doom Health 250 @@ -43,7 +43,7 @@ ACTOR BossBrain 88 // //=========================================================================== -ACTOR BossEye 89 +ACTOR BossEye { Game Doom Height 32 @@ -67,7 +67,7 @@ ACTOR BossEye 89 // //=========================================================================== -ACTOR BossTarget : SpecialSpot 87 +ACTOR BossTarget : SpecialSpot { Game Doom Height 32 diff --git a/wadsrc/static/actors/doom/bruiser.txt b/wadsrc/static/actors/doom/bruiser.txt index 3f461f585..57af9e9a0 100644 --- a/wadsrc/static/actors/doom/bruiser.txt +++ b/wadsrc/static/actors/doom/bruiser.txt @@ -3,7 +3,7 @@ // Baron of Hell // //=========================================================================== -ACTOR BaronOfHell 3003 +ACTOR BaronOfHell { Game Doom SpawnID 3 @@ -59,7 +59,7 @@ ACTOR BaronOfHell 3003 // Hell Knight // //=========================================================================== -ACTOR HellKnight : BaronOfHell 69 +ACTOR HellKnight : BaronOfHell { Game Doom SpawnID 113 diff --git a/wadsrc/static/actors/doom/cacodemon.txt b/wadsrc/static/actors/doom/cacodemon.txt index 89761e014..c2feabee0 100644 --- a/wadsrc/static/actors/doom/cacodemon.txt +++ b/wadsrc/static/actors/doom/cacodemon.txt @@ -3,7 +3,7 @@ // Cacodemon // //=========================================================================== -ACTOR Cacodemon 3005 +ACTOR Cacodemon { Game Doom SpawnID 19 diff --git a/wadsrc/static/actors/doom/cyberdemon.txt b/wadsrc/static/actors/doom/cyberdemon.txt index 60bcbcc4b..f4fa16ac2 100644 --- a/wadsrc/static/actors/doom/cyberdemon.txt +++ b/wadsrc/static/actors/doom/cyberdemon.txt @@ -4,7 +4,7 @@ // Cyberdemon // //=========================================================================== -ACTOR Cyberdemon 16 +ACTOR Cyberdemon { Game Doom SpawnID 114 diff --git a/wadsrc/static/actors/doom/deadthings.txt b/wadsrc/static/actors/doom/deadthings.txt index b8faa2288..74d4184cc 100644 --- a/wadsrc/static/actors/doom/deadthings.txt +++ b/wadsrc/static/actors/doom/deadthings.txt @@ -1,6 +1,6 @@ // Gibbed marine ----------------------------------------------------------- -actor GibbedMarine 10 +actor GibbedMarine { Game Doom SpawnID 145 @@ -14,14 +14,14 @@ actor GibbedMarine 10 // Gibbed marine (extra copy) ---------------------------------------------- -actor GibbedMarineExtra : GibbedMarine 12 +actor GibbedMarineExtra : GibbedMarine { Game Doom } // Dead marine ------------------------------------------------------------- -actor DeadMarine 15 +actor DeadMarine { Game Doom States @@ -39,7 +39,7 @@ actor DeadMarine 15 // Dead zombie man --------------------------------------------------------- -actor DeadZombieMan : ZombieMan 18 +actor DeadZombieMan : ZombieMan { Skip_Super Game Doom @@ -53,7 +53,7 @@ actor DeadZombieMan : ZombieMan 18 // Dead shotgun guy -------------------------------------------------------- -actor DeadShotgunGuy : ShotgunGuy 19 +actor DeadShotgunGuy : ShotgunGuy { Skip_Super Game Doom @@ -67,7 +67,7 @@ actor DeadShotgunGuy : ShotgunGuy 19 // Dead imp ---------------------------------------------------------------- -actor DeadDoomImp : DoomImp 20 +actor DeadDoomImp : DoomImp { Skip_Super Game Doom @@ -80,7 +80,7 @@ actor DeadDoomImp : DoomImp 20 // Dead demon -------------------------------------------------------------- -actor DeadDemon : Demon 21 +actor DeadDemon : Demon { Skip_Super Game Doom @@ -93,7 +93,7 @@ actor DeadDemon : Demon 21 // Dead cacodemon ---------------------------------------------------------- -actor DeadCacodemon : Cacodemon 22 +actor DeadCacodemon : Cacodemon { Skip_Super Game Doom @@ -112,7 +112,7 @@ actor DeadCacodemon : Cacodemon 22 * a holdover from that.) */ -actor DeadLostSoul : LostSoul 23 +actor DeadLostSoul : LostSoul { Skip_Super Game Doom diff --git a/wadsrc/static/actors/doom/demon.txt b/wadsrc/static/actors/doom/demon.txt index ecd6fa8a6..d88d67a72 100644 --- a/wadsrc/static/actors/doom/demon.txt +++ b/wadsrc/static/actors/doom/demon.txt @@ -3,7 +3,7 @@ // Pink Demon // //=========================================================================== -ACTOR Demon 3002 +ACTOR Demon { Game Doom SpawnID 8 @@ -57,7 +57,7 @@ ACTOR Demon 3002 // Spectre // //=========================================================================== -ACTOR Spectre : Demon 58 +ACTOR Spectre : Demon { Game Doom SpawnID 9 diff --git a/wadsrc/static/actors/doom/doomammo.txt b/wadsrc/static/actors/doom/doomammo.txt index 78ddc0af9..9d25c3b46 100644 --- a/wadsrc/static/actors/doom/doomammo.txt +++ b/wadsrc/static/actors/doom/doomammo.txt @@ -1,6 +1,6 @@ // Clip -------------------------------------------------------------------- -ACTOR Clip : Ammo 2007 +ACTOR Clip : Ammo { Game Doom SpawnID 11 @@ -20,7 +20,7 @@ ACTOR Clip : Ammo 2007 // Clip box ---------------------------------------------------------------- -ACTOR ClipBox : Clip 2048 +ACTOR ClipBox : Clip { Game Doom SpawnID 139 @@ -36,7 +36,7 @@ ACTOR ClipBox : Clip 2048 // Rocket ------------------------------------------------------------------ -ACTOR RocketAmmo : Ammo 2010 +ACTOR RocketAmmo : Ammo { Game Doom SpawnID 140 @@ -56,7 +56,7 @@ ACTOR RocketAmmo : Ammo 2010 // Rocket box -------------------------------------------------------------- -ACTOR RocketBox : RocketAmmo 2046 +ACTOR RocketBox : RocketAmmo { Game Doom SpawnID 141 @@ -72,7 +72,7 @@ ACTOR RocketBox : RocketAmmo 2046 // Cell -------------------------------------------------------------------- -ACTOR Cell : Ammo 2047 +ACTOR Cell : Ammo { Game Doom SpawnID 75 @@ -92,7 +92,7 @@ ACTOR Cell : Ammo 2047 // Cell pack --------------------------------------------------------------- -ACTOR CellPack : Cell 17 +ACTOR CellPack : Cell { Game Doom SpawnID 142 @@ -108,7 +108,7 @@ ACTOR CellPack : Cell 17 // Shells ------------------------------------------------------------------ -ACTOR Shell : Ammo 2008 +ACTOR Shell : Ammo { Game Doom SpawnID 12 @@ -128,7 +128,7 @@ ACTOR Shell : Ammo 2008 // Shell box --------------------------------------------------------------- -ACTOR ShellBox : Shell 2049 +ACTOR ShellBox : Shell { Game Doom SpawnID 143 @@ -144,7 +144,7 @@ ACTOR ShellBox : Shell 2049 // Backpack --------------------------------------------------------------- -ACTOR Backpack : BackpackItem 8 +ACTOR Backpack : BackpackItem { Game Doom SpawnID 144 diff --git a/wadsrc/static/actors/doom/doomarmor.txt b/wadsrc/static/actors/doom/doomarmor.txt index 486fc0611..1cc6847ed 100644 --- a/wadsrc/static/actors/doom/doomarmor.txt +++ b/wadsrc/static/actors/doom/doomarmor.txt @@ -1,7 +1,7 @@ // Armor bonus -------------------------------------------------------------- -Actor ArmorBonus : BasicArmorBonus 2015 +Actor ArmorBonus : BasicArmorBonus { Game Doom SpawnID 22 @@ -24,7 +24,7 @@ Actor ArmorBonus : BasicArmorBonus 2015 // Green armor -------------------------------------------------------------- -Actor GreenArmor : BasicArmorPickup 2018 +Actor GreenArmor : BasicArmorPickup { Game Doom SpawnID 68 @@ -45,7 +45,7 @@ Actor GreenArmor : BasicArmorPickup 2018 // Blue armor --------------------------------------------------------------- -Actor BlueArmor : BasicArmorPickup 2019 +Actor BlueArmor : BasicArmorPickup { Game Doom SpawnID 69 diff --git a/wadsrc/static/actors/doom/doomartifacts.txt b/wadsrc/static/actors/doom/doomartifacts.txt index fb822f30f..6335d1b16 100644 --- a/wadsrc/static/actors/doom/doomartifacts.txt +++ b/wadsrc/static/actors/doom/doomartifacts.txt @@ -1,6 +1,6 @@ // Invulnerability Sphere --------------------------------------------------- -ACTOR InvulnerabilitySphere : PowerupGiver 2022 +ACTOR InvulnerabilitySphere : PowerupGiver { Game Doom SpawnID 133 @@ -22,7 +22,7 @@ ACTOR InvulnerabilitySphere : PowerupGiver 2022 // Soulsphere -------------------------------------------------------------- -ACTOR Soulsphere : Health 2013 +ACTOR Soulsphere : Health { Game Doom SpawnID 25 @@ -58,7 +58,7 @@ actor BlueArmorForMegasphere : BlueArmor Armor.SaveAmount 200 } -ACTOR Megasphere : CustomInventory 83 +ACTOR Megasphere : CustomInventory { Game Doom SpawnID 132 @@ -80,7 +80,7 @@ ACTOR Megasphere : CustomInventory 83 // Invisibility ------------------------------------------------------------- -ACTOR BlurSphere : PowerupGiver 2024 +ACTOR BlurSphere : PowerupGiver { Game Doom SpawnID 135 @@ -103,7 +103,7 @@ ACTOR BlurSphere : PowerupGiver 2024 // Radiation suit (aka iron feet) ------------------------------------------- -ACTOR RadSuit : PowerupGiver 2025 +ACTOR RadSuit : PowerupGiver { Game Doom SpawnID 136 @@ -123,7 +123,7 @@ ACTOR RadSuit : PowerupGiver 2025 // infrared ----------------------------------------------------------------- -ACTOR Infrared : PowerupGiver 2045 +ACTOR Infrared : PowerupGiver { Game Doom SpawnID 138 @@ -144,7 +144,7 @@ ACTOR Infrared : PowerupGiver 2045 // Allmap ------------------------------------------------------------------- -ACTOR Allmap : MapRevealer 2026 +ACTOR Allmap : MapRevealer { Game Doom SpawnID 137 @@ -164,7 +164,7 @@ ACTOR Allmap : MapRevealer 2026 // Berserk ------------------------------------------------------------------ -ACTOR Berserk : CustomInventory 2023 +ACTOR Berserk : CustomInventory { Game Doom SpawnID 134 diff --git a/wadsrc/static/actors/doom/doomdecorations.txt b/wadsrc/static/actors/doom/doomdecorations.txt index 9d2d230eb..7233657d8 100644 --- a/wadsrc/static/actors/doom/doomdecorations.txt +++ b/wadsrc/static/actors/doom/doomdecorations.txt @@ -1,7 +1,7 @@ // Tech lamp --------------------------------------------------------------- -ACTOR TechLamp 85 +ACTOR TechLamp { Game Doom Radius 16 @@ -18,7 +18,7 @@ ACTOR TechLamp 85 // Tech lamp 2 ------------------------------------------------------------- -ACTOR TechLamp2 86 +ACTOR TechLamp2 { Game Doom Radius 16 @@ -35,7 +35,7 @@ ACTOR TechLamp2 86 // Column ------------------------------------------------------------------ -ACTOR Column 2028 +ACTOR Column { Game Doom Radius 16 @@ -52,7 +52,7 @@ ACTOR Column 2028 // Tall green column ------------------------------------------------------- -ACTOR TallGreenColumn 30 +ACTOR TallGreenColumn { Game Doom Radius 16 @@ -69,7 +69,7 @@ ACTOR TallGreenColumn 30 // Short green column ------------------------------------------------------ -ACTOR ShortGreenColumn 31 +ACTOR ShortGreenColumn { Game Doom Radius 16 @@ -86,7 +86,7 @@ ACTOR ShortGreenColumn 31 // Tall red column --------------------------------------------------------- -ACTOR TallRedColumn 32 +ACTOR TallRedColumn { Game Doom Radius 16 @@ -103,7 +103,7 @@ ACTOR TallRedColumn 32 // Short red column -------------------------------------------------------- -ACTOR ShortRedColumn 33 +ACTOR ShortRedColumn { Game Doom Radius 16 @@ -120,7 +120,7 @@ ACTOR ShortRedColumn 33 // Skull column ------------------------------------------------------------ -ACTOR SkullColumn 37 +ACTOR SkullColumn { Game Doom Radius 16 @@ -137,7 +137,7 @@ ACTOR SkullColumn 37 // Heart column ------------------------------------------------------------ -ACTOR HeartColumn 36 +ACTOR HeartColumn { Game Doom Radius 16 @@ -154,7 +154,7 @@ ACTOR HeartColumn 36 // Evil eye ---------------------------------------------------------------- -ACTOR EvilEye 41 +ACTOR EvilEye { Game Doom Radius 16 @@ -171,7 +171,7 @@ ACTOR EvilEye 41 // Floating skull ---------------------------------------------------------- -ACTOR FloatingSkull 42 +ACTOR FloatingSkull { Game Doom Radius 16 @@ -188,7 +188,7 @@ ACTOR FloatingSkull 42 // Torch tree -------------------------------------------------------------- -ACTOR TorchTree 43 +ACTOR TorchTree { Game Doom Radius 16 @@ -205,7 +205,7 @@ ACTOR TorchTree 43 // Blue torch -------------------------------------------------------------- -ACTOR BlueTorch 44 +ACTOR BlueTorch { Game Doom Radius 16 @@ -222,7 +222,7 @@ ACTOR BlueTorch 44 // Green torch ------------------------------------------------------------- -ACTOR GreenTorch 45 +ACTOR GreenTorch { Game Doom Radius 16 @@ -239,7 +239,7 @@ ACTOR GreenTorch 45 // Red torch --------------------------------------------------------------- -ACTOR RedTorch 46 +ACTOR RedTorch { Game Doom Radius 16 @@ -256,7 +256,7 @@ ACTOR RedTorch 46 // Short blue torch -------------------------------------------------------- -ACTOR ShortBlueTorch 55 +ACTOR ShortBlueTorch { Game Doom Radius 16 @@ -273,7 +273,7 @@ ACTOR ShortBlueTorch 55 // Short green torch ------------------------------------------------------- -ACTOR ShortGreenTorch 56 +ACTOR ShortGreenTorch { Game Doom Radius 16 @@ -290,7 +290,7 @@ ACTOR ShortGreenTorch 56 // Short red torch --------------------------------------------------------- -ACTOR ShortRedTorch 57 +ACTOR ShortRedTorch { Game Doom Radius 16 @@ -307,7 +307,7 @@ ACTOR ShortRedTorch 57 // Stalagtite -------------------------------------------------------------- -ACTOR Stalagtite 47 +ACTOR Stalagtite { Game Doom Radius 16 @@ -324,7 +324,7 @@ ACTOR Stalagtite 47 // Tech pillar ------------------------------------------------------------- -ACTOR TechPillar 48 +ACTOR TechPillar { Game Doom Radius 16 @@ -341,7 +341,7 @@ ACTOR TechPillar 48 // Candle stick ------------------------------------------------------------ -ACTOR Candlestick 34 +ACTOR Candlestick { Game Doom Radius 20 @@ -357,7 +357,7 @@ ACTOR Candlestick 34 // Candelabra -------------------------------------------------------------- -ACTOR Candelabra 35 +ACTOR Candelabra { Game Doom Radius 16 @@ -374,7 +374,7 @@ ACTOR Candelabra 35 // Bloody twitch ----------------------------------------------------------- -ACTOR BloodyTwitch 49 +ACTOR BloodyTwitch { Game Doom Radius 16 @@ -395,7 +395,7 @@ ACTOR BloodyTwitch 49 // Meat 2 ------------------------------------------------------------------ -ACTOR Meat2 50 +ACTOR Meat2 { Game Doom Radius 16 @@ -413,7 +413,7 @@ ACTOR Meat2 50 // Meat 3 ------------------------------------------------------------------ -ACTOR Meat3 51 +ACTOR Meat3 { Game Doom Radius 16 @@ -431,7 +431,7 @@ ACTOR Meat3 51 // Meat 4 ------------------------------------------------------------------ -ACTOR Meat4 52 +ACTOR Meat4 { Game Doom Radius 16 @@ -449,7 +449,7 @@ ACTOR Meat4 52 // Meat 5 ------------------------------------------------------------------ -ACTOR Meat5 53 +ACTOR Meat5 { Game Doom Radius 16 @@ -467,28 +467,28 @@ ACTOR Meat5 53 // Nonsolid meat ----------------------------------------------------------- -ACTOR NonsolidMeat2 : Meat2 59 +ACTOR NonsolidMeat2 : Meat2 { Game Doom -SOLID Radius 20 } -ACTOR NonsolidMeat3 : Meat3 61 +ACTOR NonsolidMeat3 : Meat3 { Game Doom -SOLID Radius 20 } -ACTOR NonsolidMeat4 : Meat4 60 +ACTOR NonsolidMeat4 : Meat4 { Game Doom -SOLID Radius 20 } -ACTOR NonsolidMeat5 : Meat5 62 +ACTOR NonsolidMeat5 : Meat5 { Game Doom -SOLID @@ -497,7 +497,7 @@ ACTOR NonsolidMeat5 : Meat5 62 // Nonsolid bloody twitch -------------------------------------------------- -ACTOR NonsolidTwitch : BloodyTwitch 63 +ACTOR NonsolidTwitch : BloodyTwitch { Game Doom -SOLID @@ -506,7 +506,7 @@ ACTOR NonsolidTwitch : BloodyTwitch 63 // Head on a stick --------------------------------------------------------- -ACTOR HeadOnAStick 27 +ACTOR HeadOnAStick { Game Doom Radius 16 @@ -523,7 +523,7 @@ ACTOR HeadOnAStick 27 // Heads (plural!) on a stick ---------------------------------------------- -ACTOR HeadsOnAStick 28 +ACTOR HeadsOnAStick { Game Doom Radius 16 @@ -540,7 +540,7 @@ ACTOR HeadsOnAStick 28 // Head candles ------------------------------------------------------------ -ACTOR HeadCandles 29 +ACTOR HeadCandles { Game Doom Radius 16 @@ -557,7 +557,7 @@ ACTOR HeadCandles 29 // Dead on a stick --------------------------------------------------------- -ACTOR DeadStick 25 +ACTOR DeadStick { Game Doom Radius 16 @@ -574,7 +574,7 @@ ACTOR DeadStick 25 // Still alive on a stick -------------------------------------------------- -ACTOR LiveStick 26 +ACTOR LiveStick { Game Doom Radius 16 @@ -592,7 +592,7 @@ ACTOR LiveStick 26 // Big tree ---------------------------------------------------------------- -ACTOR BigTree 54 +ACTOR BigTree { Game Doom Radius 32 @@ -609,7 +609,7 @@ ACTOR BigTree 54 // Burning barrel ---------------------------------------------------------- -ACTOR BurningBarrel 70 +ACTOR BurningBarrel { Game Doom SpawnID 149 @@ -627,7 +627,7 @@ ACTOR BurningBarrel 70 // Hanging with no guts ---------------------------------------------------- -ACTOR HangNoGuts 73 +ACTOR HangNoGuts { Game Doom Radius 16 @@ -645,7 +645,7 @@ ACTOR HangNoGuts 73 // Hanging from bottom with no brain --------------------------------------- -ACTOR HangBNoBrain 74 +ACTOR HangBNoBrain { Game Doom Radius 16 @@ -663,7 +663,7 @@ ACTOR HangBNoBrain 74 // Hanging from top, looking down ------------------------------------------ -ACTOR HangTLookingDown 75 +ACTOR HangTLookingDown { Game Doom Radius 16 @@ -681,7 +681,7 @@ ACTOR HangTLookingDown 75 // Hanging from top, looking up -------------------------------------------- -ACTOR HangTLookingUp 77 +ACTOR HangTLookingUp { Game Doom Radius 16 @@ -699,7 +699,7 @@ ACTOR HangTLookingUp 77 // Hanging from top, skully ------------------------------------------------ -ACTOR HangTSkull 76 +ACTOR HangTSkull { Game Doom Radius 16 @@ -717,7 +717,7 @@ ACTOR HangTSkull 76 // Hanging from top without a brain ---------------------------------------- -ACTOR HangTNoBrain 78 +ACTOR HangTNoBrain { Game Doom Radius 16 @@ -735,7 +735,7 @@ ACTOR HangTNoBrain 78 // Colon gibs -------------------------------------------------------------- -ACTOR ColonGibs 79 +ACTOR ColonGibs { Game Doom SpawnID 147 @@ -753,7 +753,7 @@ ACTOR ColonGibs 79 // Small pool o' blood ----------------------------------------------------- -ACTOR SmallBloodPool 80 +ACTOR SmallBloodPool { Game Doom SpawnID 148 @@ -771,7 +771,7 @@ ACTOR SmallBloodPool 80 // brain stem lying on the ground ------------------------------------------ -ACTOR BrainStem 81 +ACTOR BrainStem { Game Doom SpawnID 150 @@ -790,7 +790,7 @@ ACTOR BrainStem 81 // Grey stalagmite (unused Doom sprite, definition taken from Skulltag ----- -ACTOR Stalagmite 5050 +ACTOR Stalagmite { Game Doom Radius 16 diff --git a/wadsrc/static/actors/doom/doomhealth.txt b/wadsrc/static/actors/doom/doomhealth.txt index dce00ace9..bc68c1017 100644 --- a/wadsrc/static/actors/doom/doomhealth.txt +++ b/wadsrc/static/actors/doom/doomhealth.txt @@ -1,6 +1,6 @@ // Health bonus ------------------------------------------------------------- -ACTOR HealthBonus : Health 2014 +ACTOR HealthBonus : Health { Game Doom SpawnID 152 @@ -19,7 +19,7 @@ ACTOR HealthBonus : Health 2014 // Stimpack ----------------------------------------------------------------- -ACTOR Stimpack : Health 2011 +ACTOR Stimpack : Health { Game Doom SpawnID 23 @@ -35,7 +35,7 @@ ACTOR Stimpack : Health 2011 // Medikit ----------------------------------------------------------------- -ACTOR Medikit : Health 2012 +ACTOR Medikit : Health { Game Doom SpawnID 24 diff --git a/wadsrc/static/actors/doom/doomimp.txt b/wadsrc/static/actors/doom/doomimp.txt index d91227484..0cf3665c8 100644 --- a/wadsrc/static/actors/doom/doomimp.txt +++ b/wadsrc/static/actors/doom/doomimp.txt @@ -3,7 +3,7 @@ // Imp // //=========================================================================== -ACTOR DoomImp 3001 +ACTOR DoomImp { Game Doom SpawnID 5 diff --git a/wadsrc/static/actors/doom/doomkeys.txt b/wadsrc/static/actors/doom/doomkeys.txt index 9072582d1..0b61af192 100644 --- a/wadsrc/static/actors/doom/doomkeys.txt +++ b/wadsrc/static/actors/doom/doomkeys.txt @@ -8,7 +8,7 @@ Actor DoomKey : Key // Blue key card ------------------------------------------------------------ -Actor BlueCard : DoomKey 5 +Actor BlueCard : DoomKey { Game Doom SpawnID 85 @@ -25,7 +25,7 @@ Actor BlueCard : DoomKey 5 // Yellow key card ---------------------------------------------------------- -Actor YellowCard : DoomKey 6 +Actor YellowCard : DoomKey { Game Doom SpawnID 87 @@ -42,7 +42,7 @@ Actor YellowCard : DoomKey 6 // Red key card ------------------------------------------------------------- -Actor RedCard : DoomKey 13 +Actor RedCard : DoomKey { Game Doom SpawnID 86 @@ -59,7 +59,7 @@ Actor RedCard : DoomKey 13 // Blue skull key ----------------------------------------------------------- -Actor BlueSkull : DoomKey 40 +Actor BlueSkull : DoomKey { Game Doom SpawnID 90 @@ -76,7 +76,7 @@ Actor BlueSkull : DoomKey 40 // Yellow skull key --------------------------------------------------------- -Actor YellowSkull : DoomKey 39 +Actor YellowSkull : DoomKey { Game Doom SpawnID 88 @@ -93,7 +93,7 @@ Actor YellowSkull : DoomKey 39 // Red skull key ------------------------------------------------------------ -Actor RedSkull : DoomKey 38 +Actor RedSkull : DoomKey { Game Doom SpawnID 89 diff --git a/wadsrc/static/actors/doom/doommisc.txt b/wadsrc/static/actors/doom/doommisc.txt index fadab2b05..0727726f8 100644 --- a/wadsrc/static/actors/doom/doommisc.txt +++ b/wadsrc/static/actors/doom/doommisc.txt @@ -1,6 +1,6 @@ // The barrel of green goop ------------------------------------------------ -ACTOR ExplosiveBarrel 2035 +ACTOR ExplosiveBarrel { Game Doom SpawnID 125 @@ -85,7 +85,7 @@ ACTOR DoomUnusedStates // MBF Beta emulation items -Actor EvilSceptre : ScoreItem 2016 +Actor EvilSceptre : ScoreItem { Game Doom Inventory.PickupMessage "$BETA_BONUS3" @@ -97,7 +97,7 @@ Actor EvilSceptre : ScoreItem 2016 } } -Actor UnholyBible : ScoreItem 2017 +Actor UnholyBible : ScoreItem { Game Doom Inventory.PickupMessage "$BETA_BONUS4" diff --git a/wadsrc/static/actors/doom/doomweapons.txt b/wadsrc/static/actors/doom/doomweapons.txt index 8be33c0ca..ece9da40a 100644 --- a/wadsrc/static/actors/doom/doomweapons.txt +++ b/wadsrc/static/actors/doom/doomweapons.txt @@ -52,7 +52,7 @@ ACTOR Fist : Weapon // // -------------------------------------------------------------------------- -ACTOR Pistol : DoomWeapon 5010 +ACTOR Pistol : DoomWeapon { Game Doom Weapon.SelectionOrder 1900 @@ -97,7 +97,7 @@ ACTOR Pistol : DoomWeapon 5010 // // -------------------------------------------------------------------------- -ACTOR Chainsaw : Weapon 2005 +ACTOR Chainsaw : Weapon { Game Doom SpawnID 32 @@ -137,7 +137,7 @@ ACTOR Chainsaw : Weapon 2005 // // -------------------------------------------------------------------------- -ACTOR Shotgun : DoomWeapon 2001 +ACTOR Shotgun : DoomWeapon { Game Doom SpawnID 27 @@ -184,7 +184,7 @@ ACTOR Shotgun : DoomWeapon 2001 // // -------------------------------------------------------------------------- -ACTOR SuperShotgun : DoomWeapon 82 +ACTOR SuperShotgun : DoomWeapon { Game Doom SpawnID 33 @@ -238,7 +238,7 @@ ACTOR SuperShotgun : DoomWeapon 82 // // -------------------------------------------------------------------------- -ACTOR Chaingun : DoomWeapon 2002 +ACTOR Chaingun : DoomWeapon { Game Doom SpawnID 28 @@ -281,7 +281,7 @@ ACTOR Chaingun : DoomWeapon 2002 // // -------------------------------------------------------------------------- -ACTOR RocketLauncher : DoomWeapon 2003 +ACTOR RocketLauncher : DoomWeapon { Game Doom SpawnID 29 @@ -404,7 +404,7 @@ ACTOR Grenade // // -------------------------------------------------------------------------- -ACTOR PlasmaRifle : DoomWeapon 2004 +ACTOR PlasmaRifle : DoomWeapon { Game Doom SpawnID 30 @@ -508,7 +508,7 @@ ACTOR PlasmaBall2 : PlasmaBall1 // // -------------------------------------------------------------------------- -ACTOR BFG9000 : DoomWeapon 2006 +ACTOR BFG9000 : DoomWeapon { Game Doom Height 20 diff --git a/wadsrc/static/actors/doom/fatso.txt b/wadsrc/static/actors/doom/fatso.txt index 63ae511aa..b77f05b13 100644 --- a/wadsrc/static/actors/doom/fatso.txt +++ b/wadsrc/static/actors/doom/fatso.txt @@ -3,7 +3,7 @@ // Mancubus // //=========================================================================== -ACTOR Fatso 67 +ACTOR Fatso { Game Doom SpawnID 112 diff --git a/wadsrc/static/actors/doom/keen.txt b/wadsrc/static/actors/doom/keen.txt index fef060435..2bdd2b343 100644 --- a/wadsrc/static/actors/doom/keen.txt +++ b/wadsrc/static/actors/doom/keen.txt @@ -3,7 +3,7 @@ // Commander Keen // //=========================================================================== -ACTOR CommanderKeen 72 +ACTOR CommanderKeen { Game Doom Health 100 diff --git a/wadsrc/static/actors/doom/lostsoul.txt b/wadsrc/static/actors/doom/lostsoul.txt index beb9ef4dd..f84d85488 100644 --- a/wadsrc/static/actors/doom/lostsoul.txt +++ b/wadsrc/static/actors/doom/lostsoul.txt @@ -3,7 +3,7 @@ // Lost Soul // //=========================================================================== -ACTOR LostSoul 3006 +ACTOR LostSoul { Game Doom SpawnID 110 @@ -50,7 +50,7 @@ ACTOR LostSoul 3006 } } -Actor BetaSkull : LostSoul 9037 +Actor BetaSkull : LostSoul { States { diff --git a/wadsrc/static/actors/doom/painelemental.txt b/wadsrc/static/actors/doom/painelemental.txt index e8e359cf3..45d8afccd 100644 --- a/wadsrc/static/actors/doom/painelemental.txt +++ b/wadsrc/static/actors/doom/painelemental.txt @@ -3,7 +3,7 @@ // Pain Elemental // //=========================================================================== -ACTOR PainElemental 71 +ACTOR PainElemental { Game Doom SpawnID 115 diff --git a/wadsrc/static/actors/doom/possessed.txt b/wadsrc/static/actors/doom/possessed.txt index 62a41a80a..42279317d 100644 --- a/wadsrc/static/actors/doom/possessed.txt +++ b/wadsrc/static/actors/doom/possessed.txt @@ -4,7 +4,7 @@ // Zombie man // //=========================================================================== -ACTOR ZombieMan 3004 +ACTOR ZombieMan { Game Doom SpawnID 4 @@ -65,7 +65,7 @@ ACTOR ZombieMan 3004 // Sergeant / Shotgun guy // //=========================================================================== -ACTOR ShotgunGuy 9 +ACTOR ShotgunGuy { Game Doom SpawnID 1 @@ -127,7 +127,7 @@ ACTOR ShotgunGuy 9 // Chaingunner // //=========================================================================== -ACTOR ChaingunGuy 65 +ACTOR ChaingunGuy { Game Doom SpawnID 2 @@ -189,7 +189,7 @@ ACTOR ChaingunGuy 65 // SS Nazi // //=========================================================================== -ACTOR WolfensteinSS 84 +ACTOR WolfensteinSS { Game Doom SpawnID 116 diff --git a/wadsrc/static/actors/doom/revenant.txt b/wadsrc/static/actors/doom/revenant.txt index 5ef97789b..1d6b318c7 100644 --- a/wadsrc/static/actors/doom/revenant.txt +++ b/wadsrc/static/actors/doom/revenant.txt @@ -3,7 +3,7 @@ // Revenant // //=========================================================================== -ACTOR Revenant 66 +ACTOR Revenant { Game Doom SpawnID 20 diff --git a/wadsrc/static/actors/doom/scriptedmarine.txt b/wadsrc/static/actors/doom/scriptedmarine.txt index fecd0ac0d..6c5854ac7 100644 --- a/wadsrc/static/actors/doom/scriptedmarine.txt +++ b/wadsrc/static/actors/doom/scriptedmarine.txt @@ -1,7 +1,7 @@ // Scriptable marine ------------------------------------------------------- -ACTOR ScriptedMarine 9100 native +ACTOR ScriptedMarine native { Game Doom SpawnID 151 @@ -172,7 +172,7 @@ ACTOR ScriptedMarine 9100 native //--------------------------------------------------------------------------- -ACTOR MarineFist : ScriptedMarine 9101 +ACTOR MarineFist : ScriptedMarine { Game Doom States @@ -187,7 +187,7 @@ ACTOR MarineFist : ScriptedMarine 9101 //--------------------------------------------------------------------------- -ACTOR MarineBerserk : MarineFist 9102 +ACTOR MarineBerserk : MarineFist { Game Doom States @@ -200,7 +200,7 @@ ACTOR MarineBerserk : MarineFist 9102 } //--------------------------------------------------------------------------- -ACTOR MarineChainsaw : ScriptedMarine 9103 +ACTOR MarineChainsaw : ScriptedMarine { Game Doom States @@ -216,7 +216,7 @@ ACTOR MarineChainsaw : ScriptedMarine 9103 //--------------------------------------------------------------------------- -ACTOR MarinePistol : ScriptedMarine 9104 +ACTOR MarinePistol : ScriptedMarine { Game Doom States @@ -229,7 +229,7 @@ ACTOR MarinePistol : ScriptedMarine 9104 //--------------------------------------------------------------------------- -ACTOR MarineShotgun : ScriptedMarine 9105 +ACTOR MarineShotgun : ScriptedMarine { Game Doom States @@ -244,7 +244,7 @@ ACTOR MarineShotgun : ScriptedMarine 9105 //--------------------------------------------------------------------------- -ACTOR MarineSSG : ScriptedMarine 9106 +ACTOR MarineSSG : ScriptedMarine { Game Doom States @@ -256,7 +256,7 @@ ACTOR MarineSSG : ScriptedMarine 9106 //--------------------------------------------------------------------------- -ACTOR MarineChaingun : ScriptedMarine 9107 +ACTOR MarineChaingun : ScriptedMarine { Game Doom States @@ -269,7 +269,7 @@ ACTOR MarineChaingun : ScriptedMarine 9107 //--------------------------------------------------------------------------- -ACTOR MarineRocket : MarineFist 9108 +ACTOR MarineRocket : MarineFist { Game Doom States @@ -282,7 +282,7 @@ ACTOR MarineRocket : MarineFist 9108 //--------------------------------------------------------------------------- -ACTOR MarinePlasma : ScriptedMarine 9109 +ACTOR MarinePlasma : ScriptedMarine { Game Doom States @@ -295,7 +295,7 @@ ACTOR MarinePlasma : ScriptedMarine 9109 //--------------------------------------------------------------------------- -ACTOR MarineRailgun : ScriptedMarine 9110 +ACTOR MarineRailgun : ScriptedMarine { Game Doom States @@ -308,7 +308,7 @@ ACTOR MarineRailgun : ScriptedMarine 9110 //--------------------------------------------------------------------------- -ACTOR MarineBFG : ScriptedMarine 9111 +ACTOR MarineBFG : ScriptedMarine { Game Doom States diff --git a/wadsrc/static/actors/doom/spidermaster.txt b/wadsrc/static/actors/doom/spidermaster.txt index d2939c8ea..8da894245 100644 --- a/wadsrc/static/actors/doom/spidermaster.txt +++ b/wadsrc/static/actors/doom/spidermaster.txt @@ -3,7 +3,7 @@ // Spider boss // //=========================================================================== -ACTOR SpiderMastermind 7 +ACTOR SpiderMastermind { Game Doom SpawnID 7 diff --git a/wadsrc/static/actors/doom/stealthmonsters.txt b/wadsrc/static/actors/doom/stealthmonsters.txt index f5d7ae31b..5cc859ee0 100644 --- a/wadsrc/static/actors/doom/stealthmonsters.txt +++ b/wadsrc/static/actors/doom/stealthmonsters.txt @@ -1,5 +1,5 @@ -ACTOR StealthArachnotron : Arachnotron 9050 +ACTOR StealthArachnotron : Arachnotron { Game Doom SpawnID 117 @@ -9,7 +9,7 @@ ACTOR StealthArachnotron : Arachnotron 9050 Obituary "$OB_STEALTHBABY" } -ACTOR StealthArchvile : Archvile 9051 +ACTOR StealthArchvile : Archvile { Game Doom SpawnID 118 @@ -19,7 +19,7 @@ ACTOR StealthArchvile : Archvile 9051 Obituary "$OB_STEALTHVILE" } -ACTOR StealthBaron : BaronOfHell 9052 +ACTOR StealthBaron : BaronOfHell { Game Doom SpawnID 100 @@ -30,7 +30,7 @@ ACTOR StealthBaron : BaronOfHell 9052 HitObituary "$OB_STEALTHBARON" } -ACTOR StealthCacodemon : Cacodemon 9053 +ACTOR StealthCacodemon : Cacodemon { Game Doom SpawnID 119 @@ -41,7 +41,7 @@ ACTOR StealthCacodemon : Cacodemon 9053 HitObituary "$OB_STEALTHCACO" } -ACTOR StealthChaingunGuy : ChaingunGuy 9054 +ACTOR StealthChaingunGuy : ChaingunGuy { Game Doom SpawnID 120 @@ -51,7 +51,7 @@ ACTOR StealthChaingunGuy : ChaingunGuy 9054 Obituary "$OB_STEALTHCHAINGUY" } -ACTOR StealthDemon : Demon 9055 +ACTOR StealthDemon : Demon { Game Doom SpawnID 121 @@ -62,7 +62,7 @@ ACTOR StealthDemon : Demon 9055 HitObituary "$OB_STEALTHDEMON" } -ACTOR StealthHellKnight : HellKnight 9056 +ACTOR StealthHellKnight : HellKnight { Game Doom SpawnID 101 @@ -73,7 +73,7 @@ ACTOR StealthHellKnight : HellKnight 9056 HitObituary "$OB_STEALTHKNIGHT" } -ACTOR StealthDoomImp : DoomImp 9057 +ACTOR StealthDoomImp : DoomImp { Game Doom SpawnID 122 @@ -84,7 +84,7 @@ ACTOR StealthDoomImp : DoomImp 9057 HitObituary "$OB_STEALTHIMP" } -ACTOR StealthFatso : Fatso 9058 +ACTOR StealthFatso : Fatso { Game Doom SpawnID 123 @@ -94,7 +94,7 @@ ACTOR StealthFatso : Fatso 9058 Obituary "$OB_STEALTHFATSO" } -ACTOR StealthRevenant : Revenant 9059 +ACTOR StealthRevenant : Revenant { Game Doom SpawnID 124 @@ -105,7 +105,7 @@ ACTOR StealthRevenant : Revenant 9059 HitObituary "$OB_STEALTHUNDEAD" } -ACTOR StealthShotgunGuy : ShotgunGuy 9060 +ACTOR StealthShotgunGuy : ShotgunGuy { Game Doom SpawnID 103 @@ -115,7 +115,7 @@ ACTOR StealthShotgunGuy : ShotgunGuy 9060 Obituary "$OB_STEALTHSHOTGUNGUY" } -ACTOR StealthZombieMan : ZombieMan 9061 +ACTOR StealthZombieMan : ZombieMan { Game Doom SpawnID 102 diff --git a/wadsrc/static/actors/heretic/beast.txt b/wadsrc/static/actors/heretic/beast.txt index 7f54c3442..956f16dca 100644 --- a/wadsrc/static/actors/heretic/beast.txt +++ b/wadsrc/static/actors/heretic/beast.txt @@ -1,7 +1,7 @@ // Beast -------------------------------------------------------------------- -ACTOR Beast 70 +ACTOR Beast { Game Heretic SpawnID 3 diff --git a/wadsrc/static/actors/heretic/clink.txt b/wadsrc/static/actors/heretic/clink.txt index ec8cf6b9c..dd3bb4c85 100644 --- a/wadsrc/static/actors/heretic/clink.txt +++ b/wadsrc/static/actors/heretic/clink.txt @@ -1,5 +1,5 @@ -ACTOR Clink 90 +ACTOR Clink { Game Heretic SpawnID 1 diff --git a/wadsrc/static/actors/heretic/dsparil.txt b/wadsrc/static/actors/heretic/dsparil.txt index 6ecef5b5c..2b2efe3c6 100644 --- a/wadsrc/static/actors/heretic/dsparil.txt +++ b/wadsrc/static/actors/heretic/dsparil.txt @@ -1,7 +1,7 @@ // Boss spot ---------------------------------------------------------------- -ACTOR BossSpot : SpecialSpot 56 +ACTOR BossSpot : SpecialSpot { Game Heretic SpawnID 141 @@ -10,7 +10,7 @@ ACTOR BossSpot : SpecialSpot 56 // Sorcerer (D'Sparil on his serpent) --------------------------------------- -ACTOR Sorcerer1 7 +ACTOR Sorcerer1 { Game Heretic SpawnID 142 diff --git a/wadsrc/static/actors/heretic/hereticammo.txt b/wadsrc/static/actors/heretic/hereticammo.txt index 96a20352b..ee17bbdc8 100644 --- a/wadsrc/static/actors/heretic/hereticammo.txt +++ b/wadsrc/static/actors/heretic/hereticammo.txt @@ -1,7 +1,7 @@ // Wimpy ammo --------------------------------------------------------------- -ACTOR GoldWandAmmo : Ammo 10 +ACTOR GoldWandAmmo : Ammo { Game Heretic SpawnID 11 @@ -21,7 +21,7 @@ ACTOR GoldWandAmmo : Ammo 10 // Hefty ammo --------------------------------------------------------------- -ACTOR GoldWandHefty : GoldWandAmmo 12 +ACTOR GoldWandHefty : GoldWandAmmo { Game Heretic SpawnID 12 @@ -36,7 +36,7 @@ ACTOR GoldWandHefty : GoldWandAmmo 12 } // Wimpy ammo --------------------------------------------------------------- -ACTOR CrossbowAmmo : Ammo 18 +ACTOR CrossbowAmmo : Ammo { Game Heretic SpawnID 33 @@ -56,7 +56,7 @@ ACTOR CrossbowAmmo : Ammo 18 // Hefty ammo --------------------------------------------------------------- -ACTOR CrossbowHefty : CrossbowAmmo 19 +ACTOR CrossbowHefty : CrossbowAmmo { Game Heretic SpawnID 34 @@ -71,7 +71,7 @@ ACTOR CrossbowHefty : CrossbowAmmo 19 } // Wimpy ammo --------------------------------------------------------------- -ACTOR MaceAmmo : Ammo 13 +ACTOR MaceAmmo : Ammo { Game Heretic SpawnID 35 @@ -91,7 +91,7 @@ ACTOR MaceAmmo : Ammo 13 // Hefty ammo --------------------------------------------------------------- -ACTOR MaceHefty : MaceAmmo 16 +ACTOR MaceHefty : MaceAmmo { Game Heretic SpawnID 36 @@ -107,7 +107,7 @@ ACTOR MaceHefty : MaceAmmo 16 // Wimpy ammo --------------------------------------------------------------- -ACTOR BlasterAmmo : Ammo 54 +ACTOR BlasterAmmo : Ammo { Game Heretic SpawnID 37 @@ -127,7 +127,7 @@ ACTOR BlasterAmmo : Ammo 54 // Hefty ammo --------------------------------------------------------------- -ACTOR BlasterHefty : BlasterAmmo 55 +ACTOR BlasterHefty : BlasterAmmo { Game Heretic SpawnID 38 @@ -143,7 +143,7 @@ ACTOR BlasterHefty : BlasterAmmo 55 // Wimpy ammo --------------------------------------------------------------- -ACTOR SkullRodAmmo : Ammo 20 +ACTOR SkullRodAmmo : Ammo { Game Heretic SpawnID 158 @@ -163,7 +163,7 @@ ACTOR SkullRodAmmo : Ammo 20 // Hefty ammo --------------------------------------------------------------- -ACTOR SkullRodHefty : SkullRodAmmo 21 +ACTOR SkullRodHefty : SkullRodAmmo { Game Heretic SpawnID 159 @@ -179,7 +179,7 @@ ACTOR SkullRodHefty : SkullRodAmmo 21 // Wimpy ammo --------------------------------------------------------------- -ACTOR PhoenixRodAmmo : Ammo 22 +ACTOR PhoenixRodAmmo : Ammo { Game Heretic SpawnID 161 @@ -198,7 +198,7 @@ ACTOR PhoenixRodAmmo : Ammo 22 } // Hefty ammo --------------------------------------------------------------- -ACTOR PhoenixRodHefty : PhoenixRodAmmo 23 +ACTOR PhoenixRodHefty : PhoenixRodAmmo { Game Heretic SpawnID 162 @@ -214,7 +214,7 @@ ACTOR PhoenixRodHefty : PhoenixRodAmmo 23 // --- Bag of holding ------------------------------------------------------- -ACTOR BagOfHolding : BackpackItem 8 +ACTOR BagOfHolding : BackpackItem { Game Heretic SpawnID 136 diff --git a/wadsrc/static/actors/heretic/hereticarmor.txt b/wadsrc/static/actors/heretic/hereticarmor.txt index e027f4f47..5f2658d9d 100644 --- a/wadsrc/static/actors/heretic/hereticarmor.txt +++ b/wadsrc/static/actors/heretic/hereticarmor.txt @@ -1,7 +1,7 @@ // Silver Shield (Shield1) -------------------------------------------------- -Actor SilverShield : BasicArmorPickup 85 +Actor SilverShield : BasicArmorPickup { Game Heretic SpawnID 68 @@ -20,7 +20,7 @@ Actor SilverShield : BasicArmorPickup 85 // Enchanted shield (Shield2) ----------------------------------------------- -Actor EnchantedShield : BasicArmorPickup 31 +Actor EnchantedShield : BasicArmorPickup { Game Heretic SpawnID 69 diff --git a/wadsrc/static/actors/heretic/hereticartifacts.txt b/wadsrc/static/actors/heretic/hereticartifacts.txt index 67d3946b9..50f7c45e1 100644 --- a/wadsrc/static/actors/heretic/hereticartifacts.txt +++ b/wadsrc/static/actors/heretic/hereticartifacts.txt @@ -1,6 +1,6 @@ // Super map ---------------------------------------------------------------- -ACTOR SuperMap : MapRevealer 35 +ACTOR SuperMap : MapRevealer { Game Heretic SpawnID 137 @@ -20,7 +20,7 @@ ACTOR SuperMap : MapRevealer 35 // Invisibility ------------------------------------------------------------- -ACTOR ArtiInvisibility : PowerupGiver 75 +ACTOR ArtiInvisibility : PowerupGiver { Game Heretic SpawnID 135 @@ -45,7 +45,7 @@ ACTOR ArtiInvisibility : PowerupGiver 75 // Tome of power ------------------------------------------------------------ -ACTOR ArtiTomeOfPower : PowerupGiver 86 native +ACTOR ArtiTomeOfPower : PowerupGiver native { Game Heretic SpawnID 134 @@ -88,7 +88,7 @@ ACTOR ActivatedTimeBomb } -ACTOR ArtiTimeBomb : Inventory 34 native +ACTOR ArtiTimeBomb : Inventory native { Game Heretic SpawnID 72 diff --git a/wadsrc/static/actors/heretic/hereticdecorations.txt b/wadsrc/static/actors/heretic/hereticdecorations.txt index cb090d0ea..2713d3378 100644 --- a/wadsrc/static/actors/heretic/hereticdecorations.txt +++ b/wadsrc/static/actors/heretic/hereticdecorations.txt @@ -1,4 +1,4 @@ -ACTOR SkullHang70 17 +ACTOR SkullHang70 { Game Heretic Radius 20 @@ -13,7 +13,7 @@ ACTOR SkullHang70 17 } } -ACTOR SkullHang60 24 +ACTOR SkullHang60 { Game Heretic Radius 20 @@ -28,7 +28,7 @@ ACTOR SkullHang60 24 } } -ACTOR SkullHang45 25 +ACTOR SkullHang45 { Game Heretic Radius 20 @@ -43,7 +43,7 @@ ACTOR SkullHang45 25 } } -ACTOR SkullHang35 26 +ACTOR SkullHang35 { Game Heretic Radius 20 @@ -58,7 +58,7 @@ ACTOR SkullHang35 26 } } -ACTOR Chandelier 28 +ACTOR Chandelier { Game Heretic Radius 20 @@ -73,7 +73,7 @@ ACTOR Chandelier 28 } } -ACTOR SerpentTorch 27 +ACTOR SerpentTorch { Game Heretic Radius 12 @@ -87,7 +87,7 @@ ACTOR SerpentTorch 27 } } -ACTOR SmallPillar 29 +ACTOR SmallPillar { Game Heretic Radius 16 @@ -101,7 +101,7 @@ ACTOR SmallPillar 29 } } -ACTOR StalagmiteSmall 37 +ACTOR StalagmiteSmall { Game Heretic Radius 8 @@ -115,7 +115,7 @@ ACTOR StalagmiteSmall 37 } } -ACTOR StalagmiteLarge 38 +ACTOR StalagmiteLarge { Game Heretic Radius 12 @@ -129,7 +129,7 @@ ACTOR StalagmiteLarge 38 } } -ACTOR StalactiteSmall 39 +ACTOR StalactiteSmall { Game Heretic Radius 8 @@ -145,7 +145,7 @@ ACTOR StalactiteSmall 39 } } -ACTOR StalactiteLarge 40 +ACTOR StalactiteLarge { Game Heretic Radius 12 @@ -161,7 +161,7 @@ ACTOR StalactiteLarge 40 } } -ACTOR FireBrazier 76 +ACTOR FireBrazier { Game Heretic Radius 16 @@ -175,7 +175,7 @@ ACTOR FireBrazier 76 } } -ACTOR Barrel 44 +ACTOR Barrel { Game Heretic Radius 12 @@ -189,7 +189,7 @@ ACTOR Barrel 44 } } -ACTOR BrownPillar 47 +ACTOR BrownPillar { Game Heretic Radius 14 @@ -203,7 +203,7 @@ ACTOR BrownPillar 47 } } -ACTOR Moss1 48 +ACTOR Moss1 { Game Heretic Radius 20 @@ -218,7 +218,7 @@ ACTOR Moss1 48 } } -ACTOR Moss2 49 +ACTOR Moss2 { Game Heretic Radius 20 @@ -233,7 +233,7 @@ ACTOR Moss2 49 } } -ACTOR WallTorch 50 +ACTOR WallTorch { Game Heretic Radius 6 @@ -248,7 +248,7 @@ ACTOR WallTorch 50 } } -ACTOR HangingCorpse 51 +ACTOR HangingCorpse { Game Heretic Radius 8 diff --git a/wadsrc/static/actors/heretic/hereticimp.txt b/wadsrc/static/actors/heretic/hereticimp.txt index 2659d248a..9a5c30c63 100644 --- a/wadsrc/static/actors/heretic/hereticimp.txt +++ b/wadsrc/static/actors/heretic/hereticimp.txt @@ -1,7 +1,7 @@ // Heretic imp (as opposed to the Doom variety) ----------------------------- -ACTOR HereticImp 66 +ACTOR HereticImp { Game Heretic SpawnID 5 @@ -78,7 +78,7 @@ ACTOR HereticImp 66 // Heretic imp leader ------------------------------------------------------- -ACTOR HereticImpLeader : HereticImp 5 +ACTOR HereticImpLeader : HereticImp { Game Heretic SpawnID 7 diff --git a/wadsrc/static/actors/heretic/heretickeys.txt b/wadsrc/static/actors/heretic/heretickeys.txt index 71beab253..3a34fe144 100644 --- a/wadsrc/static/actors/heretic/heretickeys.txt +++ b/wadsrc/static/actors/heretic/heretickeys.txt @@ -8,7 +8,7 @@ ACTOR HereticKey : Key // Green key ------------------------------------------------------------ -ACTOR KeyGreen : HereticKey 73 +ACTOR KeyGreen : HereticKey { Game Heretic SpawnID 86 @@ -24,7 +24,7 @@ ACTOR KeyGreen : HereticKey 73 // Blue key ----------------------------------------------------------------- -ACTOR KeyBlue : HereticKey 79 +ACTOR KeyBlue : HereticKey { Game Heretic SpawnID 85 @@ -40,7 +40,7 @@ ACTOR KeyBlue : HereticKey 79 // Yellow key --------------------------------------------------------------- -ACTOR KeyYellow : HereticKey 80 +ACTOR KeyYellow : HereticKey { Game Heretic SpawnID 87 @@ -57,7 +57,7 @@ ACTOR KeyYellow : HereticKey 80 // --- Blue Key gizmo ----------------------------------------------------------- -ACTOR KeyGizmoBlue 94 +ACTOR KeyGizmoBlue { Game Heretic Radius 16 @@ -89,7 +89,7 @@ ACTOR KeyGizmoFloatBlue // --- Green Key gizmo ----------------------------------------------------------- -ACTOR KeyGizmoGreen 95 +ACTOR KeyGizmoGreen { Game Heretic Radius 16 @@ -121,7 +121,7 @@ ACTOR KeyGizmoFloatGreen // --- Yellow Key gizmo ----------------------------------------------------------- -ACTOR KeyGizmoYellow 96 +ACTOR KeyGizmoYellow { Game Heretic Radius 16 diff --git a/wadsrc/static/actors/heretic/hereticmisc.txt b/wadsrc/static/actors/heretic/hereticmisc.txt index b6644e444..5231f819d 100644 --- a/wadsrc/static/actors/heretic/hereticmisc.txt +++ b/wadsrc/static/actors/heretic/hereticmisc.txt @@ -1,7 +1,7 @@ // Pod ---------------------------------------------------------------------- -ACTOR Pod 2035 +ACTOR Pod { Game Heretic SpawnID 125 @@ -62,7 +62,7 @@ ACTOR PodGoo // Pod generator ------------------------------------------------------------ -ACTOR PodGenerator 43 +ACTOR PodGenerator { Game Heretic SpawnID 126 @@ -84,7 +84,7 @@ ACTOR PodGenerator 43 // Teleglitter generator 1 -------------------------------------------------- -ACTOR TeleGlitterGenerator1 74 +ACTOR TeleGlitterGenerator1 { Game Heretic SpawnID 166 @@ -102,7 +102,7 @@ ACTOR TeleGlitterGenerator1 74 // Teleglitter generator 2 -------------------------------------------------- -ACTOR TeleGlitterGenerator2 52 +ACTOR TeleGlitterGenerator2 { Game Heretic SpawnID 167 @@ -160,7 +160,7 @@ ACTOR TeleGlitter2 : TeleGlitter1 // --- Volcano -------------------------------------------------------------- -ACTOR Volcano 87 +ACTOR Volcano { Game Heretic SpawnID 150 diff --git a/wadsrc/static/actors/heretic/hereticweaps.txt b/wadsrc/static/actors/heretic/hereticweaps.txt index ca85437e0..f41a84f87 100644 --- a/wadsrc/static/actors/heretic/hereticweaps.txt +++ b/wadsrc/static/actors/heretic/hereticweaps.txt @@ -110,7 +110,7 @@ ACTOR StaffPuff2 // Gold wand ---------------------------------------------------------------- -ACTOR GoldWand : HereticWeapon 9042 +ACTOR GoldWand : HereticWeapon { Game Heretic +BLOODSPLATTER @@ -248,7 +248,7 @@ ACTOR GoldWandPuff2 : GoldWandFX1 // Crossbow ----------------------------------------------------------------- -ACTOR Crossbow : HereticWeapon 2001 +ACTOR Crossbow : HereticWeapon { Game Heretic SpawnID 27 @@ -400,7 +400,7 @@ ACTOR CrossbowFX4 // Gauntlets ---------------------------------------------------------------- -ACTOR Gauntlets : Weapon 2005 +ACTOR Gauntlets : Weapon { Game Heretic SpawnID 32 @@ -681,7 +681,7 @@ ACTOR MaceFX4 native // Mace spawn spot ---------------------------------------------------------- -ACTOR MaceSpawner : SpecialSpot 2002 +ACTOR MaceSpawner : SpecialSpot { Game Heretic +NOSECTOR @@ -698,7 +698,7 @@ ACTOR MaceSpawner : SpecialSpot 2002 // Blaster ------------------------------------------------------------------ -ACTOR Blaster : HereticWeapon 53 +ACTOR Blaster : HereticWeapon { Game Heretic SpawnID 28 @@ -854,7 +854,7 @@ ACTOR BlasterPuff // Skull (Horn) Rod --------------------------------------------------------- -ACTOR SkullRod : HereticWeapon 2004 +ACTOR SkullRod : HereticWeapon { Game Heretic SpawnID 30 @@ -1028,7 +1028,7 @@ ACTOR RainTracker : Inventory native // Phoenix Rod -------------------------------------------------------------- -ACTOR PhoenixRod : Weapon 2003 native +ACTOR PhoenixRod : Weapon native { Game Heretic SpawnID 29 diff --git a/wadsrc/static/actors/heretic/ironlich.txt b/wadsrc/static/actors/heretic/ironlich.txt index 21234cf52..5d9cfa7c0 100644 --- a/wadsrc/static/actors/heretic/ironlich.txt +++ b/wadsrc/static/actors/heretic/ironlich.txt @@ -1,7 +1,7 @@ // Ironlich ----------------------------------------------------------------- -ACTOR Ironlich 6 +ACTOR Ironlich { Game Heretic SpawnID 20 diff --git a/wadsrc/static/actors/heretic/knight.txt b/wadsrc/static/actors/heretic/knight.txt index 584bcd72e..55ce2728c 100644 --- a/wadsrc/static/actors/heretic/knight.txt +++ b/wadsrc/static/actors/heretic/knight.txt @@ -1,7 +1,7 @@ // Knight ------------------------------------------------------------------- -ACTOR Knight 64 +ACTOR Knight { Game Heretic SpawnID 6 @@ -60,7 +60,7 @@ ACTOR Knight 64 // Knight ghost ------------------------------------------------------------- -ACTOR KnightGhost : Knight 65 +ACTOR KnightGhost : Knight { Game Heretic SpawnID 129 diff --git a/wadsrc/static/actors/heretic/mummy.txt b/wadsrc/static/actors/heretic/mummy.txt index af4ff0c23..57b54c622 100644 --- a/wadsrc/static/actors/heretic/mummy.txt +++ b/wadsrc/static/actors/heretic/mummy.txt @@ -1,7 +1,7 @@ // Mummy -------------------------------------------------------------------- -ACTOR Mummy 68 +ACTOR Mummy { Game Heretic SpawnID 4 @@ -51,7 +51,7 @@ ACTOR Mummy 68 // Mummy leader ------------------------------------------------------------- -ACTOR MummyLeader : Mummy 45 +ACTOR MummyLeader : Mummy { Game Heretic SpawnID 2 @@ -74,7 +74,7 @@ ACTOR MummyLeader : Mummy 45 // Mummy ghost -------------------------------------------------------------- -ACTOR MummyGhost : Mummy 69 +ACTOR MummyGhost : Mummy { Game Heretic SpawnID 8 @@ -86,7 +86,7 @@ ACTOR MummyGhost : Mummy 69 // Mummy leader ghost ------------------------------------------------------- -ACTOR MummyLeaderGhost : MummyLeader 46 +ACTOR MummyLeaderGhost : MummyLeader { Game Heretic SpawnID 9 diff --git a/wadsrc/static/actors/heretic/snake.txt b/wadsrc/static/actors/heretic/snake.txt index 0184da170..1f7af5e51 100644 --- a/wadsrc/static/actors/heretic/snake.txt +++ b/wadsrc/static/actors/heretic/snake.txt @@ -1,5 +1,5 @@ -ACTOR Snake 92 +ACTOR Snake { Game Heretic SpawnID 132 diff --git a/wadsrc/static/actors/heretic/wizard.txt b/wadsrc/static/actors/heretic/wizard.txt index 18188a321..5ea30d77d 100644 --- a/wadsrc/static/actors/heretic/wizard.txt +++ b/wadsrc/static/actors/heretic/wizard.txt @@ -1,7 +1,7 @@ // Wizard -------------------------------------------------------- -ACTOR Wizard 15 +ACTOR Wizard { Game Heretic SpawnID 19 diff --git a/wadsrc/static/actors/hexen/bats.txt b/wadsrc/static/actors/hexen/bats.txt index 0d1e08081..79518a4e5 100644 --- a/wadsrc/static/actors/hexen/bats.txt +++ b/wadsrc/static/actors/hexen/bats.txt @@ -1,7 +1,7 @@ // Bat Spawner -------------------------------------------------------------- -ACTOR BatSpawner : SwitchableDecoration 10225 +ACTOR BatSpawner : SwitchableDecoration { Game Hexen +NOBLOCKMAP +NOSECTOR +NOGRAVITY diff --git a/wadsrc/static/actors/hexen/bishop.txt b/wadsrc/static/actors/hexen/bishop.txt index 8901a95b3..67d3a753c 100644 --- a/wadsrc/static/actors/hexen/bishop.txt +++ b/wadsrc/static/actors/hexen/bishop.txt @@ -1,7 +1,7 @@ // Bishop ------------------------------------------------------------------- -ACTOR Bishop 114 +ACTOR Bishop { Game Hexen SpawnID 19 diff --git a/wadsrc/static/actors/hexen/blastradius.txt b/wadsrc/static/actors/hexen/blastradius.txt index ad98d7ecc..6f3fe76ea 100644 --- a/wadsrc/static/actors/hexen/blastradius.txt +++ b/wadsrc/static/actors/hexen/blastradius.txt @@ -1,5 +1,5 @@ -ACTOR ArtiBlastRadius : CustomInventory 10110 +ACTOR ArtiBlastRadius : CustomInventory { Game Hexen SpawnID 74 diff --git a/wadsrc/static/actors/hexen/boostarmor.txt b/wadsrc/static/actors/hexen/boostarmor.txt index 607c8d66a..aface7971 100644 --- a/wadsrc/static/actors/hexen/boostarmor.txt +++ b/wadsrc/static/actors/hexen/boostarmor.txt @@ -1,7 +1,7 @@ // Boost Armor Artifact (Dragonskin Bracers) -------------------------------- -ACTOR ArtiBoostArmor : Inventory 8041 native +ACTOR ArtiBoostArmor : Inventory native { Game Hexen SpawnID 22 diff --git a/wadsrc/static/actors/hexen/centaur.txt b/wadsrc/static/actors/hexen/centaur.txt index 8044fa2ab..b59f79104 100644 --- a/wadsrc/static/actors/hexen/centaur.txt +++ b/wadsrc/static/actors/hexen/centaur.txt @@ -1,6 +1,6 @@ // Centaur ------------------------------------------------------------------ -ACTOR Centaur 107 +ACTOR Centaur { Game Hexen SpawnID 1 @@ -78,7 +78,7 @@ ACTOR Centaur 107 // Centaur Leader ----------------------------------------------------------- -ACTOR CentaurLeader : Centaur 115 +ACTOR CentaurLeader : Centaur { Game Hexen SpawnID 2 diff --git a/wadsrc/static/actors/hexen/clericboss.txt b/wadsrc/static/actors/hexen/clericboss.txt index 3947f6c6d..ee8d4b1e5 100644 --- a/wadsrc/static/actors/hexen/clericboss.txt +++ b/wadsrc/static/actors/hexen/clericboss.txt @@ -1,7 +1,7 @@ // Cleric Boss (Traductus) -------------------------------------------------- -ACTOR ClericBoss 10101 +ACTOR ClericBoss { Game Hexen Health 800 diff --git a/wadsrc/static/actors/hexen/clericflame.txt b/wadsrc/static/actors/hexen/clericflame.txt index 5fb4175fd..9bb698362 100644 --- a/wadsrc/static/actors/hexen/clericflame.txt +++ b/wadsrc/static/actors/hexen/clericflame.txt @@ -1,7 +1,7 @@ // The Cleric's Flame Strike ------------------------------------------------ -ACTOR CWeapFlame : ClericWeapon 8009 +ACTOR CWeapFlame : ClericWeapon { Game Hexen +NOGRAVITY diff --git a/wadsrc/static/actors/hexen/clericholy.txt b/wadsrc/static/actors/hexen/clericholy.txt index e97be8b17..e4f1d808b 100644 --- a/wadsrc/static/actors/hexen/clericholy.txt +++ b/wadsrc/static/actors/hexen/clericholy.txt @@ -12,7 +12,7 @@ ACTOR ClericWeaponPiece : WeaponPiece // Cleric Weapon Piece 1 ---------------------------------------------------- -ACTOR CWeaponPiece1 : ClericWeaponPiece 18 +ACTOR CWeaponPiece1 : ClericWeaponPiece { Game Hexen SpawnID 33 @@ -27,7 +27,7 @@ ACTOR CWeaponPiece1 : ClericWeaponPiece 18 // Cleric Weapon Piece 2 ---------------------------------------------------- -ACTOR CWeaponPiece2 : ClericWeaponPiece 19 +ACTOR CWeaponPiece2 : ClericWeaponPiece { Game Hexen SpawnID 34 @@ -42,7 +42,7 @@ ACTOR CWeaponPiece2 : ClericWeaponPiece 19 // Cleric Weapon Piece 3 ---------------------------------------------------- -ACTOR CWeaponPiece3 : ClericWeaponPiece 20 +ACTOR CWeaponPiece3 : ClericWeaponPiece { Game Hexen SpawnID 35 diff --git a/wadsrc/static/actors/hexen/clericstaff.txt b/wadsrc/static/actors/hexen/clericstaff.txt index e55674fa5..9b5b050d7 100644 --- a/wadsrc/static/actors/hexen/clericstaff.txt +++ b/wadsrc/static/actors/hexen/clericstaff.txt @@ -1,7 +1,7 @@ // The Cleric's Serpent Staff ----------------------------------------------- -ACTOR CWeapStaff : ClericWeapon 10 +ACTOR CWeapStaff : ClericWeapon { Game Hexen SpawnID 32 diff --git a/wadsrc/static/actors/hexen/demons.txt b/wadsrc/static/actors/hexen/demons.txt index 1ecb2222c..f6bb7a1bf 100644 --- a/wadsrc/static/actors/hexen/demons.txt +++ b/wadsrc/static/actors/hexen/demons.txt @@ -1,7 +1,7 @@ // Demon, type 1 (green, like D'Sparil's) ----------------------------------- -ACTOR Demon1 31 +ACTOR Demon1 { Game Hexen SpawnID 3 @@ -212,7 +212,7 @@ ACTOR Demon1FX1 // Demon, type 2 (brown) ---------------------------------------------------- -ACTOR Demon2 : Demon1 8080 +ACTOR Demon2 : Demon1 { Game Hexen Obituary "$OB_DEMON2" diff --git a/wadsrc/static/actors/hexen/dragon.txt b/wadsrc/static/actors/hexen/dragon.txt index 904b2f953..811f1a4b1 100644 --- a/wadsrc/static/actors/hexen/dragon.txt +++ b/wadsrc/static/actors/hexen/dragon.txt @@ -1,7 +1,7 @@ // Dragon ------------------------------------------------------------------- -ACTOR Dragon 254 +ACTOR Dragon { Game Hexen Health 640 diff --git a/wadsrc/static/actors/hexen/ettin.txt b/wadsrc/static/actors/hexen/ettin.txt index e5104aa11..98d70c995 100644 --- a/wadsrc/static/actors/hexen/ettin.txt +++ b/wadsrc/static/actors/hexen/ettin.txt @@ -1,7 +1,7 @@ // Ettin -------------------------------------------------------------------- -ACTOR Ettin 10030 +ACTOR Ettin { Game Hexen SpawnID 4 diff --git a/wadsrc/static/actors/hexen/fighteraxe.txt b/wadsrc/static/actors/hexen/fighteraxe.txt index 502de5030..f7b7ae4bf 100644 --- a/wadsrc/static/actors/hexen/fighteraxe.txt +++ b/wadsrc/static/actors/hexen/fighteraxe.txt @@ -1,7 +1,7 @@ // The Fighter's Axe -------------------------------------------------------- -ACTOR FWeapAxe : FighterWeapon 8010 native +ACTOR FWeapAxe : FighterWeapon native { Game Hexen SpawnID 27 diff --git a/wadsrc/static/actors/hexen/fighterboss.txt b/wadsrc/static/actors/hexen/fighterboss.txt index 1caf10d12..5f5e20f1e 100644 --- a/wadsrc/static/actors/hexen/fighterboss.txt +++ b/wadsrc/static/actors/hexen/fighterboss.txt @@ -1,7 +1,7 @@ // Fighter Boss (Zedek) ----------------------------------------------------- -ACTOR FighterBoss 10100 +ACTOR FighterBoss { Game Hexen health 800 diff --git a/wadsrc/static/actors/hexen/fighterhammer.txt b/wadsrc/static/actors/hexen/fighterhammer.txt index 5c7d6dc25..9cfa4f066 100644 --- a/wadsrc/static/actors/hexen/fighterhammer.txt +++ b/wadsrc/static/actors/hexen/fighterhammer.txt @@ -1,7 +1,7 @@ // The Fighter's Hammer ----------------------------------------------------- -ACTOR FWeapHammer : FighterWeapon 123 +ACTOR FWeapHammer : FighterWeapon { Game Hexen SpawnID 28 diff --git a/wadsrc/static/actors/hexen/fighterquietus.txt b/wadsrc/static/actors/hexen/fighterquietus.txt index a77e851d8..5208d8558 100644 --- a/wadsrc/static/actors/hexen/fighterquietus.txt +++ b/wadsrc/static/actors/hexen/fighterquietus.txt @@ -12,7 +12,7 @@ ACTOR FighterWeaponPiece : WeaponPiece // Fighter Weapon Piece 1 --------------------------------------------------- -ACTOR FWeaponPiece1 : FighterWeaponPiece 12 +ACTOR FWeaponPiece1 : FighterWeaponPiece { Game Hexen SpawnID 29 @@ -27,7 +27,7 @@ ACTOR FWeaponPiece1 : FighterWeaponPiece 12 // Fighter Weapon Piece 2 --------------------------------------------------- -ACTOR FWeaponPiece2 : FighterWeaponPiece 13 +ACTOR FWeaponPiece2 : FighterWeaponPiece { Game Hexen SpawnID 30 @@ -42,7 +42,7 @@ ACTOR FWeaponPiece2 : FighterWeaponPiece 13 // Fighter Weapon Piece 3 --------------------------------------------------- -ACTOR FWeaponPiece3 : FighterWeaponPiece 16 +ACTOR FWeaponPiece3 : FighterWeaponPiece { Game Hexen SpawnID 31 diff --git a/wadsrc/static/actors/hexen/firedemon.txt b/wadsrc/static/actors/hexen/firedemon.txt index 4873e2609..2c3eb6653 100644 --- a/wadsrc/static/actors/hexen/firedemon.txt +++ b/wadsrc/static/actors/hexen/firedemon.txt @@ -1,7 +1,7 @@ // FireDemon ---------------------------------------------------------------- -ACTOR FireDemon 10060 +ACTOR FireDemon { Game Hexen SpawnID 5 diff --git a/wadsrc/static/actors/hexen/flame.txt b/wadsrc/static/actors/hexen/flame.txt index 984c2d90c..492e04fde 100644 --- a/wadsrc/static/actors/hexen/flame.txt +++ b/wadsrc/static/actors/hexen/flame.txt @@ -1,6 +1,6 @@ // Temp Small Flame -------------------------------------------------------- -ACTOR FlameSmallTemp 10500 +ACTOR FlameSmallTemp { Game Hexen SpawnID 96 @@ -21,7 +21,7 @@ ACTOR FlameSmallTemp 10500 // Temp Large Flame --------------------------------------------------------- -ACTOR FlameLargeTemp 10502 +ACTOR FlameLargeTemp { Game Hexen SpawnID 98 @@ -52,7 +52,7 @@ ACTOR FlameLargeTemp 10502 // Small Flame -------------------------------------------------------------- -ACTOR FlameSmall : SwitchableDecoration 10501 +ACTOR FlameSmall : SwitchableDecoration { Game Hexen SpawnID 97 @@ -85,7 +85,7 @@ ACTOR FlameSmall2 : FlameSmall // Large Flame -------------------------------------------------------------- -ACTOR FlameLarge : SwitchableDecoration 10503 +ACTOR FlameLarge : SwitchableDecoration { Game Hexen SpawnID 99 diff --git a/wadsrc/static/actors/hexen/flechette.txt b/wadsrc/static/actors/hexen/flechette.txt index 6e12bff53..e2e157ee5 100644 --- a/wadsrc/static/actors/hexen/flechette.txt +++ b/wadsrc/static/actors/hexen/flechette.txt @@ -94,7 +94,7 @@ ACTOR ThrowingBomb // Poison Bag Artifact (Flechette) ------------------------------------------ -ACTOR ArtiPoisonBag : Inventory 8000 native +ACTOR ArtiPoisonBag : Inventory native { Game Hexen SpawnID 72 @@ -189,7 +189,7 @@ ACTOR PoisonCloud native // Poison Shroom ------------------------------------------------------------ -ACTOR ZPoisonShroom : PoisonBag 8104 +ACTOR ZPoisonShroom : PoisonBag { Game Hexen Radius 6 diff --git a/wadsrc/static/actors/hexen/flies.txt b/wadsrc/static/actors/hexen/flies.txt index 6be4a749f..138749a44 100644 --- a/wadsrc/static/actors/hexen/flies.txt +++ b/wadsrc/static/actors/hexen/flies.txt @@ -1,7 +1,7 @@ // Buzzy fly ---------------------------------------------------------------- -ACTOR LittleFly 112 +ACTOR LittleFly { Game Hexen +NOBLOCKMAP +NOGRAVITY diff --git a/wadsrc/static/actors/hexen/fog.txt b/wadsrc/static/actors/hexen/fog.txt index 91fdfc3ee..9b76bdc7a 100644 --- a/wadsrc/static/actors/hexen/fog.txt +++ b/wadsrc/static/actors/hexen/fog.txt @@ -1,7 +1,7 @@ // Fog Spawner -------------------------------------------------------------- -ACTOR FogSpawner 10000 +ACTOR FogSpawner { Game Hexen +NOSECTOR +NOBLOCKMAP @@ -21,7 +21,7 @@ ACTOR FogSpawner 10000 // Small Fog Patch ---------------------------------------------------------- -ACTOR FogPatchSmall 10001 +ACTOR FogPatchSmall { Game Hexen Speed 1 @@ -45,7 +45,7 @@ ACTOR FogPatchSmall 10001 // Medium Fog Patch --------------------------------------------------------- -ACTOR FogPatchMedium : FogPatchSmall 10002 +ACTOR FogPatchMedium : FogPatchSmall { Game Hexen States @@ -61,7 +61,7 @@ ACTOR FogPatchMedium : FogPatchSmall 10002 // Large Fog Patch ---------------------------------------------------------- -ACTOR FogPatchLarge : FogPatchMedium 10003 +ACTOR FogPatchLarge : FogPatchMedium { Game Hexen States diff --git a/wadsrc/static/actors/hexen/healingradius.txt b/wadsrc/static/actors/hexen/healingradius.txt index e0556915b..eefff43ae 100644 --- a/wadsrc/static/actors/hexen/healingradius.txt +++ b/wadsrc/static/actors/hexen/healingradius.txt @@ -1,7 +1,7 @@ // Healing Radius Artifact -------------------------------------------------- -ACTOR ArtiHealingRadius : Inventory 10120 native +ACTOR ArtiHealingRadius : Inventory native { Game Hexen +COUNTITEM diff --git a/wadsrc/static/actors/hexen/heresiarch.txt b/wadsrc/static/actors/hexen/heresiarch.txt index 5a77240fc..f883fae41 100644 --- a/wadsrc/static/actors/hexen/heresiarch.txt +++ b/wadsrc/static/actors/hexen/heresiarch.txt @@ -1,7 +1,7 @@ // The Heresiarch him/itself ------------------------------------------------ -ACTOR Heresiarch 10080 native +ACTOR Heresiarch native { Game Hexen Health 5000 diff --git a/wadsrc/static/actors/hexen/hexenarmor.txt b/wadsrc/static/actors/hexen/hexenarmor.txt index 8aa830654..9daffbbbe 100644 --- a/wadsrc/static/actors/hexen/hexenarmor.txt +++ b/wadsrc/static/actors/hexen/hexenarmor.txt @@ -1,7 +1,7 @@ // Mesh Armor (1) ----------------------------------------------------------- -ACTOR MeshArmor : HexenArmor 8005 +ACTOR MeshArmor : HexenArmor { Game Hexen SpawnID 68 @@ -19,7 +19,7 @@ ACTOR MeshArmor : HexenArmor 8005 // Falcon Shield (2) -------------------------------------------------------- -ACTOR FalconShield : HexenArmor 8006 +ACTOR FalconShield : HexenArmor { Game Hexen SpawnID 69 @@ -37,7 +37,7 @@ ACTOR FalconShield : HexenArmor 8006 // Platinum Helm (3) -------------------------------------------------------- -ACTOR PlatinumHelm : HexenArmor 8007 +ACTOR PlatinumHelm : HexenArmor { Game Hexen SpawnID 70 @@ -55,7 +55,7 @@ ACTOR PlatinumHelm : HexenArmor 8007 // Amulet of Warding (4) ---------------------------------------------------- -ACTOR AmuletOfWarding : HexenArmor 8008 +ACTOR AmuletOfWarding : HexenArmor { Game Hexen SpawnID 71 diff --git a/wadsrc/static/actors/hexen/hexendecorations.txt b/wadsrc/static/actors/hexen/hexendecorations.txt index 572c29568..3a172b51b 100644 --- a/wadsrc/static/actors/hexen/hexendecorations.txt +++ b/wadsrc/static/actors/hexen/hexendecorations.txt @@ -1,4 +1,4 @@ -ACTOR ZWingedStatue 5 +ACTOR ZWingedStatue { Game Hexen Radius 10 @@ -12,7 +12,7 @@ ACTOR ZWingedStatue 5 } } -ACTOR ZRock1 6 +ACTOR ZRock1 { Game Hexen Radius 20 @@ -25,7 +25,7 @@ ACTOR ZRock1 6 } } -ACTOR ZRock2 7 +ACTOR ZRock2 { Game Hexen Radius 20 @@ -38,7 +38,7 @@ ACTOR ZRock2 7 } } -ACTOR ZRock3 9 +ACTOR ZRock3 { Game Hexen Radius 20 @@ -51,7 +51,7 @@ ACTOR ZRock3 9 } } -ACTOR ZRock4 15 +ACTOR ZRock4 { Game Hexen Radius 20 @@ -64,7 +64,7 @@ ACTOR ZRock4 15 } } -ACTOR ZChandelier 17 +ACTOR ZChandelier { Game Hexen Radius 20 @@ -79,7 +79,7 @@ ACTOR ZChandelier 17 } } -ACTOR ZChandelierUnlit 8063 +ACTOR ZChandelierUnlit { Game Hexen Radius 20 @@ -94,7 +94,7 @@ ACTOR ZChandelierUnlit 8063 } } -ACTOR ZTreeDead 24 +ACTOR ZTreeDead { Game Hexen Radius 10 @@ -108,7 +108,7 @@ ACTOR ZTreeDead 24 } } -ACTOR ZTree 25 +ACTOR ZTree { Game Hexen Radius 15 @@ -122,7 +122,7 @@ ACTOR ZTree 25 } } -ACTOR ZTreeSwamp150 26 +ACTOR ZTreeSwamp150 { Game Hexen Radius 10 @@ -136,7 +136,7 @@ ACTOR ZTreeSwamp150 26 } } -ACTOR ZTreeSwamp120 27 +ACTOR ZTreeSwamp120 { Game Hexen Radius 10 @@ -150,7 +150,7 @@ ACTOR ZTreeSwamp120 27 } } -ACTOR ZStumpBurned 28 +ACTOR ZStumpBurned { Game Hexen Radius 12 @@ -164,7 +164,7 @@ ACTOR ZStumpBurned 28 } } -ACTOR ZStumpBare 29 +ACTOR ZStumpBare { Game Hexen Radius 12 @@ -178,7 +178,7 @@ ACTOR ZStumpBare 29 } } -ACTOR ZStumpSwamp1 37 +ACTOR ZStumpSwamp1 { Game Hexen Radius 20 @@ -191,7 +191,7 @@ ACTOR ZStumpSwamp1 37 } } -ACTOR ZStumpSwamp2 38 +ACTOR ZStumpSwamp2 { Game Hexen Radius 20 @@ -204,7 +204,7 @@ ACTOR ZStumpSwamp2 38 } } -ACTOR ZShroomLarge1 39 +ACTOR ZShroomLarge1 { Game Hexen Radius 20 @@ -217,7 +217,7 @@ ACTOR ZShroomLarge1 39 } } -ACTOR ZShroomLarge2 40 +ACTOR ZShroomLarge2 { Game Hexen Radius 20 @@ -230,7 +230,7 @@ ACTOR ZShroomLarge2 40 } } -ACTOR ZShroomLarge3 41 +ACTOR ZShroomLarge3 { Game Hexen Radius 20 @@ -243,7 +243,7 @@ ACTOR ZShroomLarge3 41 } } -ACTOR ZShroomSmall1 42 +ACTOR ZShroomSmall1 { Game Hexen Radius 20 @@ -256,7 +256,7 @@ ACTOR ZShroomSmall1 42 } } -ACTOR ZShroomSmall2 44 +ACTOR ZShroomSmall2 { Game Hexen Radius 20 @@ -269,7 +269,7 @@ ACTOR ZShroomSmall2 44 } } -ACTOR ZShroomSmall3 45 +ACTOR ZShroomSmall3 { Game Hexen Radius 20 @@ -282,7 +282,7 @@ ACTOR ZShroomSmall3 45 } } -ACTOR ZShroomSmall4 46 +ACTOR ZShroomSmall4 { Game Hexen Radius 20 @@ -295,7 +295,7 @@ ACTOR ZShroomSmall4 46 } } -ACTOR ZShroomSmall5 47 +ACTOR ZShroomSmall5 { Game Hexen Radius 20 @@ -308,7 +308,7 @@ ACTOR ZShroomSmall5 47 } } -ACTOR ZStalagmitePillar 48 +ACTOR ZStalagmitePillar { Game Hexen Radius 8 @@ -322,7 +322,7 @@ ACTOR ZStalagmitePillar 48 } } -ACTOR ZStalagmiteLarge 49 +ACTOR ZStalagmiteLarge { Game Hexen Radius 8 @@ -336,7 +336,7 @@ ACTOR ZStalagmiteLarge 49 } } -ACTOR ZStalagmiteMedium 50 +ACTOR ZStalagmiteMedium { Game Hexen Radius 6 @@ -350,7 +350,7 @@ ACTOR ZStalagmiteMedium 50 } } -ACTOR ZStalagmiteSmall 51 +ACTOR ZStalagmiteSmall { Game Hexen Radius 8 @@ -364,7 +364,7 @@ ACTOR ZStalagmiteSmall 51 } } -ACTOR ZStalactiteLarge 52 +ACTOR ZStalactiteLarge { Game Hexen Radius 8 @@ -380,7 +380,7 @@ ACTOR ZStalactiteLarge 52 } } -ACTOR ZStalactiteMedium 56 +ACTOR ZStalactiteMedium { Game Hexen Radius 6 @@ -396,7 +396,7 @@ ACTOR ZStalactiteMedium 56 } } -ACTOR ZStalactiteSmall 57 +ACTOR ZStalactiteSmall { Game Hexen Radius 8 @@ -412,7 +412,7 @@ ACTOR ZStalactiteSmall 57 } } -ACTOR ZMossCeiling1 58 +ACTOR ZMossCeiling1 { Game Hexen Radius 20 @@ -427,7 +427,7 @@ ACTOR ZMossCeiling1 58 } } -ACTOR ZMossCeiling2 59 +ACTOR ZMossCeiling2 { Game Hexen Radius 20 @@ -442,7 +442,7 @@ ACTOR ZMossCeiling2 59 } } -ACTOR ZSwampVine 60 +ACTOR ZSwampVine { Game Hexen Radius 8 @@ -456,7 +456,7 @@ ACTOR ZSwampVine 60 } } -ACTOR ZCorpseKabob 61 +ACTOR ZCorpseKabob { Game Hexen Radius 10 @@ -470,7 +470,7 @@ ACTOR ZCorpseKabob 61 } } -ACTOR ZCorpseSleeping 62 +ACTOR ZCorpseSleeping { Game Hexen Radius 20 @@ -483,7 +483,7 @@ ACTOR ZCorpseSleeping 62 } } -ACTOR ZTombstoneRIP 63 +ACTOR ZTombstoneRIP { Game Hexen Radius 10 @@ -497,7 +497,7 @@ ACTOR ZTombstoneRIP 63 } } -ACTOR ZTombstoneShane 64 +ACTOR ZTombstoneShane { Game Hexen Radius 10 @@ -511,7 +511,7 @@ ACTOR ZTombstoneShane 64 } } -ACTOR ZTombstoneBigCross 65 +ACTOR ZTombstoneBigCross { Game Hexen Radius 10 @@ -525,7 +525,7 @@ ACTOR ZTombstoneBigCross 65 } } -ACTOR ZTombstoneBrianR 66 +ACTOR ZTombstoneBrianR { Game Hexen Radius 10 @@ -539,7 +539,7 @@ ACTOR ZTombstoneBrianR 66 } } -ACTOR ZTombstoneCrossCircle 67 +ACTOR ZTombstoneCrossCircle { Game Hexen Radius 10 @@ -553,7 +553,7 @@ ACTOR ZTombstoneCrossCircle 67 } } -ACTOR ZTombstoneSmallCross 68 +ACTOR ZTombstoneSmallCross { Game Hexen Radius 8 @@ -567,7 +567,7 @@ ACTOR ZTombstoneSmallCross 68 } } -ACTOR ZTombstoneBrianP 69 +ACTOR ZTombstoneBrianP { Game Hexen Radius 8 @@ -581,7 +581,7 @@ ACTOR ZTombstoneBrianP 69 } } -ACTOR ZCorpseHanging 71 +ACTOR ZCorpseHanging { Game Hexen Radius 6 @@ -597,7 +597,7 @@ ACTOR ZCorpseHanging 71 } } -ACTOR ZStatueGargoyleGreenTall 72 +ACTOR ZStatueGargoyleGreenTall { Game Hexen Radius 14 @@ -611,7 +611,7 @@ ACTOR ZStatueGargoyleGreenTall 72 } } -ACTOR ZStatueGargoyleBlueTall 73 +ACTOR ZStatueGargoyleBlueTall { Game Hexen Radius 14 @@ -625,7 +625,7 @@ ACTOR ZStatueGargoyleBlueTall 73 } } -ACTOR ZStatueGargoyleGreenShort 74 +ACTOR ZStatueGargoyleGreenShort { Game Hexen Radius 14 @@ -639,7 +639,7 @@ ACTOR ZStatueGargoyleGreenShort 74 } } -ACTOR ZStatueGargoyleBlueShort 76 +ACTOR ZStatueGargoyleBlueShort { Game Hexen Radius 14 @@ -653,7 +653,7 @@ ACTOR ZStatueGargoyleBlueShort 76 } } -ACTOR ZStatueGargoyleStripeTall 8044 +ACTOR ZStatueGargoyleStripeTall { Game Hexen Radius 14 @@ -667,7 +667,7 @@ ACTOR ZStatueGargoyleStripeTall 8044 } } -ACTOR ZStatueGargoyleDarkRedTall 8045 +ACTOR ZStatueGargoyleDarkRedTall { Game Hexen Radius 14 @@ -681,7 +681,7 @@ ACTOR ZStatueGargoyleDarkRedTall 8045 } } -ACTOR ZStatueGargoyleRedTall 8046 +ACTOR ZStatueGargoyleRedTall { Game Hexen Radius 14 @@ -695,7 +695,7 @@ ACTOR ZStatueGargoyleRedTall 8046 } } -ACTOR ZStatueGargoyleTanTall 8047 +ACTOR ZStatueGargoyleTanTall { Game Hexen Radius 14 @@ -709,7 +709,7 @@ ACTOR ZStatueGargoyleTanTall 8047 } } -ACTOR ZStatueGargoyleRustTall 8048 +ACTOR ZStatueGargoyleRustTall { Game Hexen Radius 14 @@ -723,7 +723,7 @@ ACTOR ZStatueGargoyleRustTall 8048 } } -ACTOR ZStatueGargoyleDarkRedShort 8049 +ACTOR ZStatueGargoyleDarkRedShort { Game Hexen Radius 14 @@ -737,7 +737,7 @@ ACTOR ZStatueGargoyleDarkRedShort 8049 } } -ACTOR ZStatueGargoyleRedShort 8050 +ACTOR ZStatueGargoyleRedShort { Game Hexen Radius 14 @@ -751,7 +751,7 @@ ACTOR ZStatueGargoyleRedShort 8050 } } -ACTOR ZStatueGargoyleTanShort 8051 +ACTOR ZStatueGargoyleTanShort { Game Hexen Radius 14 @@ -765,7 +765,7 @@ ACTOR ZStatueGargoyleTanShort 8051 } } -ACTOR ZStatueGargoyleRustShort 8052 +ACTOR ZStatueGargoyleRustShort { Game Hexen Radius 14 @@ -779,7 +779,7 @@ ACTOR ZStatueGargoyleRustShort 8052 } } -ACTOR ZBannerTattered 77 +ACTOR ZBannerTattered { Game Hexen Radius 8 @@ -793,7 +793,7 @@ ACTOR ZBannerTattered 77 } } -ACTOR ZTreeLarge1 78 +ACTOR ZTreeLarge1 { Game Hexen Radius 15 @@ -807,7 +807,7 @@ ACTOR ZTreeLarge1 78 } } -ACTOR ZTreeLarge2 79 +ACTOR ZTreeLarge2 { Game Hexen Radius 15 @@ -821,7 +821,7 @@ ACTOR ZTreeLarge2 79 } } -ACTOR ZTreeGnarled1 80 +ACTOR ZTreeGnarled1 { Game Hexen Radius 22 @@ -835,7 +835,7 @@ ACTOR ZTreeGnarled1 80 } } -ACTOR ZTreeGnarled2 87 +ACTOR ZTreeGnarled2 { Game Hexen Radius 22 @@ -849,7 +849,7 @@ ACTOR ZTreeGnarled2 87 } } -ACTOR ZLog 88 +ACTOR ZLog { Game Hexen Radius 20 @@ -863,7 +863,7 @@ ACTOR ZLog 88 } } -ACTOR ZStalactiteIceLarge 89 +ACTOR ZStalactiteIceLarge { Game Hexen Radius 8 @@ -879,7 +879,7 @@ ACTOR ZStalactiteIceLarge 89 } } -ACTOR ZStalactiteIceMedium 90 +ACTOR ZStalactiteIceMedium { Game Hexen Radius 5 @@ -895,7 +895,7 @@ ACTOR ZStalactiteIceMedium 90 } } -ACTOR ZStalactiteIceSmall 91 +ACTOR ZStalactiteIceSmall { Game Hexen Radius 4 @@ -911,7 +911,7 @@ ACTOR ZStalactiteIceSmall 91 } } -ACTOR ZStalactiteIceTiny 92 +ACTOR ZStalactiteIceTiny { Game Hexen Radius 4 @@ -927,7 +927,7 @@ ACTOR ZStalactiteIceTiny 92 } } -ACTOR ZStalagmiteIceLarge 93 +ACTOR ZStalagmiteIceLarge { Game Hexen Radius 8 @@ -941,7 +941,7 @@ ACTOR ZStalagmiteIceLarge 93 } } -ACTOR ZStalagmiteIceMedium 94 +ACTOR ZStalagmiteIceMedium { Game Hexen Radius 5 @@ -955,7 +955,7 @@ ACTOR ZStalagmiteIceMedium 94 } } -ACTOR ZStalagmiteIceSmall 95 +ACTOR ZStalagmiteIceSmall { Game Hexen Radius 4 @@ -969,7 +969,7 @@ ACTOR ZStalagmiteIceSmall 95 } } -ACTOR ZStalagmiteIceTiny 96 +ACTOR ZStalagmiteIceTiny { Game Hexen Radius 4 @@ -983,7 +983,7 @@ ACTOR ZStalagmiteIceTiny 96 } } -ACTOR ZRockBrown1 97 +ACTOR ZRockBrown1 { Game Hexen Radius 17 @@ -997,7 +997,7 @@ ACTOR ZRockBrown1 97 } } -ACTOR ZRockBrown2 98 +ACTOR ZRockBrown2 { Game Hexen Radius 15 @@ -1011,7 +1011,7 @@ ACTOR ZRockBrown2 98 } } -ACTOR ZRockBlack 99 +ACTOR ZRockBlack { Game Hexen Radius 20 @@ -1025,7 +1025,7 @@ ACTOR ZRockBlack 99 } } -ACTOR ZRubble1 100 +ACTOR ZRubble1 { Game Hexen Radius 20 @@ -1038,7 +1038,7 @@ ACTOR ZRubble1 100 } } -ACTOR ZRubble2 101 +ACTOR ZRubble2 { Game Hexen Radius 20 @@ -1051,7 +1051,7 @@ ACTOR ZRubble2 101 } } -ACTOR ZRubble3 102 +ACTOR ZRubble3 { Game Hexen Radius 20 @@ -1064,7 +1064,7 @@ ACTOR ZRubble3 102 } } -ACTOR ZVasePillar 103 +ACTOR ZVasePillar { Game Hexen Radius 12 @@ -1078,7 +1078,7 @@ ACTOR ZVasePillar 103 } } -ACTOR ZCorpseLynched 108 +ACTOR ZCorpseLynched { Game Hexen Radius 11 @@ -1094,7 +1094,7 @@ ACTOR ZCorpseLynched 108 } } -ACTOR ZCandle 119 +ACTOR ZCandle { Game Hexen Radius 20 @@ -1109,7 +1109,7 @@ ACTOR ZCandle 119 } } -ACTOR ZBarrel 8100 +ACTOR ZBarrel { Game Hexen Radius 15 @@ -1123,7 +1123,7 @@ ACTOR ZBarrel 8100 } } -ACTOR ZBucket 8103 +ACTOR ZBucket { Game Hexen Radius 8 @@ -1139,7 +1139,7 @@ ACTOR ZBucket 8103 } } -ACTOR FireThing 8060 +ACTOR FireThing { Game Hexen Radius 5 @@ -1161,7 +1161,7 @@ ACTOR FireThing 8060 } } -ACTOR BrassTorch 8061 +ACTOR BrassTorch { Game Hexen Radius 6 @@ -1175,7 +1175,7 @@ ACTOR BrassTorch 8061 } } -ACTOR ZBlueCandle 8066 +ACTOR ZBlueCandle { Game Hexen Radius 20 @@ -1189,7 +1189,7 @@ ACTOR ZBlueCandle 8066 } } -ACTOR ZIronMaiden 8067 +ACTOR ZIronMaiden { Game Hexen Radius 12 @@ -1203,7 +1203,7 @@ ACTOR ZIronMaiden 8067 } } -ACTOR ZChainBit32 8071 +ACTOR ZChainBit32 { Game Hexen Radius 4 @@ -1219,7 +1219,7 @@ ACTOR ZChainBit32 8071 } } -ACTOR ZChainBit64 8072 +ACTOR ZChainBit64 { Game Hexen Radius 4 @@ -1235,7 +1235,7 @@ ACTOR ZChainBit64 8072 } } -ACTOR ZChainEndHeart 8073 +ACTOR ZChainEndHeart { Game Hexen Radius 4 @@ -1251,7 +1251,7 @@ ACTOR ZChainEndHeart 8073 } } -ACTOR ZChainEndHook1 8074 +ACTOR ZChainEndHook1 { Game Hexen Radius 4 @@ -1267,7 +1267,7 @@ ACTOR ZChainEndHook1 8074 } } -ACTOR ZChainEndHook2 8075 +ACTOR ZChainEndHook2 { Game Hexen Radius 4 @@ -1283,7 +1283,7 @@ ACTOR ZChainEndHook2 8075 } } -ACTOR ZChainEndSpike 8076 +ACTOR ZChainEndSpike { Game Hexen Radius 4 @@ -1299,7 +1299,7 @@ ACTOR ZChainEndSpike 8076 } } -ACTOR ZChainEndSkull 8077 +ACTOR ZChainEndSkull { Game Hexen Radius 4 @@ -1315,7 +1315,7 @@ ACTOR ZChainEndSkull 8077 } } -ACTOR TableShit1 8500 +ACTOR TableShit1 { Game Hexen Radius 20 @@ -1329,7 +1329,7 @@ ACTOR TableShit1 8500 } } -ACTOR TableShit2 8501 +ACTOR TableShit2 { Game Hexen Radius 20 @@ -1343,7 +1343,7 @@ ACTOR TableShit2 8501 } } -ACTOR TableShit3 8502 +ACTOR TableShit3 { Game Hexen Radius 20 @@ -1357,7 +1357,7 @@ ACTOR TableShit3 8502 } } -ACTOR TableShit4 8503 +ACTOR TableShit4 { Game Hexen Radius 20 @@ -1371,7 +1371,7 @@ ACTOR TableShit4 8503 } } -ACTOR TableShit5 8504 +ACTOR TableShit5 { Game Hexen Radius 20 @@ -1385,7 +1385,7 @@ ACTOR TableShit5 8504 } } -ACTOR TableShit6 8505 +ACTOR TableShit6 { Game Hexen Radius 20 @@ -1399,7 +1399,7 @@ ACTOR TableShit6 8505 } } -ACTOR TableShit7 8506 +ACTOR TableShit7 { Game Hexen Radius 20 @@ -1413,7 +1413,7 @@ ACTOR TableShit7 8506 } } -ACTOR TableShit8 8507 +ACTOR TableShit8 { Game Hexen Radius 20 @@ -1427,7 +1427,7 @@ ACTOR TableShit8 8507 } } -ACTOR TableShit9 8508 +ACTOR TableShit9 { Game Hexen Radius 20 @@ -1441,7 +1441,7 @@ ACTOR TableShit9 8508 } } -ACTOR TableShit10 8509 +ACTOR TableShit10 { Game Hexen Radius 20 @@ -1455,7 +1455,7 @@ ACTOR TableShit10 8509 } } -ACTOR TeleSmoke 140 +ACTOR TeleSmoke { Game Hexen Radius 20 diff --git a/wadsrc/static/actors/hexen/hexenkeys.txt b/wadsrc/static/actors/hexen/hexenkeys.txt index e58693e69..f52b416ec 100644 --- a/wadsrc/static/actors/hexen/hexenkeys.txt +++ b/wadsrc/static/actors/hexen/hexenkeys.txt @@ -5,7 +5,7 @@ ACTOR HexenKey : Key Height 20 } -ACTOR KeySteel : HexenKey 8030 +ACTOR KeySteel : HexenKey { Game Hexen SpawnID 85 @@ -19,7 +19,7 @@ ACTOR KeySteel : HexenKey 8030 } } -ACTOR KeyCave : HexenKey 8031 +ACTOR KeyCave : HexenKey { Game Hexen SpawnID 86 @@ -33,7 +33,7 @@ ACTOR KeyCave : HexenKey 8031 } } -ACTOR KeyAxe : HexenKey 8032 +ACTOR KeyAxe : HexenKey { Game Hexen SpawnID 87 @@ -47,7 +47,7 @@ ACTOR KeyAxe : HexenKey 8032 } } -ACTOR KeyFire : HexenKey 8033 +ACTOR KeyFire : HexenKey { Game Hexen SpawnID 88 @@ -61,7 +61,7 @@ ACTOR KeyFire : HexenKey 8033 } } -ACTOR KeyEmerald : HexenKey 8034 +ACTOR KeyEmerald : HexenKey { Game Hexen SpawnID 89 @@ -75,7 +75,7 @@ ACTOR KeyEmerald : HexenKey 8034 } } -ACTOR KeyDungeon : HexenKey 8035 +ACTOR KeyDungeon : HexenKey { Game Hexen SpawnID 90 @@ -89,7 +89,7 @@ ACTOR KeyDungeon : HexenKey 8035 } } -ACTOR KeySilver : HexenKey 8036 +ACTOR KeySilver : HexenKey { Game Hexen SpawnID 91 @@ -103,7 +103,7 @@ ACTOR KeySilver : HexenKey 8036 } } -ACTOR KeyRusted : HexenKey 8037 +ACTOR KeyRusted : HexenKey { Game Hexen SpawnID 92 @@ -117,7 +117,7 @@ ACTOR KeyRusted : HexenKey 8037 } } -ACTOR KeyHorn : HexenKey 8038 +ACTOR KeyHorn : HexenKey { Game Hexen SpawnID 93 @@ -131,7 +131,7 @@ ACTOR KeyHorn : HexenKey 8038 } } -ACTOR KeySwamp : HexenKey 8039 +ACTOR KeySwamp : HexenKey { Game Hexen SpawnID 94 @@ -145,7 +145,7 @@ ACTOR KeySwamp : HexenKey 8039 } } -ACTOR KeyCastle : HexenKey 8200 +ACTOR KeyCastle : HexenKey { Game Hexen Inventory.Icon KEYSLOTB diff --git a/wadsrc/static/actors/hexen/hexenspecialdecs.txt b/wadsrc/static/actors/hexen/hexenspecialdecs.txt index e36451e7f..61dc0cb19 100644 --- a/wadsrc/static/actors/hexen/hexenspecialdecs.txt +++ b/wadsrc/static/actors/hexen/hexenspecialdecs.txt @@ -1,7 +1,7 @@ // Winged Statue (no skull) ------------------------------------------------- -ACTOR ZWingedStatueNoSkull : SwitchingDecoration 9011 +ACTOR ZWingedStatueNoSkull : SwitchingDecoration { Game Hexen Radius 10 @@ -21,7 +21,7 @@ ACTOR ZWingedStatueNoSkull : SwitchingDecoration 9011 // Gem pedestal ------------------------------------------------------------- -ACTOR ZGemPedestal : SwitchingDecoration 9012 +ACTOR ZGemPedestal : SwitchingDecoration { Game Hexen Radius 10 @@ -41,7 +41,7 @@ ACTOR ZGemPedestal : SwitchingDecoration 9012 // Tree (destructible) ------------------------------------------------------ -ACTOR TreeDestructible 8062 +ACTOR TreeDestructible { Game Hexen Health 70 @@ -77,7 +77,7 @@ ACTOR TreeDestructible 8062 // Pottery1 ------------------------------------------------------------------ -ACTOR Pottery1 104 native +ACTOR Pottery1 native { Game Hexen Health 15 @@ -102,7 +102,7 @@ ACTOR Pottery1 104 native // Pottery2 ----------------------------------------------------------------- -ACTOR Pottery2 : Pottery1 105 +ACTOR Pottery2 : Pottery1 { Game Hexen Height 25 @@ -116,7 +116,7 @@ ACTOR Pottery2 : Pottery1 105 // Pottery3 ----------------------------------------------------------------- -ACTOR Pottery3 : Pottery1 106 +ACTOR Pottery3 : Pottery1 { Game Hexen Height 25 @@ -175,7 +175,7 @@ ACTOR PotteryBit // Blood pool --------------------------------------------------------------- -ACTOR BloodPool 111 +ACTOR BloodPool { Game Hexen States @@ -189,7 +189,7 @@ ACTOR BloodPool 111 // Lynched corpse (no heart) ------------------------------------------------ -ACTOR ZCorpseLynchedNoHeart 109 native +ACTOR ZCorpseLynchedNoHeart native { Game Hexen Radius 10 @@ -255,7 +255,7 @@ ACTOR CorpseBit // Corpse (sitting, splatterable) ------------------------------------------- -ACTOR ZCorpseSitting 110 +ACTOR ZCorpseSitting { Game Hexen Health 30 @@ -281,7 +281,7 @@ ACTOR ZCorpseSitting 110 // Leaf Spawner ------------------------------------------------------------- -ACTOR LeafSpawner 113 +ACTOR LeafSpawner { Game Hexen +NOBLOCKMAP +NOSECTOR @@ -357,7 +357,7 @@ ACTOR Leaf2 : Leaf1 // Twined torch ------------------------------------------------------------- -ACTOR ZTwinedTorch : SwitchableDecoration 116 +ACTOR ZTwinedTorch : SwitchableDecoration { Game Hexen Radius 10 @@ -376,7 +376,7 @@ ACTOR ZTwinedTorch : SwitchableDecoration 116 } } -ACTOR ZTwinedTorchUnlit : ZTwinedTorch 117 +ACTOR ZTwinedTorchUnlit : ZTwinedTorch { Game Hexen States @@ -389,7 +389,7 @@ ACTOR ZTwinedTorchUnlit : ZTwinedTorch 117 // Wall torch --------------------------------------------------------------- -ACTOR ZWallTorch : SwitchableDecoration 54 +ACTOR ZWallTorch : SwitchableDecoration { Game Hexen +NOBLOCKMAP @@ -409,7 +409,7 @@ ACTOR ZWallTorch : SwitchableDecoration 54 } } -ACTOR ZWallTorchUnlit : ZWallTorch 55 +ACTOR ZWallTorchUnlit : ZWallTorch { Game Hexen States @@ -422,7 +422,7 @@ ACTOR ZWallTorchUnlit : ZWallTorch 55 // Shrub1 ------------------------------------------------------------------- -ACTOR ZShrub1 8101 +ACTOR ZShrub1 { Game Hexen Radius 8 @@ -447,7 +447,7 @@ ACTOR ZShrub1 8101 // Shrub2 ------------------------------------------------------------------- -ACTOR ZShrub2 8102 +ACTOR ZShrub2 { Game Hexen Radius 16 @@ -473,7 +473,7 @@ ACTOR ZShrub2 8102 // Fire Bull ---------------------------------------------------------------- -ACTOR ZFireBull : SwitchableDecoration 8042 +ACTOR ZFireBull : SwitchableDecoration { Game Hexen Radius 20 @@ -494,7 +494,7 @@ ACTOR ZFireBull : SwitchableDecoration 8042 } } -ACTOR ZFireBullUnlit : ZFireBull 8043 +ACTOR ZFireBullUnlit : ZFireBull { Game Hexen States @@ -507,7 +507,7 @@ ACTOR ZFireBullUnlit : ZFireBull 8043 // Suit of armor ------------------------------------------------------------ -ACTOR ZSuitOfArmor 8064 +ACTOR ZSuitOfArmor { Game Hexen Health 60 @@ -567,7 +567,7 @@ ACTOR ZArmorChunk // Bell --------------------------------------------------------------------- -ACTOR ZBell 8065 native +ACTOR ZBell native { Game Hexen Health 5 @@ -627,7 +627,7 @@ ACTOR ZBell 8065 native // "Christmas" Tree --------------------------------------------------------- -ACTOR ZXmasTree 8068 +ACTOR ZXmasTree { Game Hexen Radius 11 @@ -658,7 +658,7 @@ ACTOR ZXmasTree 8068 // Cauldron ----------------------------------------------------------------- -ACTOR ZCauldron : SwitchableDecoration 8069 +ACTOR ZCauldron : SwitchableDecoration { Game Hexen Radius 12 @@ -677,7 +677,7 @@ ACTOR ZCauldron : SwitchableDecoration 8069 } } -ACTOR ZCauldronUnlit : ZCauldron 8070 +ACTOR ZCauldronUnlit : ZCauldron { Game Hexen States diff --git a/wadsrc/static/actors/hexen/iceguy.txt b/wadsrc/static/actors/hexen/iceguy.txt index 0a5fdce3f..aaf16d4c6 100644 --- a/wadsrc/static/actors/hexen/iceguy.txt +++ b/wadsrc/static/actors/hexen/iceguy.txt @@ -1,7 +1,7 @@ // Ice Guy ------------------------------------------------------------------ -ACTOR IceGuy 8020 +ACTOR IceGuy { Game Hexen SpawnID 20 diff --git a/wadsrc/static/actors/hexen/korax.txt b/wadsrc/static/actors/hexen/korax.txt index 3c857df95..da48b580d 100644 --- a/wadsrc/static/actors/hexen/korax.txt +++ b/wadsrc/static/actors/hexen/korax.txt @@ -1,4 +1,4 @@ -ACTOR Korax 10200 +ACTOR Korax { Game Hexen Health 5000 diff --git a/wadsrc/static/actors/hexen/mageboss.txt b/wadsrc/static/actors/hexen/mageboss.txt index 7e11d2cd1..f8c5dc9e3 100644 --- a/wadsrc/static/actors/hexen/mageboss.txt +++ b/wadsrc/static/actors/hexen/mageboss.txt @@ -1,7 +1,7 @@ // Mage Boss (Menelkir) ----------------------------------------------------- -ACTOR MageBoss 10102 +ACTOR MageBoss { Game Hexen Health 800 diff --git a/wadsrc/static/actors/hexen/magecone.txt b/wadsrc/static/actors/hexen/magecone.txt index b5dfdb546..a39dbcb86 100644 --- a/wadsrc/static/actors/hexen/magecone.txt +++ b/wadsrc/static/actors/hexen/magecone.txt @@ -1,7 +1,7 @@ // The Mage's Frost Cone ---------------------------------------------------- -ACTOR MWeapFrost : MageWeapon 53 +ACTOR MWeapFrost : MageWeapon { Game Hexen SpawnID 36 diff --git a/wadsrc/static/actors/hexen/magelightning.txt b/wadsrc/static/actors/hexen/magelightning.txt index 85402f223..0e507db58 100644 --- a/wadsrc/static/actors/hexen/magelightning.txt +++ b/wadsrc/static/actors/hexen/magelightning.txt @@ -1,7 +1,7 @@ // The Mage's Lightning Arc of Death ---------------------------------------- -ACTOR MWeapLightning : MageWeapon 8040 +ACTOR MWeapLightning : MageWeapon { Game Hexen +NOGRAVITY diff --git a/wadsrc/static/actors/hexen/magestaff.txt b/wadsrc/static/actors/hexen/magestaff.txt index aa75ed446..91864ff6f 100644 --- a/wadsrc/static/actors/hexen/magestaff.txt +++ b/wadsrc/static/actors/hexen/magestaff.txt @@ -12,7 +12,7 @@ ACTOR MageWeaponPiece : WeaponPiece // Mage Weapon Piece 1 ------------------------------------------------------ -ACTOR MWeaponPiece1 : MageWeaponPiece 21 +ACTOR MWeaponPiece1 : MageWeaponPiece { Game Hexen SpawnID 37 @@ -27,7 +27,7 @@ ACTOR MWeaponPiece1 : MageWeaponPiece 21 // Mage Weapon Piece 2 ------------------------------------------------------ -ACTOR MWeaponPiece2 : MageWeaponPiece 22 +ACTOR MWeaponPiece2 : MageWeaponPiece { Game Hexen SpawnID 38 @@ -42,7 +42,7 @@ ACTOR MWeaponPiece2 : MageWeaponPiece 22 // Mage Weapon Piece 3 ------------------------------------------------------ -ACTOR MWeaponPiece3 : MageWeaponPiece 23 +ACTOR MWeaponPiece3 : MageWeaponPiece { Game Hexen SpawnID 39 diff --git a/wadsrc/static/actors/hexen/mana.txt b/wadsrc/static/actors/hexen/mana.txt index ee7ddd37c..c38bbcb8a 100644 --- a/wadsrc/static/actors/hexen/mana.txt +++ b/wadsrc/static/actors/hexen/mana.txt @@ -1,6 +1,6 @@ // Blue mana ---------------------------------------------------------------- -ACTOR Mana1 : Ammo 122 +ACTOR Mana1 : Ammo { Game Hexen SpawnID 11 @@ -23,7 +23,7 @@ ACTOR Mana1 : Ammo 122 // Green mana --------------------------------------------------------------- -ACTOR Mana2 : Ammo 124 +ACTOR Mana2 : Ammo { Game Hexen SpawnID 12 @@ -46,7 +46,7 @@ ACTOR Mana2 : Ammo 124 // Combined mana ------------------------------------------------------------ -ACTOR Mana3 : CustomInventory 8004 +ACTOR Mana3 : CustomInventory { Game Hexen SpawnID 75 @@ -68,7 +68,7 @@ ACTOR Mana3 : CustomInventory 8004 // Boost Mana Artifact Krater of Might ------------------------------------ -ACTOR ArtiBoostMana : CustomInventory 8003 +ACTOR ArtiBoostMana : CustomInventory { Game Hexen SpawnID 26 diff --git a/wadsrc/static/actors/hexen/puzzleitems.txt b/wadsrc/static/actors/hexen/puzzleitems.txt index dd15fc8fd..af571a336 100644 --- a/wadsrc/static/actors/hexen/puzzleitems.txt +++ b/wadsrc/static/actors/hexen/puzzleitems.txt @@ -1,7 +1,7 @@ // Yorick's Skull ----------------------------------------------------------- -ACTOR PuzzSkull : PuzzleItem 9002 +ACTOR PuzzSkull : PuzzleItem { Game Hexen SpawnID 76 @@ -20,7 +20,7 @@ ACTOR PuzzSkull : PuzzleItem 9002 // Heart of D'Sparil -------------------------------------------------------- -ACTOR PuzzGemBig : PuzzleItem 9003 +ACTOR PuzzGemBig : PuzzleItem { Game Hexen SpawnID 77 @@ -38,7 +38,7 @@ ACTOR PuzzGemBig : PuzzleItem 9003 // Red Gem (Ruby Planet) ---------------------------------------------------- -ACTOR PuzzGemRed : PuzzleItem 9004 +ACTOR PuzzGemRed : PuzzleItem { Game Hexen SpawnID 78 @@ -57,7 +57,7 @@ ACTOR PuzzGemRed : PuzzleItem 9004 // Green Gem 1 (Emerald Planet) --------------------------------------------- -ACTOR PuzzGemGreen1 : PuzzleItem 9005 +ACTOR PuzzGemGreen1 : PuzzleItem { Game Hexen SpawnID 79 @@ -76,7 +76,7 @@ ACTOR PuzzGemGreen1 : PuzzleItem 9005 // Green Gem 2 (Emerald Planet) --------------------------------------------- -ACTOR PuzzGemGreen2 : PuzzleItem 9009 +ACTOR PuzzGemGreen2 : PuzzleItem { Game Hexen SpawnID 80 @@ -95,7 +95,7 @@ ACTOR PuzzGemGreen2 : PuzzleItem 9009 // Blue Gem 1 (Sapphire Planet) --------------------------------------------- -ACTOR PuzzGemBlue1 : PuzzleItem 9006 +ACTOR PuzzGemBlue1 : PuzzleItem { Game Hexen SpawnID 81 @@ -114,7 +114,7 @@ ACTOR PuzzGemBlue1 : PuzzleItem 9006 // Blue Gem 2 (Sapphire Planet) --------------------------------------------- -ACTOR PuzzGemBlue2 : PuzzleItem 9010 +ACTOR PuzzGemBlue2 : PuzzleItem { Game Hexen SpawnID 82 @@ -133,7 +133,7 @@ ACTOR PuzzGemBlue2 : PuzzleItem 9010 // Book 1 (Daemon Codex) ---------------------------------------------------- -ACTOR PuzzBook1 : PuzzleItem 9007 +ACTOR PuzzBook1 : PuzzleItem { Game Hexen SpawnID 83 @@ -152,7 +152,7 @@ ACTOR PuzzBook1 : PuzzleItem 9007 // Book 2 (Liber Oscura) ---------------------------------------------------- -ACTOR PuzzBook2 : PuzzleItem 9008 +ACTOR PuzzBook2 : PuzzleItem { Game Hexen SpawnID 84 @@ -172,7 +172,7 @@ ACTOR PuzzBook2 : PuzzleItem 9008 // Flame Mask --------------------------------------------------------------- -ACTOR PuzzFlameMask : PuzzleItem 9014 +ACTOR PuzzFlameMask : PuzzleItem { Game Hexen PuzzleItem.Number 9 @@ -189,7 +189,7 @@ ACTOR PuzzFlameMask : PuzzleItem 9014 // Fighter Weapon (Glaive Seal) --------------------------------------------- -ACTOR PuzzFWeapon : PuzzleItem 9015 +ACTOR PuzzFWeapon : PuzzleItem { Game Hexen PuzzleItem.Number 10 @@ -207,7 +207,7 @@ ACTOR PuzzFWeapon : PuzzleItem 9015 // Cleric Weapon (Holy Relic) ----------------------------------------------- -ACTOR PuzzCWeapon : PuzzleItem 9016 +ACTOR PuzzCWeapon : PuzzleItem { Game Hexen PuzzleItem.Number 11 @@ -225,7 +225,7 @@ ACTOR PuzzCWeapon : PuzzleItem 9016 // Mage Weapon (Sigil of the Magus) ----------------------------------------- -ACTOR PuzzMWeapon : PuzzleItem 9017 +ACTOR PuzzMWeapon : PuzzleItem { Game Hexen PuzzleItem.Number 12 @@ -242,7 +242,7 @@ ACTOR PuzzMWeapon : PuzzleItem 9017 // Clock Gear 1 ------------------------------------------------------------- -ACTOR PuzzGear1 : PuzzleItem 9018 +ACTOR PuzzGear1 : PuzzleItem { Game Hexen PuzzleItem.Number 13 @@ -260,7 +260,7 @@ ACTOR PuzzGear1 : PuzzleItem 9018 // Clock Gear 2 ------------------------------------------------------------- -ACTOR PuzzGear2 : PuzzleItem 9019 +ACTOR PuzzGear2 : PuzzleItem { Game Hexen PuzzleItem.Number 14 @@ -278,7 +278,7 @@ ACTOR PuzzGear2 : PuzzleItem 9019 // Clock Gear 3 ------------------------------------------------------------- -ACTOR PuzzGear3 : PuzzleItem 9020 +ACTOR PuzzGear3 : PuzzleItem { Game Hexen PuzzleItem.Number 15 @@ -296,7 +296,7 @@ ACTOR PuzzGear3 : PuzzleItem 9020 // Clock Gear 4 ------------------------------------------------------------- -ACTOR PuzzGear4 : PuzzleItem 9021 +ACTOR PuzzGear4 : PuzzleItem { Game Hexen PuzzleItem.Number 16 diff --git a/wadsrc/static/actors/hexen/serpent.txt b/wadsrc/static/actors/hexen/serpent.txt index 41d69fe1b..ab666174a 100644 --- a/wadsrc/static/actors/hexen/serpent.txt +++ b/wadsrc/static/actors/hexen/serpent.txt @@ -1,7 +1,7 @@ // Serpent ------------------------------------------------------------------ -ACTOR Serpent 121 +ACTOR Serpent { Game Hexen SpawnID 6 @@ -102,7 +102,7 @@ ACTOR Serpent 121 // Serpent Leader ----------------------------------------------------------- -ACTOR SerpentLeader : Serpent 120 +ACTOR SerpentLeader : Serpent { Game Hexen SpawnID 7 diff --git a/wadsrc/static/actors/hexen/speedboots.txt b/wadsrc/static/actors/hexen/speedboots.txt index 5fd6703b8..3644a659b 100644 --- a/wadsrc/static/actors/hexen/speedboots.txt +++ b/wadsrc/static/actors/hexen/speedboots.txt @@ -1,6 +1,6 @@ -ACTOR ArtiSpeedBoots : PowerupGiver 8002 +ACTOR ArtiSpeedBoots : PowerupGiver { Game Hexen SpawnID 13 diff --git a/wadsrc/static/actors/hexen/spike.txt b/wadsrc/static/actors/hexen/spike.txt index 13b1a9c9b..77691e915 100644 --- a/wadsrc/static/actors/hexen/spike.txt +++ b/wadsrc/static/actors/hexen/spike.txt @@ -79,7 +79,7 @@ ACTOR ThrustFloor native // Spike up ----------------------------------------------------------------- -ACTOR ThrustFloorUp : ThrustFloor 10091 +ACTOR ThrustFloorUp : ThrustFloor { Game Hexen SpawnID 104 @@ -94,7 +94,7 @@ ACTOR ThrustFloorUp : ThrustFloor 10091 // Spike down --------------------------------------------------------------- -ACTOR ThrustFloorDown : ThrustFloor 10090 +ACTOR ThrustFloorDown : ThrustFloor { Game Hexen +NOTELEPORT +FLOORCLIP diff --git a/wadsrc/static/actors/hexen/summon.txt b/wadsrc/static/actors/hexen/summon.txt index a4b3b8584..1fb482d6c 100644 --- a/wadsrc/static/actors/hexen/summon.txt +++ b/wadsrc/static/actors/hexen/summon.txt @@ -1,7 +1,7 @@ // Dark Servant Artifact ---------------------------------------------------- -ACTOR ArtiDarkServant : Inventory 86 native +ACTOR ArtiDarkServant : Inventory native { Game Hexen SpawnID 16 diff --git a/wadsrc/static/actors/hexen/teleportother.txt b/wadsrc/static/actors/hexen/teleportother.txt index 77a05f6af..48f8ba733 100644 --- a/wadsrc/static/actors/hexen/teleportother.txt +++ b/wadsrc/static/actors/hexen/teleportother.txt @@ -1,7 +1,7 @@ // Teleport Other Artifact -------------------------------------------------- -ACTOR ArtiTeleportOther : Inventory 10040 native +ACTOR ArtiTeleportOther : Inventory native { Game Hexen SpawnID 17 diff --git a/wadsrc/static/actors/hexen/wraith.txt b/wadsrc/static/actors/hexen/wraith.txt index 0472427fc..b1522681d 100644 --- a/wadsrc/static/actors/hexen/wraith.txt +++ b/wadsrc/static/actors/hexen/wraith.txt @@ -1,7 +1,7 @@ // Wraith ------------------------------------------------------------------- -ACTOR Wraith 34 +ACTOR Wraith { Game Hexen SpawnID 8 @@ -81,7 +81,7 @@ ACTOR Wraith 34 // Buried wraith ------------------------------------------------------------ -ACTOR WraithBuried : Wraith 10011 +ACTOR WraithBuried : Wraith { Game Hexen SpawnID 9 diff --git a/wadsrc/static/actors/raven/artiegg.txt b/wadsrc/static/actors/raven/artiegg.txt index d94f00151..0c168c4d2 100644 --- a/wadsrc/static/actors/raven/artiegg.txt +++ b/wadsrc/static/actors/raven/artiegg.txt @@ -25,7 +25,7 @@ ACTOR EggFX : MorphProjectile // Morph Ovum ---------------------------------------------------------------- -ACTOR ArtiEgg : CustomInventory 30 +ACTOR ArtiEgg : CustomInventory { Game Heretic SpawnID 14 @@ -79,7 +79,7 @@ ACTOR PorkFX : MorphProjectile // Porkalator --------------------------------------------------------------- -ACTOR ArtiPork : CustomInventory 30 +ACTOR ArtiPork : CustomInventory { Game Hexen SpawnID 14 diff --git a/wadsrc/static/actors/raven/artitele.txt b/wadsrc/static/actors/raven/artitele.txt index 79811fd53..6dad46781 100644 --- a/wadsrc/static/actors/raven/artitele.txt +++ b/wadsrc/static/actors/raven/artitele.txt @@ -1,7 +1,7 @@ // Teleport (self) ---------------------------------------------------------- -ACTOR ArtiTeleport : Inventory 36 native +ACTOR ArtiTeleport : Inventory native { Game Raven SpawnID 18 diff --git a/wadsrc/static/actors/raven/minotaur.txt b/wadsrc/static/actors/raven/minotaur.txt index 81d20efeb..ba844fa93 100644 --- a/wadsrc/static/actors/raven/minotaur.txt +++ b/wadsrc/static/actors/raven/minotaur.txt @@ -1,4 +1,4 @@ -ACTOR Minotaur 9 native +ACTOR Minotaur native { Game Heretic Health 3000 diff --git a/wadsrc/static/actors/raven/ravenambient.txt b/wadsrc/static/actors/raven/ravenambient.txt index 8489803e5..6b259e09a 100644 --- a/wadsrc/static/actors/raven/ravenambient.txt +++ b/wadsrc/static/actors/raven/ravenambient.txt @@ -2,7 +2,7 @@ // Wind --------------------------------------------------------------------- -ACTOR SoundWind 42 +ACTOR SoundWind { Game Heretic SpawnID 110 @@ -17,7 +17,7 @@ ACTOR SoundWind 42 } } -ACTOR SoundWindHexen : SoundWind 1410 +ACTOR SoundWindHexen : SoundWind { Game Hexen SpawnID 110 @@ -26,7 +26,7 @@ ACTOR SoundWindHexen : SoundWind 1410 // Waterfall ---------------------------------------------------------------- -ACTOR SoundWaterfall 41 +ACTOR SoundWaterfall { Game Heretic SpawnID 111 diff --git a/wadsrc/static/actors/raven/ravenartifacts.txt b/wadsrc/static/actors/raven/ravenartifacts.txt index c02c19c3b..c80800502 100644 --- a/wadsrc/static/actors/raven/ravenartifacts.txt +++ b/wadsrc/static/actors/raven/ravenartifacts.txt @@ -1,7 +1,7 @@ // Health ------------------------------------------------------------------- -ACTOR ArtiHealth : HealthPickup 82 +ACTOR ArtiHealth : HealthPickup { Game Raven SpawnID 24 @@ -25,7 +25,7 @@ ACTOR ArtiHealth : HealthPickup 82 // Super health ------------------------------------------------------------- -ACTOR ArtiSuperHealth : HealthPickup 32 +ACTOR ArtiSuperHealth : HealthPickup { Game Raven SpawnID 25 @@ -49,7 +49,7 @@ ACTOR ArtiSuperHealth : HealthPickup 32 // Flight ------------------------------------------------------------------- -ACTOR ArtiFly : PowerupGiver 83 +ACTOR ArtiFly : PowerupGiver { Game Raven SpawnID 15 @@ -72,7 +72,7 @@ ACTOR ArtiFly : PowerupGiver 83 // Invulnerability Heretic (Ring of invincibility) -------------------------- -ACTOR ArtiInvulnerability : PowerupGiver 84 +ACTOR ArtiInvulnerability : PowerupGiver { Game Heretic SpawnID 133 @@ -95,7 +95,7 @@ ACTOR ArtiInvulnerability : PowerupGiver 84 // Invulnerability Hexen (Icon of the defender) ----------------------------- -ACTOR ArtiInvulnerability2 : PowerupGiver 84 +ACTOR ArtiInvulnerability2 : PowerupGiver { Game Hexen SpawnID 133 @@ -117,7 +117,7 @@ ACTOR ArtiInvulnerability2 : PowerupGiver 84 // Torch -------------------------------------------------------------------- -ACTOR ArtiTorch : PowerupGiver 33 +ACTOR ArtiTorch : PowerupGiver { Game Raven SpawnID 73 diff --git a/wadsrc/static/actors/raven/ravenhealth.txt b/wadsrc/static/actors/raven/ravenhealth.txt index af951be1b..526666532 100644 --- a/wadsrc/static/actors/raven/ravenhealth.txt +++ b/wadsrc/static/actors/raven/ravenhealth.txt @@ -1,4 +1,4 @@ -ACTOR CrystalVial : Health 81 +ACTOR CrystalVial : Health { Game Raven SpawnID 23 diff --git a/wadsrc/static/actors/shared/bridge.txt b/wadsrc/static/actors/shared/bridge.txt index f4d979738..9a0224a93 100644 --- a/wadsrc/static/actors/shared/bridge.txt +++ b/wadsrc/static/actors/shared/bridge.txt @@ -20,7 +20,7 @@ ACTOR BridgeBall // The bridge itself ------------------------------------------------------- -ACTOR CustomBridge 9991 native +ACTOR CustomBridge native { +SOLID +NOGRAVITY @@ -51,7 +51,7 @@ ACTOR CustomBridge 9991 native // The Hexen bridge ------------------------------------------------------- -ACTOR Bridge : CustomBridge 118 +ACTOR Bridge : CustomBridge { Game Raven SpawnID 21 @@ -61,7 +61,7 @@ ACTOR Bridge : CustomBridge 118 // The ZDoom bridge ------------------------------------------------------- -ACTOR ZBridge : CustomBridge 118 +ACTOR ZBridge : CustomBridge { Game Doom SpawnID 21 @@ -71,7 +71,7 @@ ACTOR ZBridge : CustomBridge 118 // Invisible bridge -------------------------------------------------------- -ACTOR InvisibleBridge 9990 native +ACTOR InvisibleBridge native { RenderStyle None Radius 32 @@ -90,19 +90,19 @@ ACTOR InvisibleBridge 9990 native // And some invisible bridges from Skull Tag ------------------------------- -ACTOR InvisibleBridge32 : InvisibleBridge 5061 +ACTOR InvisibleBridge32 : InvisibleBridge { Radius 32 Height 8 } -ACTOR InvisibleBridge16 : InvisibleBridge 5064 +ACTOR InvisibleBridge16 : InvisibleBridge { Radius 16 Height 8 } -ACTOR InvisibleBridge8 : InvisibleBridge 5065 +ACTOR InvisibleBridge8 : InvisibleBridge { Radius 8 Height 8 diff --git a/wadsrc/static/actors/shared/camera.txt b/wadsrc/static/actors/shared/camera.txt index f2b0220b5..2868c7ec9 100644 --- a/wadsrc/static/actors/shared/camera.txt +++ b/wadsrc/static/actors/shared/camera.txt @@ -1,4 +1,4 @@ -ACTOR DoomBuilderCamera 32000 +ACTOR DoomBuilderCamera { States { @@ -9,7 +9,7 @@ ACTOR DoomBuilderCamera 32000 } -ACTOR SecurityCamera 9025 native +ACTOR SecurityCamera native { +NOBLOCKMAP +NOGRAVITY @@ -17,6 +17,6 @@ ACTOR SecurityCamera 9025 native RenderStyle None } -ACTOR AimingCamera : SecurityCamera 9073 native +ACTOR AimingCamera : SecurityCamera native { } diff --git a/wadsrc/static/actors/shared/decal.txt b/wadsrc/static/actors/shared/decal.txt index 132d226f9..ed887ca2f 100644 --- a/wadsrc/static/actors/shared/decal.txt +++ b/wadsrc/static/actors/shared/decal.txt @@ -1,3 +1,3 @@ -ACTOR Decal 9200 native +ACTOR Decal native { } diff --git a/wadsrc/static/actors/shared/dog.txt b/wadsrc/static/actors/shared/dog.txt index 439060d41..5aa88d721 100644 --- a/wadsrc/static/actors/shared/dog.txt +++ b/wadsrc/static/actors/shared/dog.txt @@ -1,4 +1,4 @@ -ACTOR MBFHelperDog 888 +ACTOR MBFHelperDog { Health 500 Speed 10 diff --git a/wadsrc/static/actors/shared/fountain.txt b/wadsrc/static/actors/shared/fountain.txt index 35062d888..e7a66ed0b 100644 --- a/wadsrc/static/actors/shared/fountain.txt +++ b/wadsrc/static/actors/shared/fountain.txt @@ -6,37 +6,37 @@ ACTOR ParticleFountain native +INVISIBLE } -ACTOR RedParticleFountain : ParticleFountain 9027 +ACTOR RedParticleFountain : ParticleFountain { Health 1 } -ACTOR GreenParticleFountain : ParticleFountain 9028 +ACTOR GreenParticleFountain : ParticleFountain { Health 2 } -ACTOR BlueParticleFountain : ParticleFountain 9029 +ACTOR BlueParticleFountain : ParticleFountain { Health 3 } -ACTOR YellowParticleFountain : ParticleFountain 9030 +ACTOR YellowParticleFountain : ParticleFountain { Health 4 } -ACTOR PurpleParticleFountain : ParticleFountain 9031 +ACTOR PurpleParticleFountain : ParticleFountain { Health 5 } -ACTOR BlackParticleFountain : ParticleFountain 9032 +ACTOR BlackParticleFountain : ParticleFountain { Health 6 } -ACTOR WhiteParticleFountain : ParticleFountain 9033 +ACTOR WhiteParticleFountain : ParticleFountain { Health 7 } diff --git a/wadsrc/static/actors/shared/hatetarget.txt b/wadsrc/static/actors/shared/hatetarget.txt index 293656d40..fccf21444 100644 --- a/wadsrc/static/actors/shared/hatetarget.txt +++ b/wadsrc/static/actors/shared/hatetarget.txt @@ -2,7 +2,7 @@ // Hate Target -------------------------------------------------------------- -ACTOR HateTarget 9076 native +ACTOR HateTarget native { Radius 20 Height 56 diff --git a/wadsrc/static/actors/shared/mapmarker.txt b/wadsrc/static/actors/shared/mapmarker.txt index 8333a550a..24cf11e8f 100644 --- a/wadsrc/static/actors/shared/mapmarker.txt +++ b/wadsrc/static/actors/shared/mapmarker.txt @@ -1,5 +1,5 @@ -ACTOR MapMarker 9040 native +ACTOR MapMarker native { +NOBLOCKMAP +NOGRAVITY diff --git a/wadsrc/static/actors/shared/movingcamera.txt b/wadsrc/static/actors/shared/movingcamera.txt index 435368b3a..22473512f 100644 --- a/wadsrc/static/actors/shared/movingcamera.txt +++ b/wadsrc/static/actors/shared/movingcamera.txt @@ -1,4 +1,4 @@ -ACTOR InterpolationPoint 9070 native +ACTOR InterpolationPoint native { +NOBLOCKMAP +NOGRAVITY @@ -6,7 +6,7 @@ ACTOR InterpolationPoint 9070 native RenderStyle None } -ACTOR InterpolationSpecial 9075 native +ACTOR InterpolationSpecial native { +NOBLOCKMAP +NOSECTOR @@ -14,7 +14,7 @@ ACTOR InterpolationSpecial 9075 native +DONTSPLASH } -ACTOR PathFollower 9071 native +ACTOR PathFollower native { +NOBLOCKMAP +NOSECTOR @@ -22,11 +22,11 @@ ACTOR PathFollower 9071 native +DONTSPLASH } -ACTOR ActorMover : PathFollower 9074 native +ACTOR ActorMover : PathFollower native { } -ACTOR MovingCamera : PathFollower 9072 native +ACTOR MovingCamera : PathFollower native { } diff --git a/wadsrc/static/actors/shared/secrettrigger.txt b/wadsrc/static/actors/shared/secrettrigger.txt index b131ac588..498138046 100644 --- a/wadsrc/static/actors/shared/secrettrigger.txt +++ b/wadsrc/static/actors/shared/secrettrigger.txt @@ -1,5 +1,5 @@ -ACTOR SecretTrigger 9046 native +ACTOR SecretTrigger native { +NOBLOCKMAP +NOSECTOR diff --git a/wadsrc/static/actors/shared/sectoraction.txt b/wadsrc/static/actors/shared/sectoraction.txt index 2d7fe2a80..233364331 100644 --- a/wadsrc/static/actors/shared/sectoraction.txt +++ b/wadsrc/static/actors/shared/sectoraction.txt @@ -9,73 +9,73 @@ ACTOR SectorAction native // Triggered when entering sector ------------------------------------------- -ACTOR SecActEnter : SectorAction 9998 native +ACTOR SecActEnter : SectorAction native { } // Triggered when leaving sector -------------------------------------------- -ACTOR SecActExit : SectorAction 9997 native +ACTOR SecActExit : SectorAction native { } // Triggered when hitting sector's floor ------------------------------------ -ACTOR SecActHitFloor : SectorAction 9999 native +ACTOR SecActHitFloor : SectorAction native { } // Triggered when hitting sector's ceiling ---------------------------------- -ACTOR SecActHitCeil : SectorAction 9996 native +ACTOR SecActHitCeil : SectorAction native { } // Triggered when using inside sector --------------------------------------- -ACTOR SecActUse : SectorAction 9995 native +ACTOR SecActUse : SectorAction native { } // Triggered when using a sector's wall ------------------------------------- -ACTOR SecActUseWall : SectorAction 9994 native +ACTOR SecActUseWall : SectorAction native { } // Triggered when eyes go below fake floor ---------------------------------- -ACTOR SecActEyesDive : SectorAction 9993 native +ACTOR SecActEyesDive : SectorAction native { } // Triggered when eyes go above fake floor ---------------------------------- -ACTOR SecActEyesSurface : SectorAction 9992 native +ACTOR SecActEyesSurface : SectorAction native { } // Triggered when eyes go below fake floor ---------------------------------- -ACTOR SecActEyesBelowC : SectorAction 9983 native +ACTOR SecActEyesBelowC : SectorAction native { } // Triggered when eyes go above fake floor ---------------------------------- -ACTOR SecActEyesAboveC : SectorAction 9982 native +ACTOR SecActEyesAboveC : SectorAction native { } // Triggered when eyes go below fake floor ---------------------------------- -ACTOR SecActHitFakeFloor : SectorAction 9989 native +ACTOR SecActHitFakeFloor : SectorAction native { } // Music changer ---------------------------------- -ACTOR MusicChanger : SectorAction 14165 native +ACTOR MusicChanger : SectorAction native { } diff --git a/wadsrc/static/actors/shared/setcolor.txt b/wadsrc/static/actors/shared/setcolor.txt index a41a62926..5b5fcd911 100644 --- a/wadsrc/static/actors/shared/setcolor.txt +++ b/wadsrc/static/actors/shared/setcolor.txt @@ -1,4 +1,4 @@ -ACTOR ColorSetter 9038 native +ACTOR ColorSetter native { +NOBLOCKMAP +NOGRAVITY @@ -7,7 +7,7 @@ ACTOR ColorSetter 9038 native } -ACTOR FadeSetter 9039 native +ACTOR FadeSetter native { +NOBLOCKMAP +NOGRAVITY diff --git a/wadsrc/static/actors/shared/sharedmisc.txt b/wadsrc/static/actors/shared/sharedmisc.txt index 6a71025d2..fa65ea589 100644 --- a/wadsrc/static/actors/shared/sharedmisc.txt +++ b/wadsrc/static/actors/shared/sharedmisc.txt @@ -18,7 +18,7 @@ ACTOR Unknown // Route node for monster patrols ------------------------------------------- -ACTOR PatrolPoint 9024 +ACTOR PatrolPoint { Radius 8 Height 8 @@ -31,7 +31,7 @@ ACTOR PatrolPoint 9024 // A special to execute when a monster reaches a matching patrol point ------ -ACTOR PatrolSpecial 9047 +ACTOR PatrolSpecial { Radius 8 Height 8 @@ -44,7 +44,7 @@ ACTOR PatrolSpecial 9047 // Map spot ---------------------------------------------------------------- -ACTOR MapSpot 9001 +ACTOR MapSpot { +NOBLOCKMAP +NOSECTOR @@ -55,13 +55,13 @@ ACTOR MapSpot 9001 // same with different editor number for Legacy maps ----------------------- -ACTOR FS_Mapspot : Mapspot 5004 +ACTOR FS_Mapspot : Mapspot { } // Map spot with gravity --------------------------------------------------- -ACTOR MapSpotGravity : MapSpot 9013 +ACTOR MapSpotGravity : MapSpot { -NOBLOCKMAP -NOSECTOR @@ -70,13 +70,13 @@ ACTOR MapSpotGravity : MapSpot 9013 // Point Pushers ----------------------------------------------------------- -ACTOR PointPusher 5001 +ACTOR PointPusher { +NOBLOCKMAP +INVISIBLE } -ACTOR PointPuller 5002 +ACTOR PointPuller { +NOBLOCKMAP +INVISIBLE @@ -103,7 +103,7 @@ ACTOR RealGibs // a deh patch to change the gibs, since ZDoom actually creates a gib actor // for actors that get crushed instead of changing their state as Doom did. -ACTOR Gibs : RealGibs 24 +ACTOR Gibs : RealGibs { Game Doom SpawnID 146 @@ -112,7 +112,7 @@ ACTOR Gibs : RealGibs 24 // Needed for loading Build maps ------------------------------------------- -ACTOR CustomSprite 9988 native +ACTOR CustomSprite native { +NOBLOCKMAP +NOGRAVITY @@ -154,7 +154,7 @@ ACTOR FastProjectile native // Sector flag setter ------------------------------------------------------ -ACTOR SectorFlagSetter 9041 native +ACTOR SectorFlagSetter native { +NOBLOCKMAP +NOGRAVITY diff --git a/wadsrc/static/actors/shared/skies.txt b/wadsrc/static/actors/shared/skies.txt index 3b531d527..b21b02f3d 100644 --- a/wadsrc/static/actors/shared/skies.txt +++ b/wadsrc/static/actors/shared/skies.txt @@ -1,4 +1,4 @@ -ACTOR SkyViewpoint 9080 native +ACTOR SkyViewpoint native { +NOSECTOR +NOBLOCKMAP @@ -6,7 +6,7 @@ ACTOR SkyViewpoint 9080 native +DONTSPLASH } -ACTOR SkyPicker 9081 native +ACTOR SkyPicker native { +NOSECTOR +NOBLOCKMAP @@ -14,7 +14,7 @@ ACTOR SkyPicker 9081 native +DONTSPLASH } -Actor SkyCamCompat : SkyViewpoint 9083 native +Actor SkyCamCompat : SkyViewpoint native { } @@ -22,16 +22,16 @@ ACTOR StackPoint : SkyViewpoint native { } -ACTOR UpperStackLookOnly : StackPoint 9077 +ACTOR UpperStackLookOnly : StackPoint { } -ACTOR LowerStackLookOnly : StackPoint 9078 +ACTOR LowerStackLookOnly : StackPoint { } -ACTOR SectorSilencer 9082 native +ACTOR SectorSilencer native { +NOBLOCKMAP +NOGRAVITY diff --git a/wadsrc/static/actors/shared/soundenvironment.txt b/wadsrc/static/actors/shared/soundenvironment.txt index 9e6dad381..8d325909e 100644 --- a/wadsrc/static/actors/shared/soundenvironment.txt +++ b/wadsrc/static/actors/shared/soundenvironment.txt @@ -1,5 +1,5 @@ -ACTOR SoundEnvironment 9048 native +ACTOR SoundEnvironment native { +NOSECTOR +NOBLOCKMAP diff --git a/wadsrc/static/actors/shared/soundsequence.txt b/wadsrc/static/actors/shared/soundsequence.txt index ff240ba9c..868251a04 100644 --- a/wadsrc/static/actors/shared/soundsequence.txt +++ b/wadsrc/static/actors/shared/soundsequence.txt @@ -1,12 +1,12 @@ -ACTOR AmbientSound 14065 native +ACTOR AmbientSound native { +NOBLOCKMAP +NOSECTOR +DONTSPLASH } -ACTOR AmbientSoundNoGravity : AmbientSound 14067 +ACTOR AmbientSoundNoGravity : AmbientSound { +NOGRAVITY } @@ -18,7 +18,7 @@ ACTOR SoundSequenceSlot native +DONTSPLASH } -ACTOR SoundSequence 14066 native +ACTOR SoundSequence native { +NOSECTOR +NOBLOCKMAP @@ -27,61 +27,61 @@ ACTOR SoundSequence 14066 native // Heretic Sound sequences ----------------------------------------------------------- -ACTOR HereticSoundSequence1 : SoundSequence 1200 +ACTOR HereticSoundSequence1 : SoundSequence { Game Heretic Args 0 } -ACTOR HereticSoundSequence2 : SoundSequence 1201 +ACTOR HereticSoundSequence2 : SoundSequence { Game Heretic Args 1 } -ACTOR HereticSoundSequence3 : SoundSequence 1202 +ACTOR HereticSoundSequence3 : SoundSequence { Game Heretic Args 2 } -ACTOR HereticSoundSequence4 : SoundSequence 1203 +ACTOR HereticSoundSequence4 : SoundSequence { Game Heretic Args 3 } -ACTOR HereticSoundSequence5 : SoundSequence 1204 +ACTOR HereticSoundSequence5 : SoundSequence { Game Heretic Args 4 } -ACTOR HereticSoundSequence6 : SoundSequence 1205 +ACTOR HereticSoundSequence6 : SoundSequence { Game Heretic Args 5 } -ACTOR HereticSoundSequence7 : SoundSequence 1206 +ACTOR HereticSoundSequence7 : SoundSequence { Game Heretic Args 6 } -ACTOR HereticSoundSequence8 : SoundSequence 1207 +ACTOR HereticSoundSequence8 : SoundSequence { Game Heretic Args 7 } -ACTOR HereticSoundSequence9 : SoundSequence 1208 +ACTOR HereticSoundSequence9 : SoundSequence { Game Heretic Args 8 } -ACTOR HereticSoundSequence10 : SoundSequence 1209 +ACTOR HereticSoundSequence10 : SoundSequence { Game Heretic Args 9 diff --git a/wadsrc/static/actors/shared/spark.txt b/wadsrc/static/actors/shared/spark.txt index 4637ccaa9..008a27d40 100644 --- a/wadsrc/static/actors/shared/spark.txt +++ b/wadsrc/static/actors/shared/spark.txt @@ -1,5 +1,5 @@ -ACTOR Spark 9026 native +ACTOR Spark native { +NOSECTOR +NOBLOCKMAP diff --git a/wadsrc/static/actors/shared/teleport.txt b/wadsrc/static/actors/shared/teleport.txt index a91eaf9d4..d45dbbd7b 100644 --- a/wadsrc/static/actors/shared/teleport.txt +++ b/wadsrc/static/actors/shared/teleport.txt @@ -23,19 +23,19 @@ ACTOR TeleportFog native -ACTOR TeleportDest 14 +ACTOR TeleportDest { +NOBLOCKMAP +NOSECTOR +DONTSPLASH } -ACTOR TeleportDest2 : TeleportDest 9044 +ACTOR TeleportDest2 : TeleportDest { +NOGRAVITY } -ACTOR TeleportDest3 : TeleportDest2 9043 +ACTOR TeleportDest3 : TeleportDest2 { -NOGRAVITY } diff --git a/wadsrc/static/actors/shared/waterzone.txt b/wadsrc/static/actors/shared/waterzone.txt index 6bd5dbbb7..ddb223e2d 100644 --- a/wadsrc/static/actors/shared/waterzone.txt +++ b/wadsrc/static/actors/shared/waterzone.txt @@ -1,4 +1,4 @@ -ACTOR WaterZone 9045 native +ACTOR WaterZone native { +NOSECTOR +NOBLOCKMAP diff --git a/wadsrc/static/actors/strife/acolyte.txt b/wadsrc/static/actors/strife/acolyte.txt index 3ca1dec62..a111bd4df 100644 --- a/wadsrc/static/actors/strife/acolyte.txt +++ b/wadsrc/static/actors/strife/acolyte.txt @@ -78,7 +78,7 @@ ACTOR Acolyte : StrifeHumanoid // Acolyte 1 ---------------------------------------------------------------- -ACTOR AcolyteTan : Acolyte 3002 +ACTOR AcolyteTan : Acolyte { Game Strife ConversationID 53, 52, 53 @@ -88,7 +88,7 @@ ACTOR AcolyteTan : Acolyte 3002 // Acolyte 2 ---------------------------------------------------------------- -ACTOR AcolyteRed : Acolyte 142 +ACTOR AcolyteRed : Acolyte { Game Strife ConversationID 54, 53, 54 @@ -98,7 +98,7 @@ ACTOR AcolyteRed : Acolyte 142 // Acolyte 3 ---------------------------------------------------------------- -ACTOR AcolyteRust : Acolyte 143 +ACTOR AcolyteRust : Acolyte { Game Strife ConversationID 55, 54, 55 @@ -108,7 +108,7 @@ ACTOR AcolyteRust : Acolyte 143 // Acolyte 4 ---------------------------------------------------------------- -ACTOR AcolyteGray : Acolyte 146 +ACTOR AcolyteGray : Acolyte { Game Strife ConversationID 56, 55, 56 @@ -118,7 +118,7 @@ ACTOR AcolyteGray : Acolyte 146 // Acolyte 5 ---------------------------------------------------------------- -ACTOR AcolyteDGreen : Acolyte 147 +ACTOR AcolyteDGreen : Acolyte { Game Strife ConversationID 57, 56, 57 @@ -128,7 +128,7 @@ ACTOR AcolyteDGreen : Acolyte 147 // Acolyte 6 ---------------------------------------------------------------- -ACTOR AcolyteGold : Acolyte 148 +ACTOR AcolyteGold : Acolyte { Game Strife ConversationID 58, 57, 58 @@ -138,7 +138,7 @@ ACTOR AcolyteGold : Acolyte 148 // Acolyte 7 ---------------------------------------------------------------- -ACTOR AcolyteLGreen : Acolyte 232 +ACTOR AcolyteLGreen : Acolyte { Game Strife Health 60 @@ -148,7 +148,7 @@ ACTOR AcolyteLGreen : Acolyte 232 // Acolyte 8 ---------------------------------------------------------------- -ACTOR AcolyteBlue : Acolyte 231 +ACTOR AcolyteBlue : Acolyte { Game Strife Health 60 @@ -158,7 +158,7 @@ ACTOR AcolyteBlue : Acolyte 231 // Shadow Acolyte ----------------------------------------------------------- -ACTOR AcolyteShadow : Acolyte 58 +ACTOR AcolyteShadow : Acolyte { Game Strife ConversationID 61, 58, 59 @@ -178,7 +178,7 @@ ACTOR AcolyteShadow : Acolyte 58 // Some guy turning into an acolyte ----------------------------------------- -ACTOR AcolyteToBe : Acolyte 201 +ACTOR AcolyteToBe : Acolyte { Game Strife ConversationID 29, -1, -1 diff --git a/wadsrc/static/actors/strife/alienspectres.txt b/wadsrc/static/actors/strife/alienspectres.txt index 6e56f680d..6391ebf22 100644 --- a/wadsrc/static/actors/strife/alienspectres.txt +++ b/wadsrc/static/actors/strife/alienspectres.txt @@ -1,7 +1,7 @@ // Alien Spectre 1 ----------------------------------------------------------- -ACTOR AlienSpectre1 : SpectralMonster 129 +ACTOR AlienSpectre1 : SpectralMonster { Game Strife ConversationID 67,-1,-1 @@ -80,7 +80,7 @@ ACTOR AlienSpectre1 : SpectralMonster 129 // Alien Spectre 2 ----------------------------------------------------------- -ACTOR AlienSpectre2 : AlienSpectre1 75 +ACTOR AlienSpectre2 : AlienSpectre1 { Game Strife ConversationID 70 @@ -101,7 +101,7 @@ ACTOR AlienSpectre2 : AlienSpectre1 75 // Alien Spectre 3 ---------------------------------------------------------- // This is the Oracle's personal spectre, so it's a little different. -ACTOR AlienSpectre3 : AlienSpectre1 76 +ACTOR AlienSpectre3 : AlienSpectre1 { Game Strife ConversationID 71,-1,-1 @@ -143,7 +143,7 @@ ACTOR AlienSpectre3 : AlienSpectre1 76 // Alien Spectre 4 ----------------------------------------------------------- -ACTOR AlienSpectre4 : AlienSpectre1 167 +ACTOR AlienSpectre4 : AlienSpectre1 { Game Strife ConversationID 72,-1,-1 @@ -164,7 +164,7 @@ ACTOR AlienSpectre4 : AlienSpectre1 167 // Alien Spectre 5 ----------------------------------------------------------- -ACTOR AlienSpectre5 : AlienSpectre1 168 +ACTOR AlienSpectre5 : AlienSpectre1 { Game Strife ConversationID 73,-1,-1 diff --git a/wadsrc/static/actors/strife/beggars.txt b/wadsrc/static/actors/strife/beggars.txt index b24080b1a..9f529c7b3 100644 --- a/wadsrc/static/actors/strife/beggars.txt +++ b/wadsrc/static/actors/strife/beggars.txt @@ -62,35 +62,35 @@ ACTOR Beggar : StrifeHumanoid // Beggars ----------------------------------------------------------------- -ACTOR Beggar1 : Beggar 141 +ACTOR Beggar1 : Beggar { Game Strife ConversationID 38, 37, 38 } -ACTOR Beggar2 : Beggar 155 +ACTOR Beggar2 : Beggar { Game Strife ConversationID 39, 38, 39 } -ACTOR Beggar3 : Beggar 156 +ACTOR Beggar3 : Beggar { Game Strife ConversationID 40, 39, 40 } -ACTOR Beggar4 : Beggar 157 +ACTOR Beggar4 : Beggar { Game Strife ConversationID 41, 40, 41 } -ACTOR Beggar5 : Beggar 158 +ACTOR Beggar5 : Beggar { Game Strife ConversationID 42, 41, 42 diff --git a/wadsrc/static/actors/strife/coin.txt b/wadsrc/static/actors/strife/coin.txt index e4e50af77..4fc5825f1 100644 --- a/wadsrc/static/actors/strife/coin.txt +++ b/wadsrc/static/actors/strife/coin.txt @@ -1,7 +1,7 @@ // Coin --------------------------------------------------------------------- -ACTOR Coin : Inventory 93 native +ACTOR Coin : Inventory native { Game Strife ConversationID 168, 161, 165 @@ -24,7 +24,7 @@ ACTOR Coin : Inventory 93 native // 10 Gold ------------------------------------------------------------------ -ACTOR Gold10 : Coin 138 +ACTOR Gold10 : Coin { Game Strife ConversationID 169, 162, 166 @@ -41,7 +41,7 @@ ACTOR Gold10 : Coin 138 // 25 Gold ------------------------------------------------------------------ -ACTOR Gold25 : Coin 139 +ACTOR Gold25 : Coin { Game Strife ConversationID 170, 163, 167 @@ -58,7 +58,7 @@ ACTOR Gold25 : Coin 139 // 50 Gold ------------------------------------------------------------------ -ACTOR Gold50 : Coin 140 +ACTOR Gold50 : Coin { Game Strife ConversationID 171, 164, 168 diff --git a/wadsrc/static/actors/strife/crusader.txt b/wadsrc/static/actors/strife/crusader.txt index eb1ceec6d..22aaecdb5 100644 --- a/wadsrc/static/actors/strife/crusader.txt +++ b/wadsrc/static/actors/strife/crusader.txt @@ -1,7 +1,7 @@ // Crusader ----------------------------------------------------------------- -ACTOR Crusader 3005 +ACTOR Crusader { Game Strife ConversationID 63,-1,-1 @@ -110,7 +110,7 @@ ACTOR CrusaderMissile // Dead Crusader ------------------------------------------------------------ -ACTOR DeadCrusader 22 +ACTOR DeadCrusader { Game Strife ConversationID 230 diff --git a/wadsrc/static/actors/strife/entityboss.txt b/wadsrc/static/actors/strife/entityboss.txt index 3980eb04e..90769d4b0 100644 --- a/wadsrc/static/actors/strife/entityboss.txt +++ b/wadsrc/static/actors/strife/entityboss.txt @@ -1,7 +1,7 @@ // Entity Nest -------------------------------------------------------------- -ACTOR EntityNest 26 +ACTOR EntityNest { Game Strife ConversationID 76,-1,-1 @@ -20,7 +20,7 @@ ACTOR EntityNest 26 // Entity Pod --------------------------------------------------------------- -ACTOR EntityPod 198 +ACTOR EntityPod { Game Strife ConversationID 77,-1,-1 @@ -50,7 +50,7 @@ ACTOR EntityPod 198 // Entity Boss -------------------------------------------------------------- -ACTOR EntityBoss : SpectralMonster 128 +ACTOR EntityBoss : SpectralMonster { Game Strife ConversationID 74,-1,-1 diff --git a/wadsrc/static/actors/strife/inquisitor.txt b/wadsrc/static/actors/strife/inquisitor.txt index e792e5803..211dc0755 100644 --- a/wadsrc/static/actors/strife/inquisitor.txt +++ b/wadsrc/static/actors/strife/inquisitor.txt @@ -1,7 +1,7 @@ // Inquisitor --------------------------------------------------------------- -ACTOR Inquisitor 16 +ACTOR Inquisitor { Game Strife ConversationID 93,-1,-1 diff --git a/wadsrc/static/actors/strife/loremaster.txt b/wadsrc/static/actors/strife/loremaster.txt index fee3eb0f0..8c6f5caa9 100644 --- a/wadsrc/static/actors/strife/loremaster.txt +++ b/wadsrc/static/actors/strife/loremaster.txt @@ -1,7 +1,7 @@ // Loremaster (aka Priest) -------------------------------------------------- -ACTOR Loremaster 12 +ACTOR Loremaster { Game Strife ConversationID 66, 63, 64 diff --git a/wadsrc/static/actors/strife/macil.txt b/wadsrc/static/actors/strife/macil.txt index ac23e4e66..c479dd4b3 100644 --- a/wadsrc/static/actors/strife/macil.txt +++ b/wadsrc/static/actors/strife/macil.txt @@ -1,7 +1,7 @@ // Macil (version 1) --------------------------------------------------------- -ACTOR Macil1 64 +ACTOR Macil1 { Game Strife ConversationID 49, 48, 49 @@ -58,7 +58,7 @@ ACTOR Macil1 64 // Macil (version 2) --------------------------------------------------------- -ACTOR Macil2 : Macil1 200 +ACTOR Macil2 : Macil1 { Game Strife ConversationID 50, 49, 50 diff --git a/wadsrc/static/actors/strife/merchants.txt b/wadsrc/static/actors/strife/merchants.txt index b6a2e09a5..4c8265892 100644 --- a/wadsrc/static/actors/strife/merchants.txt +++ b/wadsrc/static/actors/strife/merchants.txt @@ -54,7 +54,7 @@ ACTOR Merchant // Weapon Smith ------------------------------------------------------------- -ACTOR WeaponSmith : Merchant 116 +ACTOR WeaponSmith : Merchant { Game Strife ConversationID 2 @@ -65,7 +65,7 @@ ACTOR WeaponSmith : Merchant 116 // Bar Keep ----------------------------------------------------------------- -ACTOR BarKeep : Merchant 72 +ACTOR BarKeep : Merchant { Game Strife Translation 4 @@ -78,7 +78,7 @@ ACTOR BarKeep : Merchant 72 // Armorer ------------------------------------------------------------------ -ACTOR Armorer : Merchant 73 +ACTOR Armorer : Merchant { Game Strife Translation 5 @@ -90,7 +90,7 @@ ACTOR Armorer : Merchant 73 // Medic -------------------------------------------------------------------- -ACTOR Medic : Merchant 74 +ACTOR Medic : Merchant { Game Strife Translation 6 diff --git a/wadsrc/static/actors/strife/oracle.txt b/wadsrc/static/actors/strife/oracle.txt index 2e0aff948..43e5dcaa4 100644 --- a/wadsrc/static/actors/strife/oracle.txt +++ b/wadsrc/static/actors/strife/oracle.txt @@ -1,7 +1,7 @@ // Oracle ------------------------------------------------------------------- -ACTOR Oracle 199 +ACTOR Oracle { Game Strife ConversationID 65, 62, 63 diff --git a/wadsrc/static/actors/strife/peasants.txt b/wadsrc/static/actors/strife/peasants.txt index af12b75df..08e5ef09c 100644 --- a/wadsrc/static/actors/strife/peasants.txt +++ b/wadsrc/static/actors/strife/peasants.txt @@ -67,28 +67,28 @@ ACTOR Peasant : StrifeHumanoid // Peasant Variant 1 -------------------------------------------------------- -ACTOR Peasant1 : Peasant 3004 +ACTOR Peasant1 : Peasant { Game Strife ConversationID 6 Speed 4 } -ACTOR Peasant2 : Peasant 130 +ACTOR Peasant2 : Peasant { Game Strife ConversationID 7 Speed 5 } -ACTOR Peasant3 : Peasant 131 +ACTOR Peasant3 : Peasant { Game Strife ConversationID 8 Speed 5 } -ACTOR Peasant4 : Peasant 65 +ACTOR Peasant4 : Peasant { Game Strife Translation 0 @@ -96,7 +96,7 @@ ACTOR Peasant4 : Peasant 65 Speed 7 } -ACTOR Peasant5 : Peasant 132 +ACTOR Peasant5 : Peasant { Game Strife Translation 0 @@ -104,7 +104,7 @@ ACTOR Peasant5 : Peasant 132 Speed 7 } -ACTOR Peasant6 : Peasant 133 +ACTOR Peasant6 : Peasant { Game Strife Translation 0 @@ -112,112 +112,112 @@ ACTOR Peasant6 : Peasant 133 Speed 7 } -ACTOR Peasant7 : Peasant 66 +ACTOR Peasant7 : Peasant { Game Strife Translation 2 ConversationID 12 } -ACTOR Peasant8 : Peasant 134 +ACTOR Peasant8 : Peasant { Game Strife Translation 2 ConversationID 13 } -ACTOR Peasant9 : Peasant 135 +ACTOR Peasant9 : Peasant { Game Strife Translation 2 ConversationID 14 } -ACTOR Peasant10 : Peasant 67 +ACTOR Peasant10 : Peasant { Game Strife Translation 1 ConversationID 15 } -ACTOR Peasant11 : Peasant 136 +ACTOR Peasant11 : Peasant { Game Strife Translation 1 ConversationID 16 } -ACTOR Peasant12 : Peasant 137 +ACTOR Peasant12 : Peasant { Game Strife Translation 1 ConversationID 17 } -ACTOR Peasant13 : Peasant 172 +ACTOR Peasant13 : Peasant { Game Strife Translation 3 ConversationID 18 } -ACTOR Peasant14 : Peasant 173 +ACTOR Peasant14 : Peasant { Game Strife Translation 3 ConversationID 19 } -ACTOR Peasant15 : Peasant 174 +ACTOR Peasant15 : Peasant { Game Strife Translation 3 ConversationID 20 } -ACTOR Peasant16 : Peasant 175 +ACTOR Peasant16 : Peasant { Game Strife Translation 5 ConversationID 21 } -ACTOR Peasant17 : Peasant 176 +ACTOR Peasant17 : Peasant { Game Strife Translation 5 ConversationID 22 } -ACTOR Peasant18 : Peasant 177 +ACTOR Peasant18 : Peasant { Game Strife Translation 5 ConversationID 23 } -ACTOR Peasant19 : Peasant 178 +ACTOR Peasant19 : Peasant { Game Strife Translation 4 ConversationID 24 } -ACTOR Peasant20 : Peasant 179 +ACTOR Peasant20 : Peasant { Game Strife Translation 4 ConversationID 25 } -ACTOR Peasant21 : Peasant 180 +ACTOR Peasant21 : Peasant { Game Strife Translation 4 ConversationID 26 } -ACTOR Peasant22 : Peasant 181 +ACTOR Peasant22 : Peasant { Game Strife Translation 6 diff --git a/wadsrc/static/actors/strife/programmer.txt b/wadsrc/static/actors/strife/programmer.txt index 755b453be..4b6fef390 100644 --- a/wadsrc/static/actors/strife/programmer.txt +++ b/wadsrc/static/actors/strife/programmer.txt @@ -1,7 +1,7 @@ // Programmer --------------------------------------------------------------- -ACTOR Programmer 71 +ACTOR Programmer { Game Strife ConversationID 95, -1, -1 diff --git a/wadsrc/static/actors/strife/ratbuddy.txt b/wadsrc/static/actors/strife/ratbuddy.txt index eaefda35d..646323c43 100644 --- a/wadsrc/static/actors/strife/ratbuddy.txt +++ b/wadsrc/static/actors/strife/ratbuddy.txt @@ -1,5 +1,5 @@ -ACTOR RatBuddy 85 +ACTOR RatBuddy { Game Strife ConversationID 202, 196, 200 diff --git a/wadsrc/static/actors/strife/reaver.txt b/wadsrc/static/actors/strife/reaver.txt index a69947373..8df0f9d75 100644 --- a/wadsrc/static/actors/strife/reaver.txt +++ b/wadsrc/static/actors/strife/reaver.txt @@ -1,5 +1,5 @@ -ACTOR Reaver 3001 +ACTOR Reaver { Game Strife Health 150 diff --git a/wadsrc/static/actors/strife/rebels.txt b/wadsrc/static/actors/strife/rebels.txt index 3c539bca4..2ac3469ad 100644 --- a/wadsrc/static/actors/strife/rebels.txt +++ b/wadsrc/static/actors/strife/rebels.txt @@ -64,7 +64,7 @@ ACTOR Rebel : StrifeHumanoid // Rebel 1 ------------------------------------------------------------------ -ACTOR Rebel1 : Rebel 9 +ACTOR Rebel1 : Rebel { Game Strife ConversationID 43, 42, 43 @@ -73,7 +73,7 @@ ACTOR Rebel1 : Rebel 9 // Rebel 2 ------------------------------------------------------------------ -ACTOR Rebel2 : Rebel 144 +ACTOR Rebel2 : Rebel { Game Strife ConversationID 44, 43, 44 @@ -81,7 +81,7 @@ ACTOR Rebel2 : Rebel 144 // Rebel 3 ------------------------------------------------------------------ -ACTOR Rebel3 : Rebel 145 +ACTOR Rebel3 : Rebel { Game Strife ConversationID 45, 44, 45 @@ -89,7 +89,7 @@ ACTOR Rebel3 : Rebel 145 // Rebel 4 ------------------------------------------------------------------ -ACTOR Rebel4 : Rebel 149 +ACTOR Rebel4 : Rebel { Game Strife ConversationID 46, 45, 56 @@ -97,7 +97,7 @@ ACTOR Rebel4 : Rebel 149 // Rebel 5 ------------------------------------------------------------------ -ACTOR Rebel5 : Rebel 150 +ACTOR Rebel5 : Rebel { Game Strife ConversationID 47, 46, 47 @@ -105,7 +105,7 @@ ACTOR Rebel5 : Rebel 150 // Rebel 6 ------------------------------------------------------------------ -ACTOR Rebel6 : Rebel 151 +ACTOR Rebel6 : Rebel { Game Strife ConversationID 48, 47, 48 @@ -113,7 +113,7 @@ ACTOR Rebel6 : Rebel 151 // Teleporter Beacon -------------------------------------------------------- -ACTOR TeleporterBeacon : Inventory 10 native +ACTOR TeleporterBeacon : Inventory native { Game Strife ConversationID 166,-1,-1 diff --git a/wadsrc/static/actors/strife/sentinel.txt b/wadsrc/static/actors/strife/sentinel.txt index 14bbaf8e1..e7a1866ca 100644 --- a/wadsrc/static/actors/strife/sentinel.txt +++ b/wadsrc/static/actors/strife/sentinel.txt @@ -1,7 +1,7 @@ // Sentinel ----------------------------------------------------------------- -ACTOR Sentinel 3006 +ACTOR Sentinel { Game Strife ConversationID 91,-1,-1 diff --git a/wadsrc/static/actors/strife/sigil.txt b/wadsrc/static/actors/strife/sigil.txt index a2cc66c7b..3c6899430 100644 --- a/wadsrc/static/actors/strife/sigil.txt +++ b/wadsrc/static/actors/strife/sigil.txt @@ -123,7 +123,7 @@ ACTOR Sigil : Weapon native // Sigil 1 ------------------------------------------------------------------ -ACTOR Sigil1 : Sigil 77 +ACTOR Sigil1 : Sigil { Game Strife ConversationID 196, 190, 194 @@ -133,7 +133,7 @@ ACTOR Sigil1 : Sigil 77 // Sigil 2 ------------------------------------------------------------------ -ACTOR Sigil2 : Sigil 78 +ACTOR Sigil2 : Sigil { Game Strife ConversationID 197, 191, 195 @@ -143,7 +143,7 @@ ACTOR Sigil2 : Sigil 78 // Sigil 3 ------------------------------------------------------------------ -ACTOR Sigil3 : Sigil 79 +ACTOR Sigil3 : Sigil { Game Strife ConversationID 198, 192, 196 @@ -153,7 +153,7 @@ ACTOR Sigil3 : Sigil 79 // Sigil 4 ------------------------------------------------------------------ -ACTOR Sigil4 : Sigil 80 +ACTOR Sigil4 : Sigil { Game Strife ConversationID 199, 193, 197 @@ -163,7 +163,7 @@ ACTOR Sigil4 : Sigil 80 // Sigil 5 ------------------------------------------------------------------ -ACTOR Sigil5 : Sigil 81 +ACTOR Sigil5 : Sigil { Game Strife ConversationID 200, 194, 198 diff --git a/wadsrc/static/actors/strife/stalker.txt b/wadsrc/static/actors/strife/stalker.txt index 0a537c762..f0792743f 100644 --- a/wadsrc/static/actors/strife/stalker.txt +++ b/wadsrc/static/actors/strife/stalker.txt @@ -2,7 +2,7 @@ // Stalker ------------------------------------------------------------------ -ACTOR Stalker 186 +ACTOR Stalker { Game Strife ConversationID 92,-1,-1 diff --git a/wadsrc/static/actors/strife/strifeammo.txt b/wadsrc/static/actors/strife/strifeammo.txt index 801714434..5d5e35c8d 100644 --- a/wadsrc/static/actors/strife/strifeammo.txt +++ b/wadsrc/static/actors/strife/strifeammo.txt @@ -1,6 +1,6 @@ // HE-Grenade Rounds -------------------------------------------------------- -ACTOR HEGrenadeRounds : Ammo 152 +ACTOR HEGrenadeRounds : Ammo { Game Strife +FLOORCLIP @@ -22,7 +22,7 @@ ACTOR HEGrenadeRounds : Ammo 152 // Phosphorus-Grenade Rounds ------------------------------------------------ -ACTOR PhosphorusGrenadeRounds : Ammo 153 +ACTOR PhosphorusGrenadeRounds : Ammo { Game Strife +FLOORCLIP @@ -44,7 +44,7 @@ ACTOR PhosphorusGrenadeRounds : Ammo 153 // Clip of Bullets ---------------------------------------------------------- -ACTOR ClipOfBullets : Ammo 2007 +ACTOR ClipOfBullets : Ammo { Game Strife SpawnID 11 @@ -67,7 +67,7 @@ ACTOR ClipOfBullets : Ammo 2007 // Box of Bullets ----------------------------------------------------------- -ACTOR BoxOfBullets : ClipOfBullets 2048 +ACTOR BoxOfBullets : ClipOfBullets { Game Strife SpawnID 139 @@ -85,7 +85,7 @@ ACTOR BoxOfBullets : ClipOfBullets 2048 // Mini Missiles ------------------------------------------------------------ -ACTOR MiniMissiles : Ammo 2010 +ACTOR MiniMissiles : Ammo { Game Strife SpawnID 140 @@ -108,7 +108,7 @@ ACTOR MiniMissiles : Ammo 2010 // Crate of Missiles -------------------------------------------------------- -ACTOR CrateOfMissiles : MiniMissiles 2046 +ACTOR CrateOfMissiles : MiniMissiles { Game Strife SpawnID 141 @@ -126,7 +126,7 @@ ACTOR CrateOfMissiles : MiniMissiles 2046 // Energy Pod --------------------------------------------------------------- -ACTOR EnergyPod : Ammo 2047 +ACTOR EnergyPod : Ammo { Game Strife SpawnID 75 @@ -150,7 +150,7 @@ ACTOR EnergyPod : Ammo 2047 // Energy pack --------------------------------------------------------------- -ACTOR EnergyPack : EnergyPod 17 +ACTOR EnergyPack : EnergyPod { Game Strife SpawnID 142 @@ -168,7 +168,7 @@ ACTOR EnergyPack : EnergyPod 17 // Poison Bolt Quiver ------------------------------------------------------- -ACTOR PoisonBolts : Ammo 115 +ACTOR PoisonBolts : Ammo { Game Strife ConversationID 185, 179, 183 @@ -190,7 +190,7 @@ ACTOR PoisonBolts : Ammo 115 // Electric Bolt Quiver ------------------------------------------------------- -ACTOR ElectricBolts : Ammo 114 +ACTOR ElectricBolts : Ammo { Game Strife ConversationID 186, 180, 184 @@ -212,7 +212,7 @@ ACTOR ElectricBolts : Ammo 114 // Ammo Satchel ------------------------------------------------------------- -ACTOR AmmoSatchel : BackpackItem 183 +ACTOR AmmoSatchel : BackpackItem { Game Strife SpawnID 144 diff --git a/wadsrc/static/actors/strife/strifearmor.txt b/wadsrc/static/actors/strife/strifearmor.txt index 2431e9438..590a46ea9 100644 --- a/wadsrc/static/actors/strife/strifearmor.txt +++ b/wadsrc/static/actors/strife/strifearmor.txt @@ -1,5 +1,5 @@ -ACTOR MetalArmor : BasicArmorPickup 2019 +ACTOR MetalArmor : BasicArmorPickup { Game Strife SpawnID 69 @@ -23,7 +23,7 @@ ACTOR MetalArmor : BasicArmorPickup 2019 } } -ACTOR LeatherArmor : BasicArmorPickup 2018 +ACTOR LeatherArmor : BasicArmorPickup { Game Strife SpawnID 68 diff --git a/wadsrc/static/actors/strife/strifebishop.txt b/wadsrc/static/actors/strife/strifebishop.txt index 6f38247fb..71ad18c26 100644 --- a/wadsrc/static/actors/strife/strifebishop.txt +++ b/wadsrc/static/actors/strife/strifebishop.txt @@ -1,7 +1,7 @@ // Bishop ------------------------------------------------------------------- -ACTOR StrifeBishop 187 +ACTOR StrifeBishop { Game Strife ConversationID 64,-1,-1 diff --git a/wadsrc/static/actors/strife/strifeitems.txt b/wadsrc/static/actors/strife/strifeitems.txt index 74b957b83..89e098848 100644 --- a/wadsrc/static/actors/strife/strifeitems.txt +++ b/wadsrc/static/actors/strife/strifeitems.txt @@ -1,6 +1,6 @@ // Med patch ----------------------------------------------------------------- -ACTOR MedPatch : HealthPickup 2011 +ACTOR MedPatch : HealthPickup { Game Strife ConversationID 125, 121, 124 @@ -23,7 +23,7 @@ ACTOR MedPatch : HealthPickup 2011 // Medical Kit --------------------------------------------------------------- -ACTOR MedicalKit : HealthPickup 2012 +ACTOR MedicalKit : HealthPickup { Game Strife ConversationID 126, 122, 125 @@ -46,7 +46,7 @@ ACTOR MedicalKit : HealthPickup 2012 // Surgery Kit -------------------------------------------------------------- -ACTOR SurgeryKit : HealthPickup 83 +ACTOR SurgeryKit : HealthPickup { Game Strife ConversationID 127, 123, 126 @@ -68,7 +68,7 @@ ACTOR SurgeryKit : HealthPickup 83 // StrifeMap ---------------------------------------------------------------- -ACTOR StrifeMap : MapRevealer 2026 +ACTOR StrifeMap : MapRevealer { Game Strife SpawnID 137 @@ -109,7 +109,7 @@ ACTOR BeldinsRing : Inventory // Offering Chalice --------------------------------------------------------- -ACTOR OfferingChalice : Inventory 205 +ACTOR OfferingChalice : Inventory { Game Strife +DROPPED @@ -154,7 +154,7 @@ ACTOR Ear : Inventory // Broken Power Coupling ---------------------------------------------------- -ACTOR BrokenPowerCoupling : Inventory 226 +ACTOR BrokenPowerCoupling : Inventory { Game Strife ConversationID 289, -1, -1 @@ -180,7 +180,7 @@ ACTOR BrokenPowerCoupling : Inventory 226 // Shadow Armor ------------------------------------------------------------- -ACTOR ShadowArmor : PowerupGiver 2024 +ACTOR ShadowArmor : PowerupGiver { Game Strife SpawnID 135 @@ -207,7 +207,7 @@ ACTOR ShadowArmor : PowerupGiver 2024 // Environmental suit ------------------------------------------------------- -ACTOR EnvironmentalSuit : PowerupGiver 2025 +ACTOR EnvironmentalSuit : PowerupGiver { Game Strife SpawnID 136 @@ -232,7 +232,7 @@ ACTOR EnvironmentalSuit : PowerupGiver 2025 // Guard Uniform ------------------------------------------------------------ -ACTOR GuardUniform : Inventory 90 +ACTOR GuardUniform : Inventory { Game Strife ConversationID 162, 158, 161 @@ -253,7 +253,7 @@ ACTOR GuardUniform : Inventory 90 // Officer's Uniform -------------------------------------------------------- -ACTOR OfficersUniform : Inventory 52 +ACTOR OfficersUniform : Inventory { Game Strife ConversationID 163, 159, 162 @@ -333,7 +333,7 @@ ACTOR Info : Inventory // Targeter ----------------------------------------------------------------- -ACTOR Targeter : PowerupGiver 207 +ACTOR Targeter : PowerupGiver { Game Strife ConversationID 167, 169, 173 @@ -356,7 +356,7 @@ ACTOR Targeter : PowerupGiver 207 // Communicator ----------------------------------------------------------------- -ACTOR Communicator : Inventory 206 +ACTOR Communicator : Inventory { Game Strife ConversationID 176, 168, 172 @@ -375,7 +375,7 @@ ACTOR Communicator : Inventory 206 // Degnin Ore --------------------------------------------------------------- -ACTOR DegninOre : Inventory 59 native +ACTOR DegninOre : Inventory native { Game Strife ConversationID 128, 124, 127 @@ -452,7 +452,7 @@ ACTOR HealthTraining : Inventory native // Scanner ------------------------------------------------------------------ -ACTOR Scanner : PowerupGiver 2027 native +ACTOR Scanner : PowerupGiver native { Game Strife ConversationID 165,-1,-1 diff --git a/wadsrc/static/actors/strife/strifekeys.txt b/wadsrc/static/actors/strife/strifekeys.txt index b304f83bc..1a1dc99c2 100644 --- a/wadsrc/static/actors/strife/strifekeys.txt +++ b/wadsrc/static/actors/strife/strifekeys.txt @@ -8,7 +8,7 @@ ACTOR StrifeKey : Key // Base Key ----------------------------------------------------------------- -ACTOR BaseKey : StrifeKey 230 +ACTOR BaseKey : StrifeKey { Game Strife ConversationID 133, 129, 132 @@ -44,7 +44,7 @@ ACTOR GovsKey : StrifeKey // Passcard ----------------------------------------------------------------- -ACTOR Passcard : StrifeKey 185 +ACTOR Passcard : StrifeKey { Game Strife ConversationID 135, 131, 134 @@ -62,7 +62,7 @@ ACTOR Passcard : StrifeKey 185 // ID Badge ----------------------------------------------------------------- -ACTOR IDBadge : StrifeKey 184 +ACTOR IDBadge : StrifeKey { Game Strife ConversationID 136, 132, 135 @@ -99,7 +99,7 @@ ACTOR PrisonKey : StrifeKey // Severed Hand ------------------------------------------------------------- -ACTOR SeveredHand : StrifeKey 91 +ACTOR SeveredHand : StrifeKey { Game Strife ConversationID 138, 134, 137 @@ -172,7 +172,7 @@ ACTOR Power3Key : StrifeKey // Gold Key ----------------------------------------------------------------- -ACTOR GoldKey : StrifeKey 40 +ACTOR GoldKey : StrifeKey { Game Strife ConversationID 142, 138, 141 @@ -190,7 +190,7 @@ ACTOR GoldKey : StrifeKey 40 // ID Card ------------------------------------------------------------------ -ACTOR IDCard : StrifeKey 13 +ACTOR IDCard : StrifeKey { Game Strife ConversationID 143, 139, 142 @@ -208,7 +208,7 @@ ACTOR IDCard : StrifeKey 13 // Silver Key --------------------------------------------------------------- -ACTOR SilverKey : StrifeKey 38 +ACTOR SilverKey : StrifeKey { Game Strife ConversationID 144, 140, 143 @@ -226,7 +226,7 @@ ACTOR SilverKey : StrifeKey 38 // Oracle Key --------------------------------------------------------------- -ACTOR OracleKey : StrifeKey 61 +ACTOR OracleKey : StrifeKey { Game Strife ConversationID 145, 141, 144 @@ -262,7 +262,7 @@ ACTOR MilitaryID : StrifeKey // Order Key ---------------------------------------------------------------- -ACTOR OrderKey : StrifeKey 86 +ACTOR OrderKey : StrifeKey { Game Strife ConversationID 147, 143, 146 @@ -280,7 +280,7 @@ ACTOR OrderKey : StrifeKey 86 // Warehouse Key ------------------------------------------------------------ -ACTOR WarehouseKey : StrifeKey 166 +ACTOR WarehouseKey : StrifeKey { Game Strife ConversationID 148, 144, 147 @@ -298,7 +298,7 @@ ACTOR WarehouseKey : StrifeKey 166 // Brass Key ---------------------------------------------------------------- -ACTOR BrassKey : StrifeKey 39 +ACTOR BrassKey : StrifeKey { Game Strife ConversationID 149, 145, 148 @@ -316,7 +316,7 @@ ACTOR BrassKey : StrifeKey 39 // Red Crystal Key ---------------------------------------------------------- -ACTOR RedCrystalKey : StrifeKey 192 +ACTOR RedCrystalKey : StrifeKey { Game Strife ConversationID 150, 146, 149 @@ -334,7 +334,7 @@ ACTOR RedCrystalKey : StrifeKey 192 // Blue Crystal Key --------------------------------------------------------- -ACTOR BlueCrystalKey : StrifeKey 193 +ACTOR BlueCrystalKey : StrifeKey { Game Strife ConversationID 151, 147, 150 @@ -352,7 +352,7 @@ ACTOR BlueCrystalKey : StrifeKey 193 // Chapel Key --------------------------------------------------------------- -ACTOR ChapelKey : StrifeKey 195 +ACTOR ChapelKey : StrifeKey { Game Strife ConversationID 152, 148, 151 @@ -407,7 +407,7 @@ ACTOR SecurityKey : StrifeKey // Core Key ----------------------------------------------------------------- -ACTOR CoreKey : StrifeKey 236 +ACTOR CoreKey : StrifeKey { Game Strife ConversationID 155, 151, 154 @@ -425,7 +425,7 @@ ACTOR CoreKey : StrifeKey 236 // Mauler Key --------------------------------------------------------------- -ACTOR MaulerKey : StrifeKey 233 +ACTOR MaulerKey : StrifeKey { Game Strife ConversationID 156, 152, 155 @@ -443,7 +443,7 @@ ACTOR MaulerKey : StrifeKey 233 // Factory Key -------------------------------------------------------------- -ACTOR FactoryKey : StrifeKey 234 +ACTOR FactoryKey : StrifeKey { Game Strife ConversationID 157, 153, 156 @@ -461,7 +461,7 @@ ACTOR FactoryKey : StrifeKey 234 // Mine Key ----------------------------------------------------------------- -ACTOR MineKey : StrifeKey 235 +ACTOR MineKey : StrifeKey { Game Strife ConversationID 158, 154, 157 diff --git a/wadsrc/static/actors/strife/strifestuff.txt b/wadsrc/static/actors/strife/strifestuff.txt index ef762cbb6..af72541e6 100644 --- a/wadsrc/static/actors/strife/strifestuff.txt +++ b/wadsrc/static/actors/strife/strifestuff.txt @@ -1,6 +1,6 @@ // Tank 1 Huge ------------------------------------------------------------ -ACTOR Tank1 209 +ACTOR Tank1 { Game Strife Radius 16 @@ -19,7 +19,7 @@ ACTOR Tank1 209 // Tank 2 Huge ------------------------------------------------------------ -ACTOR Tank2 210 +ACTOR Tank2 { Game Strife Radius 16 @@ -38,7 +38,7 @@ ACTOR Tank2 210 // Tank 3 Huge ------------------------------------------------------------ -ACTOR Tank3 211 +ACTOR Tank3 { Game Strife Radius 16 @@ -57,7 +57,7 @@ ACTOR Tank3 211 // Tank 4 ------------------------------------------------------------------- -ACTOR Tank4 213 +ACTOR Tank4 { Game Strife Radius 16 @@ -76,7 +76,7 @@ ACTOR Tank4 213 // Tank 5 ------------------------------------------------------------------- -ACTOR Tank5 214 +ACTOR Tank5 { Game Strife Radius 16 @@ -95,7 +95,7 @@ ACTOR Tank5 214 // Tank 6 ------------------------------------------------------------------- -ACTOR Tank6 229 +ACTOR Tank6 { Game Strife Radius 16 @@ -114,7 +114,7 @@ ACTOR Tank6 229 // Water Bottle ------------------------------------------------------------- -ACTOR WaterBottle 2014 +ACTOR WaterBottle { Game Strife ConversationID 131, -1, -1 @@ -128,7 +128,7 @@ ACTOR WaterBottle 2014 // Mug ---------------------------------------------------------------------- -ACTOR Mug 164 +ACTOR Mug { Game Strife ConversationID 132, -1, -1 @@ -142,7 +142,7 @@ ACTOR Mug 164 // Wooden Barrel ------------------------------------------------------------ -ACTOR WoodenBarrel 82 +ACTOR WoodenBarrel { Game Strife Health 10 @@ -169,7 +169,7 @@ ACTOR WoodenBarrel 82 // Strife's explosive barrel ------------------------------------------------ -ACTOR ExplosiveBarrel2 94 +ACTOR ExplosiveBarrel2 { Game Strife Health 30 @@ -198,7 +198,7 @@ ACTOR ExplosiveBarrel2 94 // Light Silver, Fluorescent ---------------------------------------------- -ACTOR LightSilverFluorescent 95 +ACTOR LightSilverFluorescent { Game Strife Radius 2.5 @@ -216,7 +216,7 @@ ACTOR LightSilverFluorescent 95 // Light Brown, Fluorescent ----------------------------------------------- -ACTOR LightBrownFluorescent 96 +ACTOR LightBrownFluorescent { Game Strife Radius 2.5 @@ -234,7 +234,7 @@ ACTOR LightBrownFluorescent 96 // Light Gold, Fluorescent ------------------------------------------------ -ACTOR LightGoldFluorescent 97 +ACTOR LightGoldFluorescent { Game Strife Radius 2.5 @@ -252,7 +252,7 @@ ACTOR LightGoldFluorescent 97 // Light Globe -------------------------------------------------------------- -ACTOR LightGlobe 2028 +ACTOR LightGlobe { Game Strife Radius 16 @@ -269,7 +269,7 @@ ACTOR LightGlobe 2028 // Techno Pillar ------------------------------------------------------------ -ACTOR PillarTechno 48 +ACTOR PillarTechno { Game Strife Radius 20 @@ -286,7 +286,7 @@ ACTOR PillarTechno 48 // Aztec Pillar ------------------------------------------------------------- -ACTOR PillarAztec 54 +ACTOR PillarAztec { Game Strife Radius 16 @@ -303,7 +303,7 @@ ACTOR PillarAztec 54 // Damaged Aztec Pillar ----------------------------------------------------- -ACTOR PillarAztecDamaged 55 +ACTOR PillarAztecDamaged { Game Strife Radius 16 @@ -320,7 +320,7 @@ ACTOR PillarAztecDamaged 55 // Ruined Aztec Pillar ------------------------------------------------------ -ACTOR PillarAztecRuined 56 +ACTOR PillarAztecRuined { Game Strife Radius 16 @@ -337,7 +337,7 @@ ACTOR PillarAztecRuined 56 // Huge Tech Pillar --------------------------------------------------------- -ACTOR PillarHugeTech 57 +ACTOR PillarHugeTech { Game Strife Radius 24 @@ -354,7 +354,7 @@ ACTOR PillarHugeTech 57 // Alien Power Crystal in a Pillar ------------------------------------------ -ACTOR PillarAlienPower 227 +ACTOR PillarAlienPower { Game Strife Radius 24 @@ -372,7 +372,7 @@ ACTOR PillarAlienPower 227 // SStalactiteBig ----------------------------------------------------------- -ACTOR SStalactiteBig 98 +ACTOR SStalactiteBig { Game Strife Radius 16 @@ -389,7 +389,7 @@ ACTOR SStalactiteBig 98 // SStalactiteSmall --------------------------------------------------------- -ACTOR SStalactiteSmall 161 +ACTOR SStalactiteSmall { Game Strife Radius 16 @@ -406,7 +406,7 @@ ACTOR SStalactiteSmall 161 // SStalagmiteBig ----------------------------------------------------------- -ACTOR SStalagmiteBig 160 +ACTOR SStalagmiteBig { Game Strife Radius 16 @@ -423,7 +423,7 @@ ACTOR SStalagmiteBig 160 // Cave Pillar Top ---------------------------------------------------------- -ACTOR CavePillarTop 159 +ACTOR CavePillarTop { Game Strife Radius 16 @@ -440,7 +440,7 @@ ACTOR CavePillarTop 159 // Cave Pillar Bottom ------------------------------------------------------- -ACTOR CavePillarBottom 162 +ACTOR CavePillarBottom { Game Strife Radius 16 @@ -457,7 +457,7 @@ ACTOR CavePillarBottom 162 // SStalagmiteSmall --------------------------------------------------------- -ACTOR SStalagmiteSmall 163 +ACTOR SStalagmiteSmall { Game Strife Radius 16 @@ -474,7 +474,7 @@ ACTOR SStalagmiteSmall 163 // Candle ------------------------------------------------------------------- -ACTOR Candle 34 +ACTOR Candle { Game Strife ConversationID 222, -1, -1 @@ -488,7 +488,7 @@ ACTOR Candle 34 // StrifeCandelabra --------------------------------------------------------- -ACTOR StrifeCandelabra 35 +ACTOR StrifeCandelabra { Game Strife Radius 16 @@ -505,7 +505,7 @@ ACTOR StrifeCandelabra 35 // Floor Water Drop --------------------------------------------------------- -ACTOR WaterDropOnFloor 103 +ACTOR WaterDropOnFloor { Game Strife +NOBLOCKMAP @@ -526,7 +526,7 @@ ACTOR WaterDropOnFloor 103 // Waterfall Splash --------------------------------------------------------- -ACTOR WaterfallSplash 104 +ACTOR WaterfallSplash { Game Strife +NOBLOCKMAP @@ -543,7 +543,7 @@ ACTOR WaterfallSplash 104 // Ceiling Water Drip ------------------------------------------------------- -ACTOR WaterDrip 53 +ACTOR WaterDrip { Game Strife Height 1 @@ -560,7 +560,7 @@ ACTOR WaterDrip 53 // WaterFountain ------------------------------------------------------------ -ACTOR WaterFountain 112 +ACTOR WaterFountain { Game Strife +NOBLOCKMAP @@ -577,7 +577,7 @@ ACTOR WaterFountain 112 // Hearts in Tank ----------------------------------------------------------- -ACTOR HeartsInTank 113 +ACTOR HeartsInTank { Game Strife Radius 16 @@ -594,7 +594,7 @@ ACTOR HeartsInTank 113 // Teleport Swirl ----------------------------------------------------------- -ACTOR TeleportSwirl 23 +ACTOR TeleportSwirl { Game Strife +NOBLOCKMAP @@ -612,7 +612,7 @@ ACTOR TeleportSwirl 23 // Dead Player -------------------------------------------------------------- // Strife's disappeared. This one doesn't. -ACTOR DeadStrifePlayer 15 +ACTOR DeadStrifePlayer { Game Strife ConversationID 231, -1, -1 @@ -628,7 +628,7 @@ ACTOR DeadStrifePlayer 15 // Dead Peasant ------------------------------------------------------------- // Unlike Strife's, this one does not turn into gibs and disappear. -ACTOR DeadPeasant 18 +ACTOR DeadPeasant { Game Strife ConversationID 232, -1, -1 @@ -643,7 +643,7 @@ ACTOR DeadPeasant 18 // Dead Acolyte ------------------------------------------------------------- // Unlike Strife's, this one does not turn into gibs and disappear. -ACTOR DeadAcolyte 21 +ACTOR DeadAcolyte { Game Strife ConversationID 233, -1, -1 @@ -657,7 +657,7 @@ ACTOR DeadAcolyte 21 // Dead Reaver -------------------------------------------------------------- -ACTOR DeadReaver 20 +ACTOR DeadReaver { Game Strife ConversationID 234, -1, -1 @@ -671,7 +671,7 @@ ACTOR DeadReaver 20 // Dead Rebel --------------------------------------------------------------- -ACTOR DeadRebel 19 +ACTOR DeadRebel { Game Strife ConversationID 235, -1, -1 @@ -685,7 +685,7 @@ ACTOR DeadRebel 19 // Sacrificed Guy ----------------------------------------------------------- -ACTOR SacrificedGuy 212 +ACTOR SacrificedGuy { Game Strife ConversationID 236, -1, -1 @@ -716,7 +716,7 @@ ACTOR PileOfGuts // Burning Barrel ----------------------------------------------------------- -ACTOR StrifeBurningBarrel 70 +ACTOR StrifeBurningBarrel { Game Strife Radius 16 @@ -733,7 +733,7 @@ ACTOR StrifeBurningBarrel 70 // Burning Bowl ----------------------------------------------------------- -ACTOR BurningBowl 105 +ACTOR BurningBowl { Game Strife Radius 16 @@ -751,7 +751,7 @@ ACTOR BurningBowl 105 // Burning Brazier ----------------------------------------------------------- -ACTOR BurningBrazier 106 +ACTOR BurningBrazier { Game Strife Radius 10 @@ -769,7 +769,7 @@ ACTOR BurningBrazier 106 // Small Torch Lit -------------------------------------------------------- -ACTOR SmallTorchLit 107 +ACTOR SmallTorchLit { Game Strife Radius 2.5 @@ -790,7 +790,7 @@ ACTOR SmallTorchLit 107 // Small Torch Unlit -------------------------------------------------------- -ACTOR SmallTorchUnlit 108 +ACTOR SmallTorchUnlit { Game Strife Radius 2.5 @@ -808,7 +808,7 @@ ACTOR SmallTorchUnlit 108 // Ceiling Chain ------------------------------------------------------------ -ACTOR CeilingChain 109 +ACTOR CeilingChain { Game Strife Radius 20 @@ -825,7 +825,7 @@ ACTOR CeilingChain 109 // Cage Light --------------------------------------------------------------- -ACTOR CageLight 28 +ACTOR CageLight { // No, it's not bright even though it's a light. Game Strife @@ -842,7 +842,7 @@ ACTOR CageLight 28 // Statue ------------------------------------------------------------------- -ACTOR Statue 110 +ACTOR Statue { Game Strife Radius 20 @@ -859,7 +859,7 @@ ACTOR Statue 110 // Ruined Statue ------------------------------------------------------------ -ACTOR StatueRuined 44 +ACTOR StatueRuined { Game Strife Radius 20 @@ -876,7 +876,7 @@ ACTOR StatueRuined 44 // Medium Torch ------------------------------------------------------------- -ACTOR MediumTorch 111 +ACTOR MediumTorch { Game Strife Radius 4 @@ -893,7 +893,7 @@ ACTOR MediumTorch 111 // Outside Lamp ------------------------------------------------------------- -ACTOR OutsideLamp 43 +ACTOR OutsideLamp { // No, it's not bright. Game Strife @@ -911,7 +911,7 @@ ACTOR OutsideLamp 43 // Pole Lantern ------------------------------------------------------------- -ACTOR PoleLantern 46 +ACTOR PoleLantern { // No, it's not bright. Game Strife @@ -929,7 +929,7 @@ ACTOR PoleLantern 46 // Rock 1 ------------------------------------------------------------------- -ACTOR SRock1 99 +ACTOR SRock1 { Game Strife +NOBLOCKMAP @@ -944,7 +944,7 @@ ACTOR SRock1 99 // Rock 2 ------------------------------------------------------------------- -ACTOR SRock2 100 +ACTOR SRock2 { Game Strife +NOBLOCKMAP @@ -959,7 +959,7 @@ ACTOR SRock2 100 // Rock 3 ------------------------------------------------------------------- -ACTOR SRock3 101 +ACTOR SRock3 { Game Strife +NOBLOCKMAP @@ -974,7 +974,7 @@ ACTOR SRock3 101 // Rock 4 ------------------------------------------------------------------- -ACTOR SRock4 102 +ACTOR SRock4 { Game Strife +NOBLOCKMAP @@ -989,7 +989,7 @@ ACTOR SRock4 102 // Stick in Water ----------------------------------------------------------- -ACTOR StickInWater 215 +ACTOR StickInWater { Game Strife +NOBLOCKMAP @@ -1006,7 +1006,7 @@ ACTOR StickInWater 215 // Rubble 1 ----------------------------------------------------------------- -ACTOR Rubble1 29 +ACTOR Rubble1 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1021,7 +1021,7 @@ ACTOR Rubble1 29 // Rubble 2 ----------------------------------------------------------------- -ACTOR Rubble2 30 +ACTOR Rubble2 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1036,7 +1036,7 @@ ACTOR Rubble2 30 // Rubble 3 ----------------------------------------------------------------- -ACTOR Rubble3 31 +ACTOR Rubble3 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1051,7 +1051,7 @@ ACTOR Rubble3 31 // Rubble 4 ----------------------------------------------------------------- -ACTOR Rubble4 32 +ACTOR Rubble4 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1066,7 +1066,7 @@ ACTOR Rubble4 32 // Rubble 5 ----------------------------------------------------------------- -ACTOR Rubble5 36 +ACTOR Rubble5 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1081,7 +1081,7 @@ ACTOR Rubble5 36 // Rubble 6 ----------------------------------------------------------------- -ACTOR Rubble6 37 +ACTOR Rubble6 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1096,7 +1096,7 @@ ACTOR Rubble6 37 // Rubble 7 ----------------------------------------------------------------- -ACTOR Rubble7 41 +ACTOR Rubble7 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1111,7 +1111,7 @@ ACTOR Rubble7 41 // Rubble 8 ----------------------------------------------------------------- -ACTOR Rubble8 42 +ACTOR Rubble8 { Game Strife +NOBLOCKMAP +NOCLIP @@ -1126,7 +1126,7 @@ ACTOR Rubble8 42 // Surgery Crab ------------------------------------------------------------- -ACTOR SurgeryCrab 117 +ACTOR SurgeryCrab { Game Strife +SOLID +SPAWNCEILING +NOGRAVITY @@ -1143,7 +1143,7 @@ ACTOR SurgeryCrab 117 // Large Torch -------------------------------------------------------------- -ACTOR LargeTorch 47 +ACTOR LargeTorch { Game Strife Radius 10 @@ -1161,7 +1161,7 @@ ACTOR LargeTorch 47 // Huge Torch -------------------------------------------------------------- -ACTOR HugeTorch 50 +ACTOR HugeTorch { Game Strife Radius 10 @@ -1179,7 +1179,7 @@ ACTOR HugeTorch 50 // Palm Tree ---------------------------------------------------------------- -ACTOR PalmTree 51 +ACTOR PalmTree { Game Strife Radius 15 @@ -1196,7 +1196,7 @@ ACTOR PalmTree 51 // Big Tree ---------------------------------------------------------------- -ACTOR BigTree2 202 +ACTOR BigTree2 { Game Strife Radius 15 @@ -1213,7 +1213,7 @@ ACTOR BigTree2 202 // Potted Tree ---------------------------------------------------------------- -ACTOR PottedTree 203 +ACTOR PottedTree { Game Strife Radius 15 @@ -1230,7 +1230,7 @@ ACTOR PottedTree 203 // Tree Stub ---------------------------------------------------------------- -ACTOR TreeStub 33 +ACTOR TreeStub { Game Strife Radius 15 @@ -1247,7 +1247,7 @@ ACTOR TreeStub 33 // Short Bush --------------------------------------------------------------- -ACTOR ShortBush 60 +ACTOR ShortBush { Game Strife Radius 15 @@ -1264,7 +1264,7 @@ ACTOR ShortBush 60 // Tall Bush --------------------------------------------------------------- -ACTOR TallBush 62 +ACTOR TallBush { Game Strife Radius 20 @@ -1281,7 +1281,7 @@ ACTOR TallBush 62 // Chimney Stack ------------------------------------------------------------ -ACTOR ChimneyStack 63 +ACTOR ChimneyStack { Game Strife Radius 20 @@ -1298,7 +1298,7 @@ ACTOR ChimneyStack 63 // Barricade Column --------------------------------------------------------- -ACTOR BarricadeColumn 69 +ACTOR BarricadeColumn { Game Strife Radius 16 @@ -1315,7 +1315,7 @@ ACTOR BarricadeColumn 69 // Pot ---------------------------------------------------------------------- -ACTOR Pot 165 +ACTOR Pot { Game Strife Radius 12 @@ -1332,7 +1332,7 @@ ACTOR Pot 165 // Pitcher ------------------------------------------------------------------ -ACTOR Pitcher 188 +ACTOR Pitcher { Game Strife Radius 12 @@ -1349,7 +1349,7 @@ ACTOR Pitcher 188 // Stool -------------------------------------------------------------------- -ACTOR Stool 189 +ACTOR Stool { Game Strife Radius 6 @@ -1366,7 +1366,7 @@ ACTOR Stool 189 // Metal Pot ---------------------------------------------------------------- -ACTOR MetalPot 190 +ACTOR MetalPot { Game Strife +NOBLOCKMAP @@ -1381,7 +1381,7 @@ ACTOR MetalPot 190 // Tub ---------------------------------------------------------------------- -ACTOR Tub 191 +ACTOR Tub { Game Strife +NOBLOCKMAP @@ -1396,7 +1396,7 @@ ACTOR Tub 191 // Anvil -------------------------------------------------------------------- -ACTOR Anvil 194 +ACTOR Anvil { Game Strife Radius 16 @@ -1413,7 +1413,7 @@ ACTOR Anvil 194 // Silver Tech Lamp ---------------------------------------------------------- -ACTOR TechLampSilver 196 +ACTOR TechLampSilver { Game Strife Radius 11 @@ -1430,7 +1430,7 @@ ACTOR TechLampSilver 196 // Brass Tech Lamp ---------------------------------------------------------- -ACTOR TechLampBrass 197 +ACTOR TechLampBrass { Game Strife Radius 8 @@ -1447,7 +1447,7 @@ ACTOR TechLampBrass 197 // Tray -------------------------------------------------------------------- -ACTOR Tray 68 +ACTOR Tray { Game Strife Radius 24 @@ -1464,7 +1464,7 @@ ACTOR Tray 68 // AmmoFiller --------------------------------------------------------------- -ACTOR AmmoFiller 228 +ACTOR AmmoFiller { Game Strife Radius 12 @@ -1481,7 +1481,7 @@ ACTOR AmmoFiller 228 // Sigil Banner ------------------------------------------------------------- -ACTOR SigilBanner 216 +ACTOR SigilBanner { Game Strife Radius 24 @@ -1498,7 +1498,7 @@ ACTOR SigilBanner 216 // RebelBoots --------------------------------------------------------------- -ACTOR RebelBoots 217 +ACTOR RebelBoots { Game Strife +NOBLOCKMAP @@ -1513,7 +1513,7 @@ ACTOR RebelBoots 217 // RebelHelmet -------------------------------------------------------------- -ACTOR RebelHelmet 218 +ACTOR RebelHelmet { Game Strife +NOBLOCKMAP @@ -1528,7 +1528,7 @@ ACTOR RebelHelmet 218 // RebelShirt --------------------------------------------------------------- -ACTOR RebelShirt 219 +ACTOR RebelShirt { Game Strife +NOBLOCKMAP @@ -1543,7 +1543,7 @@ ACTOR RebelShirt 219 // Alien Bubble Column ------------------------------------------------------ -ACTOR AlienBubbleColumn 221 +ACTOR AlienBubbleColumn { Game Strife Radius 16 @@ -1561,7 +1561,7 @@ ACTOR AlienBubbleColumn 221 // Alien Floor Bubble ------------------------------------------------------- -ACTOR AlienFloorBubble 222 +ACTOR AlienFloorBubble { Game Strife Radius 16 @@ -1579,7 +1579,7 @@ ACTOR AlienFloorBubble 222 // Alien Ceiling Bubble ----------------------------------------------------- -ACTOR AlienCeilingBubble 223 +ACTOR AlienCeilingBubble { Game Strife Radius 16 @@ -1597,7 +1597,7 @@ ACTOR AlienCeilingBubble 223 // Alien Asp Climber -------------------------------------------------------- -ACTOR AlienAspClimber 224 +ACTOR AlienAspClimber { Game Strife Radius 16 @@ -1615,7 +1615,7 @@ ACTOR AlienAspClimber 224 // Alien Spider Light ------------------------------------------------------- -ACTOR AlienSpiderLight 225 +ACTOR AlienSpiderLight { Game Strife Radius 32 @@ -1633,7 +1633,7 @@ ACTOR AlienSpiderLight 225 // Target Practice ----------------------------------------------------------- -ACTOR TargetPractice 208 +ACTOR TargetPractice { Game Strife Health 99999999 @@ -1659,7 +1659,7 @@ ACTOR TargetPractice 208 // Force Field Guard -------------------------------------------------------- -ACTOR ForceFieldGuard 25 native +ACTOR ForceFieldGuard native { Game Strife Health 10 @@ -1683,7 +1683,7 @@ ACTOR ForceFieldGuard 25 native // Kneeling Guy ------------------------------------------------------------- -ACTOR KneelingGuy 204 +ACTOR KneelingGuy { Game Strife ConversationID 37,-1,-1 @@ -1732,7 +1732,7 @@ ACTOR KneelingGuy 204 // Klaxon Warning Light ----------------------------------------------------- -ACTOR KlaxonWarningLight 24 +ACTOR KlaxonWarningLight { Game Strife ConversationID 121,-1,-1 @@ -1757,7 +1757,7 @@ ACTOR KlaxonWarningLight 24 // CeilingTurret ------------------------------------------------------------ -ACTOR CeilingTurret 27 +ACTOR CeilingTurret { Game Strife ConversationID 122,-1,-1 @@ -1801,7 +1801,7 @@ ACTOR CeilingTurret 27 // Power Coupling ----------------------------------------------------------- -ACTOR PowerCoupling 220 native +ACTOR PowerCoupling native { Game Strife ConversationID 288,-1,-1 diff --git a/wadsrc/static/actors/strife/strifeweapons.txt b/wadsrc/static/actors/strife/strifeweapons.txt index 3b256e226..dc60db3cc 100644 --- a/wadsrc/static/actors/strife/strifeweapons.txt +++ b/wadsrc/static/actors/strife/strifeweapons.txt @@ -150,7 +150,7 @@ ACTOR PoisonBolt native // Strife's Crossbow -------------------------------------------------------- -ACTOR StrifeCrossbow : StrifeWeapon 2001 +ACTOR StrifeCrossbow : StrifeWeapon { Game Strife +FLOORCLIP @@ -238,7 +238,7 @@ ACTOR StrifeCrossbow2 : StrifeCrossbow // Assault Gun -------------------------------------------------------------- -actor AssaultGun : StrifeWeapon 2002 +actor AssaultGun : StrifeWeapon { Game Strife ConversationID 188, 182, 186 @@ -277,7 +277,7 @@ actor AssaultGun : StrifeWeapon 2002 // Standing variant of the assault gun -------------------------------------- -ACTOR AssaultGunStanding : WeaponGiver 2006 +ACTOR AssaultGunStanding : WeaponGiver { Game Strife ConversationID 189, 183, 187 @@ -295,7 +295,7 @@ ACTOR AssaultGunStanding : WeaponGiver 2006 // Mini-Missile Launcher ---------------------------------------------------- -ACTOR MiniMissileLauncher : StrifeWeapon 2003 +ACTOR MiniMissileLauncher : StrifeWeapon { Game Strife ConversationID 192, 186, 190 @@ -401,7 +401,7 @@ ACTOR MiniMissile // Flame Thrower ------------------------------------------------------------ -ACTOR FlameThrower : StrifeWeapon 2005 +ACTOR FlameThrower : StrifeWeapon { Game Strife ConversationID 190, 184, 188 @@ -480,7 +480,7 @@ ACTOR FlameMissile // Mauler ------------------------------------------------------------------- // The scatter version -ACTOR Mauler : StrifeWeapon 2004 +ACTOR Mauler : StrifeWeapon { Game Strife ConversationID 193, 187, 191 @@ -752,7 +752,7 @@ ACTOR PhosphorousFire native // High-Explosive Grenade Launcher ------------------------------------------ -ACTOR StrifeGrenadeLauncher : StrifeWeapon 154 +ACTOR StrifeGrenadeLauncher : StrifeWeapon { Game Strife ConversationID 195, 189, 193 diff --git a/wadsrc/static/actors/strife/templar.txt b/wadsrc/static/actors/strife/templar.txt index c20aed49b..00316ff43 100644 --- a/wadsrc/static/actors/strife/templar.txt +++ b/wadsrc/static/actors/strife/templar.txt @@ -1,5 +1,5 @@ -ACTOR Templar 3003 +ACTOR Templar { Game Strife ConversationID 62, 61, 62 diff --git a/wadsrc/static/actors/strife/thingstoblowup.txt b/wadsrc/static/actors/strife/thingstoblowup.txt index 2b8f3d93e..c2b9b1916 100644 --- a/wadsrc/static/actors/strife/thingstoblowup.txt +++ b/wadsrc/static/actors/strife/thingstoblowup.txt @@ -21,7 +21,7 @@ ACTOR Bang4Cloud // Piston ------------------------------------------------------------------- -ACTOR Piston 45 +ACTOR Piston { Game Strife ConversationID 123,-1,-1 @@ -58,7 +58,7 @@ ACTOR Piston 45 // Computer ----------------------------------------------------------------- -ACTOR Computer 182 +ACTOR Computer { Game Strife ConversationID 124,-1,-1 @@ -98,7 +98,7 @@ ACTOR Computer 182 // Power Crystal ------------------------------------------------------------ -ACTOR PowerCrystal 92 +ACTOR PowerCrystal { Game Strife ConversationID 201,-1,-1 diff --git a/wadsrc/static/actors/strife/zombie.txt b/wadsrc/static/actors/strife/zombie.txt index 9788bc00f..f92cc5a0d 100644 --- a/wadsrc/static/actors/strife/zombie.txt +++ b/wadsrc/static/actors/strife/zombie.txt @@ -1,7 +1,7 @@ // Zombie ------------------------------------------------------------------- -ACTOR Zombie : StrifeHumanoid 169 +ACTOR Zombie : StrifeHumanoid { Game Strife Health 31 @@ -43,7 +43,7 @@ ACTOR Zombie : StrifeHumanoid 169 // Zombie Spawner ----------------------------------------------------------- -ACTOR ZombieSpawner 170 +ACTOR ZombieSpawner { Game Strife Health 20 From 463d495b80f88ad3e34b0781dc23c6ec59f6456c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 16:44:41 +0200 Subject: [PATCH 051/144] - strife was broken, too... --- wadsrc/static/mapinfo/strife.txt | 474 +++++++++++++++---------------- 1 file changed, 237 insertions(+), 237 deletions(-) diff --git a/wadsrc/static/mapinfo/strife.txt b/wadsrc/static/mapinfo/strife.txt index f2f736dbf..d4b61a01b 100644 --- a/wadsrc/static/mapinfo/strife.txt +++ b/wadsrc/static/mapinfo/strife.txt @@ -68,243 +68,243 @@ gameinfo DoomEdNums { - 9 Rebel1 - 10 TeleporterBeacon - 12 Loremaster - 13 IDCard - 15 DeadStrifePlayer - 16 Inquisitor - 17 EnergyPack - 18 DeadPeasant - 19 DeadRebel - 20 DeadReaver - 21 DeadAcolyte - 22 DeadCrusader - 23 TeleportSwirl - 24 KlaxonWarningLight - 25 ForceFieldGuard - 26 EntityNest - 27 CeilingTurret - 28 CageLight - 29 Rubble1 - 30 Rubble2 - 31 Rubble3 - 32 Rubble4 - 33 TreeStub - 34 Candle - 35 StrifeCandelabra - 36 Rubble5 - 37 Rubble6 - 38 SilverKey - 39 BrassKey - 40 GoldKey - 41 Rubble7 - 42 Rubble8 - 43 OutsideLamp - 44 StatueRuined - 45 Piston - 46 PoleLantern - 47 LargeTorch - 48 PillarTechno - 50 HugeTorch - 51 PalmTree - 52 OfficersUniform - 53 WaterDrip - 54 PillarAztec - 55 PillarAztecDamaged - 56 PillarAztecRuined - 57 PillarHugeTech - 58 AcolyteShadow - 59 DegninOre - 60 ShortBush - 61 OracleKey - 62 TallBush - 63 ChimneyStack - 64 Macil1 - 65 Peasant4 - 66 Peasant7 - 67 Peasant10 - 68 Tray - 69 BarricadeColumn - 70 StrifeBurningBarrel - 71 Programmer - 72 BarKeep - 73 Armorer - 74 Medic - 75 AlienSpectre2 - 76 AlienSpectre3 - 77 Sigil1 - 78 Sigil2 - 79 Sigil3 - 80 Sigil4 - 81 Sigil5 - 82 WoodenBarrel - 83 SurgeryKit - 85 RatBuddy - 86 OrderKey - 90 GuardUniform - 91 SeveredHand - 92 PowerCrystal - 93 Coin - 94 ExplosiveBarrel2 - 95 LightSilverFluorescent - 96 LightBrownFluorescent - 97 LightGoldFluorescent - 98 SStalactiteBig - 99 SRock1 - 100 SRock2 - 101 SRock3 - 102 SRock4 - 103 WaterDropOnFloor - 104 WaterfallSplash - 105 BurningBowl - 106 BurningBrazier - 107 SmallTorchLit - 108 SmallTorchUnlit - 109 CeilingChain - 110 Statue - 111 MediumTorch - 112 WaterFountain - 113 HeartsInTank - 114 ElectricBolts - 115 PoisonBolts - 116 WeaponSmith - 117 SurgeryCrab - 128 EntityBoss - 129 AlienSpectre1 - 130 Peasant2 - 131 Peasant3 - 132 Peasant5 - 133 Peasant6 - 134 Peasant8 - 135 Peasant9 - 136 Peasant11 - 137 Peasant12 - 138 Gold10 - 139 Gold25 - 140 Gold50 - 141 Beggar1 - 142 AcolyteRed - 143 AcolyteRust - 144 Rebel2 - 145 Rebel3 - 146 AcolyteGray - 147 AcolyteDGreen - 148 AcolyteGold - 149 Rebel4 - 150 Rebel5 - 151 Rebel6 - 152 HEGrenadeRounds - 153 PhosphorusGrenadeRounds - 154 StrifeGrenadeLauncher - 155 Beggar2 - 156 Beggar3 - 157 Beggar4 - 158 Beggar5 - 159 CavePillarTop - 160 SStalagmiteBig - 161 SStalactiteSmall - 162 CavePillarBottom - 163 SStalagmiteSmall - 164 Mug - 165 Pot - 166 WarehouseKey - 167 AlienSpectre4 - 168 AlienSpectre5 - 169 Zombie - 170 ZombieSpawner - 172 Peasant13 - 173 Peasant14 - 174 Peasant15 - 175 Peasant16 - 176 Peasant17 - 177 Peasant18 - 178 Peasant19 - 179 Peasant20 - 180 Peasant21 - 181 Peasant22 - 182 Computer - 183 AmmoSatchel - 184 IDBadge - 185 Passcard - 186 Stalker - 187 StrifeBishop - 188 Pitcher - 189 Stool - 190 MetalPot - 191 Tub - 192 RedCrystalKey - 193 BlueCrystalKey - 194 Anvil - 195 ChapelKey - 196 TechLampSilver - 197 TechLampBrass - 198 EntityPod - 199 Oracle - 200 Macil2 - 201 AcolyteToBe - 202 BigTree2 - 203 PottedTree - 204 KneelingGuy - 205 OfferingChalice - 206 Communicator - 207 Targeter - 208 TargetPractice - 209 Tank1 - 210 Tank2 - 211 Tank3 - 212 SacrificedGuy - 213 Tank4 - 214 Tank5 - 215 StickInWater - 216 SigilBanner - 217 RebelBoots - 218 RebelHelmet - 219 RebelShirt - 220 PowerCoupling - 221 AlienBubbleColumn - 222 AlienFloorBubble - 223 AlienCeilingBubble - 224 AlienAspClimber - 225 AlienSpiderLight - 226 BrokenPowerCoupling - 227 PillarAlienPower - 228 AmmoFiller - 229 Tank6 - 230 BaseKey - 231 AcolyteBlue - 232 AcolyteLGreen - 233 MaulerKey - 234 FactoryKey - 235 MineKey - 236 CoreKey - 2001 StrifeCrossbow - 2002 AssaultGun - 2003 MiniMissileLauncher - 2004 Mauler - 2005 FlameThrower - 2006 AssaultGunStanding - 2007 ClipOfBullets - 2010 MiniMissiles - 2011 MedPatch - 2012 MedicalKit - 2014 WaterBottle - 2018 LeatherArmor - 2019 MetalArmor - 2024 ShadowArmor - 2025 EnvironmentalSuit - 2026 StrifeMap - 2027 Scanner - 2028 LightGlobe - 2046 CrateOfMissiles - 2047 EnergyPod - 2048 BoxOfBullets - 3001 Reaver - 3002 AcolyteTan - 3003 Templar - 3004 Peasant1 - 3005 Crusader - 3006 Sentinel + 9 = Rebel1 + 10 = TeleporterBeacon + 12 = Loremaster + 13 = IDCard + 15 = DeadStrifePlayer + 16 = Inquisitor + 17 = EnergyPack + 18 = DeadPeasant + 19 = DeadRebel + 20 = DeadReaver + 21 = DeadAcolyte + 22 = DeadCrusader + 23 = TeleportSwirl + 24 = KlaxonWarningLight + 25 = ForceFieldGuard + 26 = EntityNest + 27 = CeilingTurret + 28 = CageLight + 29 = Rubble1 + 30 = Rubble2 + 31 = Rubble3 + 32 = Rubble4 + 33 = TreeStub + 34 = Candle + 35 = StrifeCandelabra + 36 = Rubble5 + 37 = Rubble6 + 38 = SilverKey + 39 = BrassKey + 40 = GoldKey + 41 = Rubble7 + 42 = Rubble8 + 43 = OutsideLamp + 44 = StatueRuined + 45 = Piston + 46 = PoleLantern + 47 = LargeTorch + 48 = PillarTechno + 50 = HugeTorch + 51 = PalmTree + 52 = OfficersUniform + 53 = WaterDrip + 54 = PillarAztec + 55 = PillarAztecDamaged + 56 = PillarAztecRuined + 57 = PillarHugeTech + 58 = AcolyteShadow + 59 = DegninOre + 60 = ShortBush + 61 = OracleKey + 62 = TallBush + 63 = ChimneyStack + 64 = Macil1 + 65 = Peasant4 + 66 = Peasant7 + 67 = Peasant10 + 68 = Tray + 69 = BarricadeColumn + 70 = StrifeBurningBarrel + 71 = Programmer + 72 = BarKeep + 73 = Armorer + 74 = Medic + 75 = AlienSpectre2 + 76 = AlienSpectre3 + 77 = Sigil1 + 78 = Sigil2 + 79 = Sigil3 + 80 = Sigil4 + 81 = Sigil5 + 82 = WoodenBarrel + 83 = SurgeryKit + 85 = RatBuddy + 86 = OrderKey + 90 = GuardUniform + 91 = SeveredHand + 92 = PowerCrystal + 93 = Coin + 94 = ExplosiveBarrel2 + 95 = LightSilverFluorescent + 96 = LightBrownFluorescent + 97 = LightGoldFluorescent + 98 = SStalactiteBig + 99 = SRock1 + 100 = SRock2 + 101 = SRock3 + 102 = SRock4 + 103 = WaterDropOnFloor + 104 = WaterfallSplash + 105 = BurningBowl + 106 = BurningBrazier + 107 = SmallTorchLit + 108 = SmallTorchUnlit + 109 = CeilingChain + 110 = Statue + 111 = MediumTorch + 112 = WaterFountain + 113 = HeartsInTank + 114 = ElectricBolts + 115 = PoisonBolts + 116 = WeaponSmith + 117 = SurgeryCrab + 128 = EntityBoss + 129 = AlienSpectre1 + 130 = Peasant2 + 131 = Peasant3 + 132 = Peasant5 + 133 = Peasant6 + 134 = Peasant8 + 135 = Peasant9 + 136 = Peasant11 + 137 = Peasant12 + 138 = Gold10 + 139 = Gold25 + 140 = Gold50 + 141 = Beggar1 + 142 = AcolyteRed + 143 = AcolyteRust + 144 = Rebel2 + 145 = Rebel3 + 146 = AcolyteGray + 147 = AcolyteDGreen + 148 = AcolyteGold + 149 = Rebel4 + 150 = Rebel5 + 151 = Rebel6 + 152 = HEGrenadeRounds + 153 = PhosphorusGrenadeRounds + 154 = StrifeGrenadeLauncher + 155 = Beggar2 + 156 = Beggar3 + 157 = Beggar4 + 158 = Beggar5 + 159 = CavePillarTop + 160 = SStalagmiteBig + 161 = SStalactiteSmall + 162 = CavePillarBottom + 163 = SStalagmiteSmall + 164 = Mug + 165 = Pot + 166 = WarehouseKey + 167 = AlienSpectre4 + 168 = AlienSpectre5 + 169 = Zombie + 170 = ZombieSpawner + 172 = Peasant13 + 173 = Peasant14 + 174 = Peasant15 + 175 = Peasant16 + 176 = Peasant17 + 177 = Peasant18 + 178 = Peasant19 + 179 = Peasant20 + 180 = Peasant21 + 181 = Peasant22 + 182 = Computer + 183 = AmmoSatchel + 184 = IDBadge + 185 = Passcard + 186 = Stalker + 187 = StrifeBishop + 188 = Pitcher + 189 = Stool + 190 = MetalPot + 191 = Tub + 192 = RedCrystalKey + 193 = BlueCrystalKey + 194 = Anvil + 195 = ChapelKey + 196 = TechLampSilver + 197 = TechLampBrass + 198 = EntityPod + 199 = Oracle + 200 = Macil2 + 201 = AcolyteToBe + 202 = BigTree2 + 203 = PottedTree + 204 = KneelingGuy + 205 = OfferingChalice + 206 = Communicator + 207 = Targeter + 208 = TargetPractice + 209 = Tank1 + 210 = Tank2 + 211 = Tank3 + 212 = SacrificedGuy + 213 = Tank4 + 214 = Tank5 + 215 = StickInWater + 216 = SigilBanner + 217 = RebelBoots + 218 = RebelHelmet + 219 = RebelShirt + 220 = PowerCoupling + 221 = AlienBubbleColumn + 222 = AlienFloorBubble + 223 = AlienCeilingBubble + 224 = AlienAspClimber + 225 = AlienSpiderLight + 226 = BrokenPowerCoupling + 227 = PillarAlienPower + 228 = AmmoFiller + 229 = Tank6 + 230 = BaseKey + 231 = AcolyteBlue + 232 = AcolyteLGreen + 233 = MaulerKey + 234 = FactoryKey + 235 = MineKey + 236 = CoreKey + 2001 = StrifeCrossbow + 2002 = AssaultGun + 2003 = MiniMissileLauncher + 2004 = Mauler + 2005 = FlameThrower + 2006 = AssaultGunStanding + 2007 = ClipOfBullets + 2010 = MiniMissiles + 2011 = MedPatch + 2012 = MedicalKit + 2014 = WaterBottle + 2018 = LeatherArmor + 2019 = MetalArmor + 2024 = ShadowArmor + 2025 = EnvironmentalSuit + 2026 = StrifeMap + 2027 = Scanner + 2028 = LightGlobe + 2046 = CrateOfMissiles + 2047 = EnergyPod + 2048 = BoxOfBullets + 3001 = Reaver + 3002 = AcolyteTan + 3003 = Templar + 3004 = Peasant1 + 3005 = Crusader + 3006 = Sentinel } Intermission Inter_Strife_Good From 15dbbc9137dc10018ebac48b2f5e407e2665ad2f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 16:51:45 +0200 Subject: [PATCH 052/144] - set editor numbers through MAPINFO. The DECORATE way still works ans will override any definition made in MAPINFO. - use a standard TMap for finding editor numbers --- src/d_main.cpp | 1 + src/g_doomedmap.cpp | 272 ++++++++++++++++++++++++++------------------ src/g_level.h | 1 + src/g_mapinfo.cpp | 12 ++ src/info.cpp | 21 ++-- src/info.h | 32 ++---- src/p_mobj.cpp | 69 ++++++----- 7 files changed, 235 insertions(+), 173 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 8b9e54680..6b5399c00 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2440,6 +2440,7 @@ void D_DoomMain (void) // Create replacements for dehacked pickups FinishDehPatch(); + InitActorNumsFromMapinfo(); FActorInfo::StaticSetActorNums (); //Added by MC: diff --git a/src/g_doomedmap.cpp b/src/g_doomedmap.cpp index 9ee2ce0c5..521b98373 100644 --- a/src/g_doomedmap.cpp +++ b/src/g_doomedmap.cpp @@ -34,20 +34,34 @@ */ #include "info.h" +#include "p_lnspec.h" #include "m_fixed.h" #include "c_dispatch.h" -#include "d_net.h" -#include "v_text.h" - -#include "gi.h" - -#include "actor.h" -#include "r_state.h" -#include "i_system.h" -#include "p_local.h" #include "templates.h" #include "cmdlib.h" #include "g_level.h" +#include "v_text.h" +#include "i_system.h" + +//========================================================================== +// +// Stuff that's only valid during definition time +// +//========================================================================== + +struct MapinfoEdMapItem +{ + FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet. + int special; + int args[5]; + // These are for error reporting. We must store the file information because it's no longer available when these items get resolved. + FString filename; + int linenum; +}; + +typedef TMap IdMap; + +static IdMap DoomEdFromMapinfo; //========================================================================== // @@ -56,108 +70,20 @@ FDoomEdMap DoomEdMap; -FDoomEdMap::FDoomEdEntry *FDoomEdMap::DoomEdHash[DOOMED_HASHSIZE]; - -FDoomEdMap::~FDoomEdMap() -{ - Empty(); -} - -void FDoomEdMap::AddType (int doomednum, const PClass *type, bool temporary) -{ - unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; - FDoomEdEntry *entry = DoomEdHash[hash]; - while (entry && entry->DoomEdNum != doomednum) - { - entry = entry->HashNext; - } - if (entry == NULL) - { - entry = new FDoomEdEntry; - entry->HashNext = DoomEdHash[hash]; - entry->DoomEdNum = doomednum; - DoomEdHash[hash] = entry; - } - else if (!entry->temp) - { - Printf (PRINT_BOLD, "Warning: %s and %s both have doomednum %d.\n", - type->TypeName.GetChars(), entry->Type->TypeName.GetChars(), doomednum); - } - entry->temp = temporary; - entry->Type = type; -} - -void FDoomEdMap::DelType (int doomednum) -{ - unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; - FDoomEdEntry **prev = &DoomEdHash[hash]; - FDoomEdEntry *entry = *prev; - while (entry && entry->DoomEdNum != doomednum) - { - prev = &entry->HashNext; - entry = entry->HashNext; - } - if (entry != NULL) - { - *prev = entry->HashNext; - delete entry; - } -} - -void FDoomEdMap::Empty () -{ - int bucket; - - for (bucket = 0; bucket < DOOMED_HASHSIZE; ++bucket) - { - FDoomEdEntry *probe = DoomEdHash[bucket]; - - while (probe != NULL) - { - FDoomEdEntry *next = probe->HashNext; - delete probe; - probe = next; - } - DoomEdHash[bucket] = NULL; - } -} - -const PClass *FDoomEdMap::FindType (int doomednum) const -{ - unsigned int hash = (unsigned int)doomednum % DOOMED_HASHSIZE; - FDoomEdEntry *entry = DoomEdHash[hash]; - while (entry && entry->DoomEdNum != doomednum) - entry = entry->HashNext; - return entry ? entry->Type : NULL; -} - -struct EdSorting -{ - const PClass *Type; - int DoomEdNum; -}; - static int STACK_ARGS sortnums (const void *a, const void *b) { - return ((const EdSorting *)a)->DoomEdNum - - ((const EdSorting *)b)->DoomEdNum; + return (*(const FDoomEdMap::Pair**)a)->Key - (*(const FDoomEdMap::Pair**)b)->Key; } -void FDoomEdMap::DumpMapThings () +CCMD (dumpmapthings) { - TArray infos (PClass::m_Types.Size()); - int i; + TArray infos(DoomEdMap.CountUsed()); + FDoomEdMap::Iterator it(DoomEdMap); + FDoomEdMap::Pair *pair; - for (i = 0; i < DOOMED_HASHSIZE; ++i) + while (it.NextPair(pair)) { - FDoomEdEntry *probe = DoomEdHash[i]; - - while (probe != NULL) - { - EdSorting sorting = { probe->Type, probe->DoomEdNum }; - infos.Push (sorting); - probe = probe->HashNext; - } + infos.Push(pair); } if (infos.Size () == 0) @@ -166,17 +92,145 @@ void FDoomEdMap::DumpMapThings () } else { - qsort (&infos[0], infos.Size (), sizeof(EdSorting), sortnums); + qsort (&infos[0], infos.Size (), sizeof(FDoomEdMap::Pair*), sortnums); - for (i = 0; i < (int)infos.Size (); ++i) + for (unsigned i = 0; i < infos.Size (); ++i) { Printf ("%6d %s\n", - infos[i].DoomEdNum, infos[i].Type->TypeName.GetChars()); + infos[i]->Key, infos[i]->Value.Type->TypeName.GetChars()); } } } -CCMD (dumpmapthings) + +void FMapInfoParser::ParseDoomEdNums() { - FDoomEdMap::DumpMapThings (); + TMap defined; + int error = 0; + + MapinfoEdMapItem editem; + + editem.filename = sc.ScriptName; + + sc.MustGetStringName("{"); + while (true) + { + if (sc.CheckString("}")) return; + else if (sc.CheckNumber()) + { + int ednum = sc.Number; + sc.MustGetStringName("="); + sc.MustGetString(); + + bool *def = defined.CheckKey(ednum); + if (def != NULL) + { + sc.ScriptMessage("Editor Number %d defined more than once", ednum); + error++; + } + defined[ednum] = true; + if (sc.String[0] == '$') + { + // todo: add special stuff like playerstarts and sound sequence overrides here, too. + editem.classname = NAME_None; + editem.special = 1; // todo: assign proper constants + } + else + { + editem.classname = sc.String; + editem.special = -1; + } + memset(editem.args, 0, sizeof(editem.args)); + + int minargs = 0; + int maxargs = 5; + FString specialname; + if (sc.CheckString(",")) + { + // todo: parse a special or args + editem.special = 0; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing. + if (!sc.CheckNumber()) + { + sc.MustGetString(); + specialname = sc.String; // save for later error reporting. + editem.special = P_FindLineSpecial(sc.String, &minargs, &maxargs); + if (editem.special == 0 || minargs == -1) + { + sc.ScriptMessage("Invalid special %s for Editor Number %d", sc.String, ednum); + error++; + minargs = 0; + maxargs = 5; + } + if (!sc.CheckString(",")) + { + // special case: Special without arguments + if (minargs != 0) + { + sc.ScriptMessage("Incorrect number of args for special %s, min = %d, max = %d, found = 0", specialname.GetChars(), minargs, maxargs); + error++; + } + DoomEdFromMapinfo.Insert(ednum, editem); + continue; + } + sc.MustGetStringName(","); + sc.MustGetNumber(); + } + int i = 0; + while (i < 5) + { + editem.args[i++] = sc.Number; + i++; + if (!sc.CheckString(",")) break; + sc.MustGetNumber(); + } + if (specialname.IsNotEmpty() && (i < minargs || i > maxargs)) + { + sc.ScriptMessage("Incorrect number of args for special %s, min = %d, max = %d, found = %d", specialname.GetChars(), minargs, maxargs, i); + error++; + } + } + DoomEdFromMapinfo.Insert(ednum, editem); + } + else + { + sc.ScriptError("Number expected"); + } + } + if (error > 0) + { + sc.ScriptError("%d errors encountered in DoomEdNum definition"); + } +} + +void InitActorNumsFromMapinfo() +{ + DoomEdMap.Clear(); + IdMap::Iterator it(DoomEdFromMapinfo); + IdMap::Pair *pair; + int error = 0; + + while (it.NextPair(pair)) + { + const PClass *cls = NULL; + if (pair->Value.classname != NAME_None) + { + cls = PClass::FindClass(pair->Value.classname); + if (cls == NULL) + { + Printf(TEXTCOLOR_RED "Script error, \"%s\" line %d:\nUnknown actor class %s\n", + pair->Value.filename.GetChars(), pair->Value.linenum, pair->Value.classname.GetChars()); + error++; + } + } + FDoomEdEntry ent; + ent.Type = cls; + ent.Special = pair->Value.special; + memcpy(ent.Args, pair->Value.args, sizeof(ent.Args)); + DoomEdMap.Insert(pair->Key, ent); + } + if (error > 0) + { + I_Error("%d unknown actor classes found", error); + } + DoomEdFromMapinfo.Clear(); // we do not need this any longer } diff --git a/src/g_level.h b/src/g_level.h index f94fefa42..50a661db9 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -104,6 +104,7 @@ struct FMapInfoParser void ParseIntermissionAction(FIntermissionDescriptor *Desc); void ParseIntermission(); + void ParseDoomEdNums(); void ParseAMColors(bool); FName CheckEndSequence(); FName ParseEndGame(); diff --git a/src/g_mapinfo.cpp b/src/g_mapinfo.cpp index 306c3645a..a99056eeb 100644 --- a/src/g_mapinfo.cpp +++ b/src/g_mapinfo.cpp @@ -1876,6 +1876,18 @@ void FMapInfoParser::ParseMapInfo (int lump, level_info_t &gamedefaults, level_i sc.ScriptError("intermission definitions not supported with old MAPINFO syntax"); } } + else if (sc.Compare("doomednums")) + { + if (format_type != FMT_Old) + { + format_type = FMT_New; + ParseDoomEdNums(); + } + else + { + sc.ScriptError("doomednums definitions not supported with old MAPINFO syntax"); + } + } else if (sc.Compare("automap") || sc.Compare("automap_overlay")) { if (format_type != FMT_Old) diff --git a/src/info.cpp b/src/info.cpp index f4852a1d1..7677ac4a7 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -142,7 +142,6 @@ void FActorInfo::StaticInit () void FActorInfo::StaticSetActorNums () { SpawnableThings.Clear(); - DoomEdMap.Empty (); for (unsigned int i = 0; i < PClass::m_RuntimeActors.Size(); ++i) { @@ -171,7 +170,16 @@ void FActorInfo::RegisterIDs () } if (DoomEdNum != -1) { - DoomEdMap.AddType (DoomEdNum, cls); + FDoomEdEntry *oldent = DoomEdMap.CheckKey(DoomEdNum); + if (oldent != NULL && oldent->Special == -2) + { + Printf(TEXTCOLOR_RED"Editor number %d defined twice for classes '%s' and '%s'\n", DoomEdNum, cls->TypeName.GetChars(), oldent->Type->TypeName.GetChars()); + } + FDoomEdEntry ent; + memset(&ent, 0, sizeof(ent)); + ent.Type = cls; + ent.Special = -2; // use -2 instead of -1 so that we can recognize DECORATE defined entries and print a warning message if duplicates occur. + DoomEdMap.Insert(DoomEdNum, ent); if (cls != Class) { Printf(TEXTCOLOR_RED"Editor number %d refers to hidden class type '%s'\n", DoomEdNum, cls->TypeName.GetChars()); @@ -179,15 +187,6 @@ void FActorInfo::RegisterIDs () } } // Fill out the list for Chex Quest with Doom's actors - if (gameinfo.gametype == GAME_Chex && DoomEdMap.FindType(DoomEdNum) == NULL && - (GameFilter & GAME_Doom)) - { - DoomEdMap.AddType (DoomEdNum, Class, true); - if (cls != Class) - { - Printf(TEXTCOLOR_RED"Editor number %d refers to hidden class type '%s'\n", DoomEdNum, cls->TypeName.GetChars()); - } - } } //========================================================================== diff --git a/src/info.h b/src/info.h index 13a8eb5e1..86f2bbdd5 100644 --- a/src/info.h +++ b/src/info.h @@ -278,34 +278,20 @@ struct FActorInfo TArray ForbiddenToPlayerClass; }; -class FDoomEdMap +struct FDoomEdEntry { -public: - ~FDoomEdMap(); - - const PClass *FindType (int doomednum) const; - void AddType (int doomednum, const PClass *type, bool temporary = false); - void DelType (int doomednum); - void Empty (); - - static void DumpMapThings (); - -private: - enum { DOOMED_HASHSIZE = 256 }; - - struct FDoomEdEntry - { - FDoomEdEntry *HashNext; - const PClass *Type; - int DoomEdNum; - bool temp; - }; - - static FDoomEdEntry *DoomEdHash[DOOMED_HASHSIZE]; + const PClass *Type; + int Special; + int Args[5]; }; +typedef TMap FDoomEdMap; + extern FDoomEdMap DoomEdMap; +void InitActorNumsFromMapinfo(); + + int GetSpriteIndex(const char * spritename, bool add = true); TArray &MakeStateNameList(const char * fname); void AddStateLight(FState *state, const char *lname); diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 9dd9f1ddc..fea31ada3 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4600,6 +4600,28 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) if (mthing->type == 0 || mthing->type == -1) return NULL; + // find which type to spawn + FDoomEdEntry *mentry = DoomEdMap.CheckKey(mthing->type); + + 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->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. + { + return NULL; + } + } + if (mentry->Type == NULL && mentry->Special <= 0) + { + // has been explicitly set to not spawning anything. + return NULL; + } + + // count deathmatch start positions if (mthing->type == 11) { @@ -4776,39 +4798,25 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) mthing->args[0] = mthing->type - 14100; mthing->type = 14165; } - // find which type to spawn - i = DoomEdMap.FindType (mthing->type); - - if (i == 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->x>>FRACBITS, mthing->y>>FRACBITS); - i = PClass::FindClass("Unknown"); - } // [RH] If the thing's corresponding sprite has no frames, also map // it to the unknown thing. - else + // Handle decorate replacements explicitly here + // to check for missing frames in the replacement object. + i = mentry->Type->GetReplacement(); + + const AActor *defaults = GetDefaultByType (i); + if (defaults->SpawnState == NULL || + sprites[defaults->SpawnState->sprite].numframes == 0) { - // Handle decorate replacements explicitly here - // to check for missing frames in the replacement object. - i = i->GetReplacement(); + // We don't load mods for shareware games so we'll just ignore + // missing actors. Heretic needs this since the shareware includes + // the retail weapons in Deathmatch. + if (gameinfo.flags & GI_SHAREWARE) + return NULL; - const AActor *defaults = GetDefaultByType (i); - if (defaults->SpawnState == NULL || - sprites[defaults->SpawnState->sprite].numframes == 0) - { - // We don't load mods for shareware games so we'll just ignore - // missing actors. Heretic needs this since the shareware includes - // the retail weapons in Deathmatch. - if (gameinfo.flags & GI_SHAREWARE) - return NULL; - - Printf ("%s at (%i, %i) has no frames\n", - i->TypeName.GetChars(), mthing->x>>FRACBITS, mthing->y>>FRACBITS); - i = PClass::FindClass("Unknown"); - } + Printf ("%s at (%i, %i) has no frames\n", + i->TypeName.GetChars(), mthing->x>>FRACBITS, mthing->y>>FRACBITS); + i = PClass::FindClass("Unknown"); } const AActor *info = GetDefaultByType (i); @@ -4898,7 +4906,8 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) P_FindFloorCeiling(mobj, FFCF_SAMESECTOR | FFCF_ONLY3DFLOORS | FFCF_3DRESTRICT); } - if (!(mobj->flags2 & MF2_ARGSDEFINED)) + // if the actor got args defined either in DECORATE or MAPINFO we must ignore the map's properties. + if (!(mobj->flags2 & MF2_ARGSDEFINED) && (mentry == NULL || mentry->Special < 0)) { // [RH] Set the thing's special mobj->special = mthing->special; From 9e5bf3812374104521f10336214700eae4024e01 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 21:17:10 +0200 Subject: [PATCH 053/144] - handle all special mapthing items (player starts, polyobj spots) via the new MAPINFO method instead of hard coding them in the spawn function. (Note: The buildmap loading code should be adjusted to the new functionality as well eventually.) --- src/doomdata.h | 4 +- src/g_doomedmap.cpp | 23 +++- src/info.h | 19 ++++ src/p_local.h | 13 --- src/p_mobj.cpp | 135 +++++++++--------------- src/p_setup.cpp | 22 +--- src/po_man.cpp | 14 ++- wadsrc/static/mapinfo/common.txt | 152 ++++++++++++++++++++++++++- wadsrc/static/mapinfo/doomcommon.txt | 1 - wadsrc/static/mapinfo/doomitems.txt | 4 + wadsrc/static/mapinfo/heretic.txt | 5 +- wadsrc/static/mapinfo/hexen.txt | 8 +- wadsrc/static/mapinfo/strife.txt | 14 +++ 13 files changed, 281 insertions(+), 133 deletions(-) diff --git a/src/doomdata.h b/src/doomdata.h index f190be37d..1dcd8e6b4 100644 --- a/src/doomdata.h +++ b/src/doomdata.h @@ -429,10 +429,10 @@ struct FPlayerStart short angle, type; FPlayerStart() { } - FPlayerStart(const FMapThing *mthing) + FPlayerStart(const FMapThing *mthing, int pnum) : x(mthing->x), y(mthing->y), z(mthing->z), angle(mthing->angle), - type(mthing->type) + type(pnum) { } }; // Player spawn spots for deathmatch. diff --git a/src/g_doomedmap.cpp b/src/g_doomedmap.cpp index 521b98373..ad61e1bf7 100644 --- a/src/g_doomedmap.cpp +++ b/src/g_doomedmap.cpp @@ -43,6 +43,23 @@ #include "v_text.h" #include "i_system.h" + +const char *SpecialMapthingNames[] = { + "$PLAYER1START", + "$PLAYER2START", + "$PLAYER3START", + "$PLAYER4START", + "$PLAYER5START", + "$PLAYER6START", + "$PLAYER7START", + "$PLAYER8START", + "$DEATHMATCHSTART", + "$SSEQOVERRIDE", + "$POLYANCHOR", + "$POLYSPAWN", + "$POLYSPAWNCRUSH", + "$POLYSPAWNHURT" +}; //========================================================================== // // Stuff that's only valid during definition time @@ -112,7 +129,7 @@ void FMapInfoParser::ParseDoomEdNums() editem.filename = sc.ScriptName; - sc.MustGetStringName("{"); + ParseOpenBrace(); while (true) { if (sc.CheckString("}")) return; @@ -133,7 +150,7 @@ void FMapInfoParser::ParseDoomEdNums() { // todo: add special stuff like playerstarts and sound sequence overrides here, too. editem.classname = NAME_None; - editem.special = 1; // todo: assign proper constants + editem.special = sc.MustMatchString(SpecialMapthingNames) + 1; // todo: assign proper constants } else { @@ -148,7 +165,7 @@ void FMapInfoParser::ParseDoomEdNums() if (sc.CheckString(",")) { // todo: parse a special or args - editem.special = 0; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing. + if (editem.special < 0) editem.special = 0; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing. if (!sc.CheckNumber()) { sc.MustGetString(); diff --git a/src/info.h b/src/info.h index 86f2bbdd5..2ab0a82d6 100644 --- a/src/info.h +++ b/src/info.h @@ -285,6 +285,25 @@ struct FDoomEdEntry int Args[5]; }; +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, +}; + + typedef TMap FDoomEdMap; extern FDoomEdMap DoomEdMap; diff --git a/src/p_local.h b/src/p_local.h index fe7958807..7e9d810d8 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -591,19 +591,6 @@ struct polyspawns_t short type; }; -enum -{ - PO_HEX_ANCHOR_TYPE = 3000, - PO_HEX_SPAWN_TYPE, - PO_HEX_SPAWNCRUSH_TYPE, - - // [RH] Thing numbers that don't conflict with Doom things - PO_ANCHOR_TYPE = 9300, - PO_SPAWN_TYPE, - PO_SPAWNCRUSH_TYPE, - PO_SPAWNHURT_TYPE -}; - extern int po_NumPolyobjs; extern polyspawns_t *polyspawns; // [RH] list of polyobject things to spawn diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index fea31ada3..5eb806b02 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4621,68 +4621,59 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) return NULL; } - - // count deathmatch start positions - if (mthing->type == 11) + // copy args to mapthing so that we have them in one place for the rest of this function + if (mentry->Special >= 0) { - FPlayerStart start(mthing); - deathmatchstarts.Push(start); - return NULL; + mthing->special = mentry->Special; + memcpy(mthing->args, mentry->Args, sizeof(mthing->args)); } - // Convert Strife starts to Hexen-style starts - if (gameinfo.gametype == GAME_Strife && mthing->type >= 118 && mthing->type <= 127) - { - mthing->args[0] = mthing->type - 117; - mthing->type = 1; - } - - // [RH] Record polyobject-related things - if (gameinfo.gametype == GAME_Hexen) - { - switch (mthing->type) - { - case PO_HEX_ANCHOR_TYPE: - mthing->type = PO_ANCHOR_TYPE; - break; - case PO_HEX_SPAWN_TYPE: - mthing->type = PO_SPAWN_TYPE; - break; - case PO_HEX_SPAWNCRUSH_TYPE: - mthing->type = PO_SPAWNCRUSH_TYPE; - break; - } - } - - if (mthing->type == PO_ANCHOR_TYPE || - mthing->type == PO_SPAWN_TYPE || - mthing->type == PO_SPAWNCRUSH_TYPE || - mthing->type == PO_SPAWNHURT_TYPE) - { - polyspawns_t *polyspawn = new polyspawns_t; - polyspawn->next = polyspawns; - polyspawn->x = mthing->x; - polyspawn->y = mthing->y; - polyspawn->angle = mthing->angle; - polyspawn->type = mthing->type; - polyspawns = polyspawn; - if (mthing->type != PO_ANCHOR_TYPE) - po_NumPolyobjs++; - return NULL; - } - - // check for players specially int pnum = -1; + if (mentry->Type == NULL) + { - if (mthing->type <= 4 && mthing->type > 0) - { - pnum = mthing->type - 1; - } - else - { - if (mthing->type >= gameinfo.player5start && mthing->type < gameinfo.player5start + MAXPLAYERS - 4) + switch (mentry->Special) { - pnum = mthing->type - gameinfo.player5start + 4; + case SMT_DEATHMATCHSTART: + { + // count deathmatch start positions + FPlayerStart start(mthing, 0); + deathmatchstarts.Push(start); + return NULL; + } + + case SMT_POLYANCHOR: + case SMT_POLYSPAWN: + case SMT_POLYSPAWNCRUSH: + case SMT_POLYSPAWNHURT: + { + polyspawns_t *polyspawn = new polyspawns_t; + polyspawn->next = polyspawns; + polyspawn->x = mthing->x; + polyspawn->y = mthing->y; + polyspawn->angle = mthing->angle; + polyspawn->type = mentry->Special; + polyspawns = polyspawn; + 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; + break; + + // Sound sequence override will be handled later + default: + break; + } } @@ -4750,7 +4741,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) return NULL; // save spots for respawning in network games - FPlayerStart start(mthing); + FPlayerStart start(mthing, pnum+1); playerstarts[pnum] = start; AllPlayerStarts.Push(start); if (!deathmatch && !(level.flags2 & LEVEL2_RANDOMPLAYERSTARTS)) @@ -4761,20 +4752,10 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) } // [RH] sound sequence overriders - if (mthing->type >= 1400 && mthing->type < 1410) + if (mentry->Type == NULL && mentry->Special == SMT_SSEQOVERRIDE) { - P_PointInSector (mthing->x, mthing->y)->seqType = mthing->type - 1400; - return NULL; - } - else if (mthing->type == 1411) - { - int type; - - if (mthing->args[0] == 255) - type = -1; - else - type = mthing->args[0]; - + int type = mentry->Args[0]; + if (type == 255) type = -1; if (type > 63) { Printf ("Sound sequence %d out of range\n", type); @@ -4786,18 +4767,6 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) return NULL; } - // [RH] Determine if it is an old ambient thing, and if so, - // map it to MT_AMBIENT with the proper parameter. - if (mthing->type >= 14001 && mthing->type <= 14064) - { - mthing->args[0] = mthing->type - 14000; - mthing->type = 14065; - } - else if (mthing->type >= 14101 && mthing->type <= 14164) - { - mthing->args[0] = mthing->type - 14100; - mthing->type = 14165; - } // [RH] If the thing's corresponding sprite has no frames, also map // it to the unknown thing. // Handle decorate replacements explicitly here @@ -4907,7 +4876,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) } // if the actor got args defined either in DECORATE or MAPINFO we must ignore the map's properties. - if (!(mobj->flags2 & MF2_ARGSDEFINED) && (mentry == NULL || mentry->Special < 0)) + if (!(mobj->flags2 & MF2_ARGSDEFINED)) { // [RH] Set the thing's special mobj->special = mthing->special; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index e374f0249..eaa0d4027 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -3334,32 +3334,16 @@ void P_GetPolySpots (MapData * map, TArray &spots, TAr { if (map->HasBehavior) { - int spot1, spot2, spot3, anchor; - - if (gameinfo.gametype == GAME_Hexen) - { - spot1 = PO_HEX_SPAWN_TYPE; - spot2 = PO_HEX_SPAWNCRUSH_TYPE; - anchor = PO_HEX_ANCHOR_TYPE; - } - else - { - spot1 = PO_SPAWN_TYPE; - spot2 = PO_SPAWNCRUSH_TYPE; - anchor = PO_ANCHOR_TYPE; - } - spot3 = PO_SPAWNHURT_TYPE; - for (unsigned int i = 0; i < MapThingsConverted.Size(); ++i) { - if (MapThingsConverted[i].type == spot1 || MapThingsConverted[i].type == spot2 || - MapThingsConverted[i].type == spot3 || MapThingsConverted[i].type == anchor) + FDoomEdEntry *mentry = DoomEdMap.CheckKey(MapThingsConverted[i].type); + 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 (MapThingsConverted[i].type == anchor) + if (mentry->Special == SMT_POLYANCHOR) { anchors.Push (newvert); } diff --git a/src/po_man.cpp b/src/po_man.cpp index 4a3345d5b..9158a7027 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 != PO_SPAWN_TYPE) ? 3 : 0; - po->bHurtOnTouch = (type == PO_SPAWNHURT_TYPE); + 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 != PO_SPAWN_TYPE) ? 3 : 0; - po->bHurtOnTouch = (type == PO_SPAWNHURT_TYPE); + 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,9 +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 == PO_SPAWN_TYPE || - polyspawn->type == PO_SPAWNCRUSH_TYPE || - polyspawn->type == PO_SPAWNHURT_TYPE) + if (polyspawn->type >= SMT_POLYSPAWN && polyspawn->type <= SMT_POLYSPAWNHURT) { // Polyobj StartSpot Pt. polyobjs[polyIndex].StartSpot.x = polyspawn->x; @@ -1778,7 +1776,7 @@ void PO_Init (void) for (polyspawn = polyspawns; polyspawn;) { polyspawns_t *next = polyspawn->next; - if (polyspawn->type == PO_ANCHOR_TYPE) + if (polyspawn->type == SMT_POLYANCHOR) { // Polyobj Anchor Pt. TranslateToStartSpot (polyspawn->angle, polyspawn->x, polyspawn->y); diff --git a/wadsrc/static/mapinfo/common.txt b/wadsrc/static/mapinfo/common.txt index d2aa234c6..7202a6265 100644 --- a/wadsrc/static/mapinfo/common.txt +++ b/wadsrc/static/mapinfo/common.txt @@ -6,10 +6,26 @@ Gameinfo DoomEdNums { - 0 = Unknown - 14 = TeleportDest + 0 = Unknown + 1 = "$Player1Start" + 2 = "$Player2Start" + 3 = "$Player3Start" + 4 = "$Player4Start" + 11 = "$DeathmatchStart" + 14 = TeleportDest 118 = ZBridge 888 = MBFHelperDog + 1400 = "$SSeqOverride", 0 + 1401 = "$SSeqOverride", 1 + 1402 = "$SSeqOverride", 2 + 1403 = "$SSeqOverride", 3 + 1404 = "$SSeqOverride", 4 + 1405 = "$SSeqOverride", 5 + 1406 = "$SSeqOverride", 6 + 1407 = "$SSeqOverride", 7 + 1408 = "$SSeqOverride", 8 + 1409 = "$SSeqOverride", 9 + 1411 = "$SSeqOverride" 5001 = PointPusher 5002 = PointPuller 5004 = FS_Mapspot @@ -53,6 +69,10 @@ DoomEdNums 9082 = SectorSilencer 9083 = SkyCamCompat 9200 = Decal + 9300 = "$PolyAnchor" + 9301 = "$PolySpawn" + 9302 = "$PolySpawnCrush" + 9303 = "$PolySpawnHurt" 9982 = SecActEyesAboveC 9983 = SecActEyesBelowC 9988 = CustomSprite @@ -67,9 +87,137 @@ DoomEdNums 9997 = SecActExit 9998 = SecActEnter 9999 = SecActHitFloor + 14001 = AmbientSound, 1 + 14002 = AmbientSound, 2 + 14003 = AmbientSound, 3 + 14004 = AmbientSound, 4 + 14005 = AmbientSound, 5 + 14006 = AmbientSound, 6 + 14007 = AmbientSound, 7 + 14008 = AmbientSound, 8 + 14009 = AmbientSound, 9 + 14010 = AmbientSound, 10 + 14011 = AmbientSound, 11 + 14012 = AmbientSound, 12 + 14013 = AmbientSound, 13 + 14014 = AmbientSound, 14 + 14015 = AmbientSound, 15 + 14016 = AmbientSound, 16 + 14017 = AmbientSound, 17 + 14018 = AmbientSound, 18 + 14019 = AmbientSound, 19 + 14020 = AmbientSound, 20 + 14021 = AmbientSound, 21 + 14022 = AmbientSound, 22 + 14023 = AmbientSound, 23 + 14024 = AmbientSound, 24 + 14025 = AmbientSound, 25 + 14026 = AmbientSound, 26 + 14027 = AmbientSound, 27 + 14028 = AmbientSound, 28 + 14029 = AmbientSound, 29 + 14030 = AmbientSound, 30 + 14031 = AmbientSound, 31 + 14032 = AmbientSound, 32 + 14033 = AmbientSound, 33 + 14034 = AmbientSound, 34 + 14035 = AmbientSound, 35 + 14036 = AmbientSound, 36 + 14037 = AmbientSound, 37 + 14038 = AmbientSound, 38 + 14039 = AmbientSound, 39 + 14040 = AmbientSound, 40 + 14041 = AmbientSound, 41 + 14042 = AmbientSound, 42 + 14043 = AmbientSound, 43 + 14044 = AmbientSound, 44 + 14045 = AmbientSound, 45 + 14046 = AmbientSound, 46 + 14047 = AmbientSound, 47 + 14048 = AmbientSound, 48 + 14049 = AmbientSound, 49 + 14050 = AmbientSound, 50 + 14051 = AmbientSound, 51 + 14052 = AmbientSound, 52 + 14053 = AmbientSound, 53 + 14054 = AmbientSound, 54 + 14055 = AmbientSound, 55 + 14056 = AmbientSound, 56 + 14057 = AmbientSound, 57 + 14058 = AmbientSound, 58 + 14059 = AmbientSound, 59 + 14060 = AmbientSound, 60 + 14061 = AmbientSound, 61 + 14062 = AmbientSound, 62 + 14063 = AmbientSound, 63 + 14064 = AmbientSound, 64 14065 = AmbientSound 14066 = SoundSequence 14067 = AmbientSoundNoGravity + 14101 = MusicChanger, 1 + 14102 = MusicChanger, 2 + 14103 = MusicChanger, 3 + 14104 = MusicChanger, 4 + 14105 = MusicChanger, 5 + 14106 = MusicChanger, 6 + 14107 = MusicChanger, 7 + 14108 = MusicChanger, 8 + 14109 = MusicChanger, 9 + 14110 = MusicChanger, 10 + 14111 = MusicChanger, 11 + 14112 = MusicChanger, 12 + 14113 = MusicChanger, 13 + 14114 = MusicChanger, 14 + 14115 = MusicChanger, 15 + 14116 = MusicChanger, 16 + 14117 = MusicChanger, 17 + 14118 = MusicChanger, 18 + 14119 = MusicChanger, 19 + 14120 = MusicChanger, 20 + 14121 = MusicChanger, 21 + 14122 = MusicChanger, 22 + 14123 = MusicChanger, 23 + 14124 = MusicChanger, 24 + 14125 = MusicChanger, 25 + 14126 = MusicChanger, 26 + 14127 = MusicChanger, 27 + 14128 = MusicChanger, 28 + 14129 = MusicChanger, 29 + 14130 = MusicChanger, 30 + 14131 = MusicChanger, 31 + 14132 = MusicChanger, 32 + 14133 = MusicChanger, 33 + 14134 = MusicChanger, 34 + 14135 = MusicChanger, 35 + 14136 = MusicChanger, 36 + 14137 = MusicChanger, 37 + 14138 = MusicChanger, 38 + 14139 = MusicChanger, 39 + 14140 = MusicChanger, 40 + 14141 = MusicChanger, 41 + 14142 = MusicChanger, 42 + 14143 = MusicChanger, 43 + 14144 = MusicChanger, 44 + 14145 = MusicChanger, 45 + 14146 = MusicChanger, 46 + 14147 = MusicChanger, 47 + 14148 = MusicChanger, 48 + 14149 = MusicChanger, 49 + 14150 = MusicChanger, 50 + 14151 = MusicChanger, 51 + 14152 = MusicChanger, 52 + 14153 = MusicChanger, 53 + 14154 = MusicChanger, 54 + 14155 = MusicChanger, 55 + 14156 = MusicChanger, 56 + 14157 = MusicChanger, 57 + 14158 = MusicChanger, 58 + 14159 = MusicChanger, 59 + 14160 = MusicChanger, 60 + 14161 = MusicChanger, 61 + 14162 = MusicChanger, 62 + 14163 = MusicChanger, 63 + 14164 = MusicChanger, 64 14165 = MusicChanger 32000 = DoomBuilderCamera } diff --git a/wadsrc/static/mapinfo/doomcommon.txt b/wadsrc/static/mapinfo/doomcommon.txt index 00ce910f1..8138c905d 100644 --- a/wadsrc/static/mapinfo/doomcommon.txt +++ b/wadsrc/static/mapinfo/doomcommon.txt @@ -42,7 +42,6 @@ gameinfo defaultrespawntime = 12 defaultdropstyle = 1 endoom = "ENDOOM" - player5start = 4001 pickupcolor = "d7 ba 45" quitmessages = "$QUITMSG", "$QUITMSG1", "$QUITMSG2", "$QUITMSG3", "$QUITMSG4", "$QUITMSG5", "$QUITMSG6", "$QUITMSG7", "$QUITMSG8", "$QUITMSG9", "$QUITMSG10", "$QUITMSG11", "$QUITMSG12", "$QUITMSG13", "$QUITMSG14" diff --git a/wadsrc/static/mapinfo/doomitems.txt b/wadsrc/static/mapinfo/doomitems.txt index fc86f659c..95f02cdb1 100644 --- a/wadsrc/static/mapinfo/doomitems.txt +++ b/wadsrc/static/mapinfo/doomitems.txt @@ -119,6 +119,10 @@ DoomEdNums 3004 = Zombieman 3005 = Cacodemon 3006 = LostSoul + 4001 = "$Player5Start" + 4002 = "$Player6Start" + 4003 = "$Player7Start" + 4004 = "$Player8Start" 5010 = Pistol 5050 = Stalagmite 9050 = StealthArachnotron diff --git a/wadsrc/static/mapinfo/heretic.txt b/wadsrc/static/mapinfo/heretic.txt index 61dccbacc..a4b8c3ece 100644 --- a/wadsrc/static/mapinfo/heretic.txt +++ b/wadsrc/static/mapinfo/heretic.txt @@ -41,7 +41,6 @@ gameinfo defaultrespawntime = 12 defaultdropstyle = 1 endoom = "ENDTEXT" - player5start = 4001 pickupcolor = "d7 ba 45" quitmessages = "$*RAVENQUITMSG" menufontcolor_title = "UNTRANSLATED" @@ -159,6 +158,10 @@ DoomEdNums 2004 = SkullRod 2005 = Gauntlets 2035 = Pod + 4001 = "$Player5Start" + 4002 = "$Player6Start" + 4003 = "$Player7Start" + 4004 = "$Player8Start" 9042 = GoldWand } diff --git a/wadsrc/static/mapinfo/hexen.txt b/wadsrc/static/mapinfo/hexen.txt index 90d7398d9..2788947a5 100644 --- a/wadsrc/static/mapinfo/hexen.txt +++ b/wadsrc/static/mapinfo/hexen.txt @@ -39,7 +39,6 @@ gameinfo definventorymaxamount = 25 defaultrespawntime = 12 defaultdropstyle = 1 - player5start = 9100 pickupcolor = "d7 ba 45" quitmessages = "$*RAVENQUITMSG" menufontcolor_title = "UNTRANSLATED" @@ -181,6 +180,9 @@ DoomEdNums 140 = TeleSmoke 254 = Dragon 1410 = SoundWindHexen + 3000 = "$PolyAnchor" + 3001 = "$PolySpawn" + 3002 = "$PolySpawnCrush" 8000 = ArtiPoisonBag 8002 = ArtiSpeedBoots 8003 = ArtiBoostMana @@ -269,6 +271,10 @@ DoomEdNums 9019 = PuzzGear2 9020 = PuzzGear3 9021 = PuzzGear4 + 9100 = "$Player5Start" + 9101 = "$Player6Start" + 9102 = "$Player7Start" + 9103 = "$Player8Start" 10000 = FogSpawner 10001 = FogPatchSmall 10002 = FogPatchMedium diff --git a/wadsrc/static/mapinfo/strife.txt b/wadsrc/static/mapinfo/strife.txt index d4b61a01b..6d00d1214 100644 --- a/wadsrc/static/mapinfo/strife.txt +++ b/wadsrc/static/mapinfo/strife.txt @@ -68,6 +68,10 @@ gameinfo DoomEdNums { + 5 = "$Player5Start" + 6 = "$Player6Start" + 7 = "$Player7Start" + 8 = "$Player8Start" 9 = Rebel1 10 = TeleporterBeacon 12 = Loremaster @@ -170,6 +174,16 @@ DoomEdNums 115 = PoisonBolts 116 = WeaponSmith 117 = SurgeryCrab + 118 = "$Player1Start", 1 + 119 = "$Player1Start", 2 + 120 = "$Player1Start", 3 + 121 = "$Player1Start", 4 + 122 = "$Player1Start", 5 + 123 = "$Player1Start", 6 + 124 = "$Player1Start", 7 + 125 = "$Player1Start", 8 + 126 = "$Player1Start", 9 + 127 = "$Player1Start", 10 128 = EntityBoss 129 = AlienSpectre1 130 = Peasant2 From 4f7ec3ad891d556c0d3f680e209a120ed38e9cdb Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 3 Apr 2015 22:23:42 +0200 Subject: [PATCH 054/144] - print proper information about non-actor mapthings. --- src/g_doomedmap.cpp | 15 +++++++++++++-- src/gi.cpp | 1 - src/gi.h | 1 - src/p_buildmap.cpp | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/g_doomedmap.cpp b/src/g_doomedmap.cpp index ad61e1bf7..c3e586bc2 100644 --- a/src/g_doomedmap.cpp +++ b/src/g_doomedmap.cpp @@ -113,8 +113,19 @@ CCMD (dumpmapthings) for (unsigned i = 0; i < infos.Size (); ++i) { - Printf ("%6d %s\n", - infos[i]->Key, infos[i]->Value.Type->TypeName.GetChars()); + if (infos[i]->Value.Type != NULL) + { + Printf("%6d %s\n", infos[i]->Key, infos[i]->Value.Type->TypeName.GetChars()); + } + else if (infos[i]->Value.Special > 0) + { + Printf("%6d %s\n", infos[i]->Key, SpecialMapthingNames[infos[i]->Value.Special - 1]); + } + else + { + Printf("%6d none", infos[i]->Key); + } + } } } diff --git a/src/gi.cpp b/src/gi.cpp index b0edf2a04..ac3818870 100644 --- a/src/gi.cpp +++ b/src/gi.cpp @@ -335,7 +335,6 @@ void FMapInfoParser::ParseGameInfo() GAMEINFOKEY_INT(defaultrespawntime, "defaultrespawntime") GAMEINFOKEY_INT(defaultdropstyle, "defaultdropstyle") GAMEINFOKEY_STRING(Endoom, "endoom") - GAMEINFOKEY_INT(player5start, "player5start") GAMEINFOKEY_STRINGARRAY(quitmessages, "addquitmessages", 0, false) GAMEINFOKEY_STRINGARRAY(quitmessages, "quitmessages", 0, true) GAMEINFOKEY_STRING(mTitleColor, "menufontcolor_title") diff --git a/src/gi.h b/src/gi.h index d8d19a14b..490981f77 100644 --- a/src/gi.h +++ b/src/gi.h @@ -153,7 +153,6 @@ struct gameinfo_t int definventorymaxamount; int defaultrespawntime; int defaultdropstyle; - int player5start; DWORD pickupcolor; TArray quitmessages; FName mTitleColor; diff --git a/src/p_buildmap.cpp b/src/p_buildmap.cpp index 2ee2ae83a..c12c79608 100644 --- a/src/p_buildmap.cpp +++ b/src/p_buildmap.cpp @@ -723,7 +723,7 @@ static int LoadSprites (spritetype *sprites, Xsprite *xsprites, int numsprites, if (xsprites[i].Data1 < 4) mapthings[count].type = 1 + xsprites[i].Data1; else - mapthings[count].type = gameinfo.player5start + xsprites[i].Data1 - 4; + mapthings[count].type = 4001 + xsprites[i].Data1 - 4; } else if (xsprites != NULL && sprites[i].lotag == 2) { // Bloodbath start From 2ec8e2c2ac61d30f7f1d666ec58ca0fd37e2e3b0 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 4 Apr 2015 00:39:09 +0200 Subject: [PATCH 055/144] - moved spawn ID definitions to MAPINFO as well and removed all 'Game' directives from DECORATE because editor and spawn numbers are the only thing that required them. --- src/d_main.cpp | 1 + src/g_level.h | 1 + src/g_mapinfo.cpp | 12 ++ src/info.cpp | 2 - src/p_local.h | 1 + src/p_things.cpp | 87 +++++++++++++++ src/thingdef/thingdef_properties.cpp | 2 +- wadsrc/static/actors/chex/chexammo.txt | 9 -- wadsrc/static/actors/chex/chexdecorations.txt | 20 ---- wadsrc/static/actors/chex/chexitems.txt | 10 -- wadsrc/static/actors/chex/chexkeys.txt | 3 - wadsrc/static/actors/chex/chexmonsters.txt | 6 - wadsrc/static/actors/chex/chexweapons.txt | 9 -- wadsrc/static/actors/doom/arachnotron.txt | 4 - wadsrc/static/actors/doom/archvile.txt | 4 - wadsrc/static/actors/doom/bossbrain.txt | 3 - wadsrc/static/actors/doom/bruiser.txt | 6 - wadsrc/static/actors/doom/cacodemon.txt | 4 - wadsrc/static/actors/doom/cyberdemon.txt | 2 - wadsrc/static/actors/doom/deadthings.txt | 10 -- wadsrc/static/actors/doom/demon.txt | 4 - wadsrc/static/actors/doom/doomammo.txt | 18 --- wadsrc/static/actors/doom/doomarmor.txt | 6 - wadsrc/static/actors/doom/doomartifacts.txt | 16 --- wadsrc/static/actors/doom/doomdecorations.txt | 53 --------- wadsrc/static/actors/doom/doomhealth.txt | 6 - wadsrc/static/actors/doom/doomimp.txt | 4 - wadsrc/static/actors/doom/doomkeys.txt | 12 -- wadsrc/static/actors/doom/doommisc.txt | 6 - wadsrc/static/actors/doom/doomweapons.txt | 24 ---- wadsrc/static/actors/doom/fatso.txt | 4 - wadsrc/static/actors/doom/keen.txt | 1 - wadsrc/static/actors/doom/lostsoul.txt | 2 - wadsrc/static/actors/doom/painelemental.txt | 2 - wadsrc/static/actors/doom/possessed.txt | 8 -- wadsrc/static/actors/doom/revenant.txt | 4 - wadsrc/static/actors/doom/scriptedmarine.txt | 13 --- wadsrc/static/actors/doom/spidermaster.txt | 2 - wadsrc/static/actors/doom/stealthmonsters.txt | 24 ---- wadsrc/static/actors/heretic/beast.txt | 4 - wadsrc/static/actors/heretic/chicken.txt | 4 - wadsrc/static/actors/heretic/clink.txt | 2 - wadsrc/static/actors/heretic/dsparil.txt | 12 -- wadsrc/static/actors/heretic/hereticammo.txt | 26 ----- wadsrc/static/actors/heretic/hereticarmor.txt | 4 - .../actors/heretic/hereticartifacts.txt | 8 -- .../actors/heretic/hereticdecorations.txt | 18 --- wadsrc/static/actors/heretic/hereticimp.txt | 6 - wadsrc/static/actors/heretic/heretickeys.txt | 9 -- wadsrc/static/actors/heretic/hereticmisc.txt | 14 --- wadsrc/static/actors/heretic/hereticweaps.txt | 47 -------- wadsrc/static/actors/heretic/ironlich.txt | 6 - wadsrc/static/actors/heretic/knight.txt | 8 -- wadsrc/static/actors/heretic/mummy.txt | 10 -- wadsrc/static/actors/heretic/snake.txt | 6 - wadsrc/static/actors/heretic/wizard.txt | 4 - wadsrc/static/actors/hexen/bats.txt | 1 - wadsrc/static/actors/hexen/bishop.txt | 5 - wadsrc/static/actors/hexen/blastradius.txt | 2 - wadsrc/static/actors/hexen/boostarmor.txt | 2 - wadsrc/static/actors/hexen/centaur.txt | 6 - wadsrc/static/actors/hexen/clericboss.txt | 1 - wadsrc/static/actors/hexen/clericflame.txt | 1 - wadsrc/static/actors/hexen/clericholy.txt | 7 -- wadsrc/static/actors/hexen/clericmace.txt | 1 - wadsrc/static/actors/hexen/clericstaff.txt | 2 - wadsrc/static/actors/hexen/demons.txt | 7 -- wadsrc/static/actors/hexen/dragon.txt | 1 - wadsrc/static/actors/hexen/ettin.txt | 4 - wadsrc/static/actors/hexen/fighteraxe.txt | 2 - wadsrc/static/actors/hexen/fighterboss.txt | 1 - wadsrc/static/actors/hexen/fighterfist.txt | 1 - wadsrc/static/actors/hexen/fighterhammer.txt | 2 - wadsrc/static/actors/hexen/fighterplayer.txt | 1 - wadsrc/static/actors/hexen/fighterquietus.txt | 7 -- wadsrc/static/actors/hexen/firedemon.txt | 8 -- wadsrc/static/actors/hexen/flame.txt | 12 -- wadsrc/static/actors/hexen/flechette.txt | 5 - wadsrc/static/actors/hexen/flies.txt | 1 - wadsrc/static/actors/hexen/fog.txt | 4 - wadsrc/static/actors/hexen/healingradius.txt | 1 - wadsrc/static/actors/hexen/heresiarch.txt | 1 - wadsrc/static/actors/hexen/hexenarmor.txt | 8 -- .../static/actors/hexen/hexendecorations.txt | 103 ------------------ wadsrc/static/actors/hexen/hexenkeys.txt | 21 ---- .../static/actors/hexen/hexenspecialdecs.txt | 25 ----- wadsrc/static/actors/hexen/iceguy.txt | 2 - wadsrc/static/actors/hexen/korax.txt | 1 - wadsrc/static/actors/hexen/mageboss.txt | 1 - wadsrc/static/actors/hexen/magecone.txt | 4 - wadsrc/static/actors/hexen/magelightning.txt | 1 - wadsrc/static/actors/hexen/magestaff.txt | 7 -- wadsrc/static/actors/hexen/magewand.txt | 1 - wadsrc/static/actors/hexen/mana.txt | 8 -- wadsrc/static/actors/hexen/puzzleitems.txt | 26 ----- .../static/actors/hexen/scriptprojectiles.txt | 12 -- wadsrc/static/actors/hexen/serpent.txt | 4 - wadsrc/static/actors/hexen/speedboots.txt | 2 - wadsrc/static/actors/hexen/spike.txt | 4 - wadsrc/static/actors/hexen/summon.txt | 4 - wadsrc/static/actors/hexen/teleportother.txt | 2 - wadsrc/static/actors/hexen/wraith.txt | 10 -- wadsrc/static/actors/raven/artiegg.txt | 8 -- wadsrc/static/actors/raven/artitele.txt | 2 - wadsrc/static/actors/raven/minotaur.txt | 1 - wadsrc/static/actors/raven/ravenambient.txt | 6 - wadsrc/static/actors/raven/ravenartifacts.txt | 12 -- wadsrc/static/actors/raven/ravenhealth.txt | 2 - wadsrc/static/actors/shared/blood.txt | 1 - wadsrc/static/actors/shared/bridge.txt | 4 - wadsrc/static/actors/shared/debris.txt | 19 ---- wadsrc/static/actors/shared/sharedmisc.txt | 2 - wadsrc/static/actors/shared/soundsequence.txt | 10 -- wadsrc/static/actors/strife/acolyte.txt | 10 -- wadsrc/static/actors/strife/alienspectres.txt | 5 - wadsrc/static/actors/strife/beggars.txt | 5 - wadsrc/static/actors/strife/coin.txt | 4 - wadsrc/static/actors/strife/crusader.txt | 2 - wadsrc/static/actors/strife/entityboss.txt | 3 - wadsrc/static/actors/strife/inquisitor.txt | 1 - wadsrc/static/actors/strife/loremaster.txt | 1 - wadsrc/static/actors/strife/macil.txt | 2 - wadsrc/static/actors/strife/merchants.txt | 4 - wadsrc/static/actors/strife/oracle.txt | 1 - wadsrc/static/actors/strife/peasants.txt | 22 ---- wadsrc/static/actors/strife/programmer.txt | 1 - wadsrc/static/actors/strife/ratbuddy.txt | 1 - wadsrc/static/actors/strife/reaver.txt | 1 - wadsrc/static/actors/strife/rebels.txt | 7 -- wadsrc/static/actors/strife/sentinel.txt | 1 - wadsrc/static/actors/strife/sigil.txt | 6 - wadsrc/static/actors/strife/stalker.txt | 1 - wadsrc/static/actors/strife/strifeammo.txt | 18 --- wadsrc/static/actors/strife/strifearmor.txt | 4 - wadsrc/static/actors/strife/strifebishop.txt | 1 - wadsrc/static/actors/strife/strifeitems.txt | 25 ----- wadsrc/static/actors/strife/strifekeys.txt | 28 ----- wadsrc/static/actors/strife/strifestuff.txt | 102 ----------------- wadsrc/static/actors/strife/strifeweapons.txt | 14 --- wadsrc/static/actors/strife/templar.txt | 1 - .../static/actors/strife/thingstoblowup.txt | 3 - wadsrc/static/actors/strife/zombie.txt | 2 - wadsrc/static/mapinfo/common.txt | 24 ++++ wadsrc/static/mapinfo/doomcommon.txt | 91 ++++++++++++++++ wadsrc/static/mapinfo/heretic.txt | 94 ++++++++++++++++ wadsrc/static/mapinfo/hexen.txt | 95 ++++++++++++++++ wadsrc/static/mapinfo/strife.txt | 16 +++ 147 files changed, 423 insertions(+), 1165 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 6b5399c00..737622de3 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2441,6 +2441,7 @@ void D_DoomMain (void) FinishDehPatch(); InitActorNumsFromMapinfo(); + InitSpawnablesFromMapinfo(); FActorInfo::StaticSetActorNums (); //Added by MC: diff --git a/src/g_level.h b/src/g_level.h index 50a661db9..27fc41fdb 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -105,6 +105,7 @@ struct FMapInfoParser void ParseIntermissionAction(FIntermissionDescriptor *Desc); void ParseIntermission(); void ParseDoomEdNums(); + void ParseSpawnNums(); void ParseAMColors(bool); FName CheckEndSequence(); FName ParseEndGame(); diff --git a/src/g_mapinfo.cpp b/src/g_mapinfo.cpp index a99056eeb..93e365941 100644 --- a/src/g_mapinfo.cpp +++ b/src/g_mapinfo.cpp @@ -1888,6 +1888,18 @@ void FMapInfoParser::ParseMapInfo (int lump, level_info_t &gamedefaults, level_i sc.ScriptError("doomednums definitions not supported with old MAPINFO syntax"); } } + else if (sc.Compare("spawnnums")) + { + if (format_type != FMT_Old) + { + format_type = FMT_New; + ParseSpawnNums(); + } + else + { + sc.ScriptError("spawnnums definitions not supported with old MAPINFO syntax"); + } + } else if (sc.Compare("automap") || sc.Compare("automap_overlay")) { if (format_type != FMT_Old) diff --git a/src/info.cpp b/src/info.cpp index 7677ac4a7..bba646ee5 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -141,8 +141,6 @@ void FActorInfo::StaticInit () void FActorInfo::StaticSetActorNums () { - SpawnableThings.Clear(); - for (unsigned int i = 0; i < PClass::m_RuntimeActors.Size(); ++i) { PClass::m_RuntimeActors[i]->ActorInfo->RegisterIDs (); diff --git a/src/p_local.h b/src/p_local.h index 7e9d810d8..07309a827 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -174,6 +174,7 @@ void P_RemoveThing(AActor * actor); bool P_Thing_Raise(AActor *thing, AActor *raiser); bool P_Thing_CanRaise(AActor *thing); const PClass *P_GetSpawnableType(int spawnnum); +void InitSpawnablesFromMapinfo(); // // P_MAPUTL diff --git a/src/p_things.cpp b/src/p_things.cpp index a8a34c384..423ecd042 100644 --- a/src/p_things.cpp +++ b/src/p_things.cpp @@ -45,10 +45,23 @@ #include "gi.h" #include "templates.h" #include "g_level.h" +#include "v_text.h" +#include "i_system.h" // Set of spawnable things for the Thing_Spawn and Thing_Projectile specials. TMap SpawnableThings; +struct MapinfoSpawnItem +{ + FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet. + // These are for error reporting. We must store the file information because it's no longer available when these items get resolved. + FString filename; + int linenum; +}; + +typedef TMap SpawnMap; +static SpawnMap SpawnablesFromMapinfo; + static FRandom pr_leadtarget ("LeadTarget"); bool P_Thing_Spawn (int tid, AActor *source, int type, angle_t angle, bool fog, int newtid) @@ -559,3 +572,77 @@ CCMD (dumpspawnables) delete[] allpairs; } +void FMapInfoParser::ParseSpawnNums() +{ + TMap defined; + int error = 0; + + MapinfoSpawnItem editem; + + editem.filename = sc.ScriptName; + + ParseOpenBrace(); + while (true) + { + if (sc.CheckString("}")) return; + else if (sc.CheckNumber()) + { + int ednum = sc.Number; + sc.MustGetStringName("="); + sc.MustGetString(); + + bool *def = defined.CheckKey(ednum); + if (def != NULL) + { + sc.ScriptMessage("Spawn Number %d defined more than once", ednum); + error++; + } + else if (ednum < 0) + { + sc.ScriptMessage("Spawn Number must be positive, got %d", ednum); + error++; + } + defined[ednum] = true; + editem.classname = sc.String; + + SpawnablesFromMapinfo.Insert(ednum, editem); + } + else + { + sc.ScriptError("Number expected"); + } + } + if (error > 0) + { + sc.ScriptError("%d errors encountered in SpawnNum definition"); + } +} + +void InitSpawnablesFromMapinfo() +{ + SpawnableThings.Clear(); + SpawnMap::Iterator it(SpawnablesFromMapinfo); + SpawnMap::Pair *pair; + int error = 0; + + while (it.NextPair(pair)) + { + const PClass *cls = NULL; + if (pair->Value.classname != NAME_None) + { + cls = PClass::FindClass(pair->Value.classname); + if (cls == NULL) + { + Printf(TEXTCOLOR_RED "Script error, \"%s\" line %d:\nUnknown actor class %s\n", + pair->Value.filename.GetChars(), pair->Value.linenum, pair->Value.classname.GetChars()); + error++; + } + } + SpawnableThings.Insert(pair->Key, cls); + } + if (error > 0) + { + I_Error("%d unknown actor classes found", error); + } + SpawnablesFromMapinfo.Clear(); // we do not need this any longer +} diff --git a/src/thingdef/thingdef_properties.cpp b/src/thingdef/thingdef_properties.cpp index 33066828c..4ddf951ac 100644 --- a/src/thingdef/thingdef_properties.cpp +++ b/src/thingdef/thingdef_properties.cpp @@ -976,7 +976,7 @@ DEFINE_PROPERTY(translation, L, Actor) if (type == 0) { PROP_INT_PARM(trans, 1); - int max = (gameinfo.gametype==GAME_Strife || (info->GameFilter&GAME_Strife)) ? 6:2; + int max = 6;// (gameinfo.gametype == GAME_Strife || (info->GameFilter&GAME_Strife)) ? 6 : 2; if (trans < 0 || trans > max) { I_Error ("Translation must be in the range [0,%d]", max); diff --git a/wadsrc/static/actors/chex/chexammo.txt b/wadsrc/static/actors/chex/chexammo.txt index 57a4ca285..27c5d419b 100644 --- a/wadsrc/static/actors/chex/chexammo.txt +++ b/wadsrc/static/actors/chex/chexammo.txt @@ -4,13 +4,11 @@ actor MiniZorchRecharge : Clip { - Game Chex inventory.pickupmessage "$GOTZORCHRECHARGE" } actor MiniZorchPack : Clip { - Game Chex Inventory.PickupMessage "$GOTMINIZORCHPACK" Inventory.Amount 50 States @@ -25,13 +23,11 @@ actor MiniZorchPack : Clip actor LargeZorchRecharge : Shell { - Game Chex inventory.pickupmessage "$GOTLARGEZORCHERRECHARGE" } actor LargeZorchPack : Shell { - Game Chex Inventory.PickupMessage "$GOTLARGEZORCHERPACK" Inventory.Amount 20 States @@ -46,13 +42,11 @@ actor LargeZorchPack : Shell actor PropulsorZorch : RocketAmmo { - Game Chex inventory.pickupmessage "$GOTPROPULSORRECHARGE" } actor PropulsorZorchPack : RocketAmmo { - Game Chex Inventory.PickupMessage "$GOTPROPULSORPACK" Inventory.Amount 5 States @@ -67,14 +61,11 @@ actor PropulsorZorchPack : RocketAmmo actor PhasingZorch : Cell { - Game Chex inventory.pickupmessage "$GOTPHASINGZORCHERRECHARGE" } actor PhasingZorchPack : Cell { - Game Chex - SpawnID 142 Inventory.PickupMessage "$GOTPHASINGZORCHERPACK" Inventory.Amount 100 States diff --git a/wadsrc/static/actors/chex/chexdecorations.txt b/wadsrc/static/actors/chex/chexdecorations.txt index 398e08836..6515061c5 100644 --- a/wadsrc/static/actors/chex/chexdecorations.txt +++ b/wadsrc/static/actors/chex/chexdecorations.txt @@ -4,19 +4,16 @@ actor ChexCivilian1 : GreenTorch { - game Chex height 54 } actor ChexCivilian2 : ShortGreenTorch { - game Chex height 54 } actor ChexCivilian3 : ShortRedTorch { - game Chex height 48 } @@ -24,13 +21,11 @@ actor ChexCivilian3 : ShortRedTorch actor ChexLandingLight : Column { - game Chex height 35 } actor ChexSpaceship : TechPillar { - game Chex height 52 } @@ -38,37 +33,31 @@ actor ChexSpaceship : TechPillar actor ChexAppleTree : Stalagtite { - game Chex height 92 } actor ChexBananaTree : BigTree { - game Chex height 108 } actor ChexOrangeTree : TorchTree { - game Chex height 92 } actor ChexSubmergedPlant : ShortGreenColumn { - game Chex height 42 } actor ChexTallFlower : HeadsOnAStick { - game Chex height 25 } actor ChexTallFlower2 : DeadStick { - game Chex height 25 } @@ -76,7 +65,6 @@ actor ChexTallFlower2 : DeadStick actor ChexSlimeFountain : BlueTorch { - game Chex height 48 States { @@ -90,13 +78,11 @@ actor ChexSlimeFountain : BlueTorch actor ChexCavernColumn : TallRedColumn { - game Chex height 128 } actor ChexCavernStalagmite : TallGreenColumn { - game Chex height 60 } @@ -104,37 +90,31 @@ actor ChexCavernStalagmite : TallGreenColumn actor ChexChemicalBurner : EvilEye { - game Chex height 25 } actor ChexChemicalFlask : Candlestick { - game Chex renderstyle translucent alpha 0.75 } actor ChexFlagOnPole : SkullColumn { - game Chex height 128 } actor ChexGasTank : Candelabra { - game Chex height 36 } actor ChexLightColumn : ShortBlueTorch { - game Chex height 86 } actor ChexMineCart : ShortRedColumn { - game Chex height 30 } diff --git a/wadsrc/static/actors/chex/chexitems.txt b/wadsrc/static/actors/chex/chexitems.txt index b26065395..431728e07 100644 --- a/wadsrc/static/actors/chex/chexitems.txt +++ b/wadsrc/static/actors/chex/chexitems.txt @@ -5,26 +5,22 @@ actor GlassOfWater : HealthBonus { - game Chex inventory.pickupmessage "$GOTWATER" } actor BowlOfFruit : Stimpack { - game Chex inventory.pickupmessage "$GOTFRUIT" } actor BowlOfVegetables : Medikit { - game Chex inventory.pickupmessage "$GOTVEGETABLES" health.lowmessage 25, "$GOTVEGETABLESNEED" } actor SuperchargeBreakfast : Soulsphere { - game Chex inventory.pickupmessage "$GOTBREAKFAST" } @@ -32,19 +28,16 @@ actor SuperchargeBreakfast : Soulsphere actor SlimeRepellent : ArmorBonus { - game Chex inventory.pickupmessage "$GOTREPELLENT" } actor ChexArmor : GreenArmor { - game Chex inventory.pickupmessage "$GOTCHEXARMOR" } actor SuperChexArmor : BlueArmor { - game Chex inventory.pickupmessage "$GOTSUPERCHEXARMOR" } @@ -52,18 +45,15 @@ actor SuperChexArmor : BlueArmor actor ComputerAreaMap : Allmap { - game Chex inventory.pickupmessage "$GOTCHEXMAP" } actor SlimeProofSuit : RadSuit { - game Chex inventory.pickupmessage "$GOTSLIMESUIT" } actor Zorchpack : Backpack { - game Chex inventory.pickupmessage "$GOTZORCHPACK" } diff --git a/wadsrc/static/actors/chex/chexkeys.txt b/wadsrc/static/actors/chex/chexkeys.txt index 6142f833c..0d5156392 100644 --- a/wadsrc/static/actors/chex/chexkeys.txt +++ b/wadsrc/static/actors/chex/chexkeys.txt @@ -2,18 +2,15 @@ actor ChexBlueCard : BlueCard { - Game Chex inventory.pickupmessage "$GOTCBLUEKEY" } actor ChexYellowCard : YellowCard { - Game Chex inventory.pickupmessage "$GOTCYELLOWKEY" } actor ChexRedCard : RedCard { - Game Chex inventory.pickupmessage "$GOTCREDKEY" } diff --git a/wadsrc/static/actors/chex/chexmonsters.txt b/wadsrc/static/actors/chex/chexmonsters.txt index eae27f6a1..0ee3c34c5 100644 --- a/wadsrc/static/actors/chex/chexmonsters.txt +++ b/wadsrc/static/actors/chex/chexmonsters.txt @@ -7,7 +7,6 @@ actor FlemoidusCommonus : ZombieMan { - Game Chex DropItem "" Obituary "$OB_COMMONUS" States @@ -27,7 +26,6 @@ actor FlemoidusCommonus : ZombieMan actor FlemoidusBipedicus : ShotgunGuy { - Game Chex DropItem "" Obituary "$OB_BIPEDICUS" States @@ -47,7 +45,6 @@ actor FlemoidusBipedicus : ShotgunGuy actor ArmoredFlemoidusBipedicus : DoomImp { - Game Chex Obituary "$OB_BIPEDICUS2" HitObituary "$OB_BIPEDICUS2" } @@ -60,7 +57,6 @@ actor ArmoredFlemoidusBipedicus : DoomImp actor FlemoidusCycloptisCommonus : Demon { - Game Chex Obituary "$OB_CYCLOPTIS" } @@ -72,7 +68,6 @@ actor FlemoidusCycloptisCommonus : Demon actor Flembrane : BaronOfHell { - Game Chex radius 44 height 100 speed 0 @@ -90,6 +85,5 @@ actor Flembrane : BaronOfHell actor ChexSoul : LostSoul { - Game Chex height 0 } diff --git a/wadsrc/static/actors/chex/chexweapons.txt b/wadsrc/static/actors/chex/chexweapons.txt index bb00e255c..755e7ad45 100644 --- a/wadsrc/static/actors/chex/chexweapons.txt +++ b/wadsrc/static/actors/chex/chexweapons.txt @@ -2,14 +2,12 @@ actor Bootspoon : Fist { - game Chex obituary "$OB_MPSPOON" Tag "$TAG_SPOON" } actor SuperBootspork : Chainsaw { - game Chex obituary "$OB_MPBOOTSPORK" Inventory.PickupMessage "$GOTSUPERBOOTSPORK" Tag "$TAG_SPORK" @@ -17,7 +15,6 @@ actor SuperBootspork : Chainsaw actor MiniZorcher : Pistol { - game Chex obituary "$OB_MPZORCH" inventory.pickupmessage "$GOTMINIZORCHER" Tag "$TAG_MINIZORCHER" @@ -30,7 +27,6 @@ actor MiniZorcher : Pistol actor LargeZorcher : Shotgun { - game Chex obituary "$OB_MPZORCH" inventory.pickupmessage "$GOTLARGEZORCHER" Tag "$TAG_LARGEZORCHER" @@ -38,7 +34,6 @@ actor LargeZorcher : Shotgun actor SuperLargeZorcher : SuperShotgun { - game Chex obituary "$OB_MPMEGAZORCH" inventory.pickupmessage "$GOTSUPERLARGEZORCHER" Tag "$TAG_SUPERLARGEZORCHER" @@ -46,7 +41,6 @@ actor SuperLargeZorcher : SuperShotgun actor RapidZorcher : Chaingun { - game Chex obituary "$OB_MPRAPIDZORCH" inventory.pickupmessage "$GOTRAPIDZORCHER" Tag "$TAG_RAPIDZORCHER" @@ -54,7 +48,6 @@ actor RapidZorcher : Chaingun actor ZorchPropulsor : RocketLauncher { - game Chex obituary "" inventory.pickupmessage "$GOTZORCHPROPULSOR" Tag "$TAG_ZORCHPROPULSOR" @@ -79,7 +72,6 @@ actor PropulsorMissile : Rocket actor PhasingZorcher : PlasmaRifle { - game Chex obituary "" inventory.pickupmessage "$GOTPHASINGZORCHER" Tag "$TAG_PHASINGZORCHER" @@ -109,7 +101,6 @@ actor PhaseZorchMissile : PlasmaBall actor LAZDevice : BFG9000 { - game Chex obituary "" inventory.pickupmessage "$GOTLAZDEVICE" Tag "$TAG_LAZDEVICE" diff --git a/wadsrc/static/actors/doom/arachnotron.txt b/wadsrc/static/actors/doom/arachnotron.txt index 9831e7ea9..16e4ebe55 100644 --- a/wadsrc/static/actors/doom/arachnotron.txt +++ b/wadsrc/static/actors/doom/arachnotron.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR Arachnotron { - Game Doom - SpawnID 6 Health 500 Radius 64 Height 64 @@ -63,8 +61,6 @@ ACTOR Arachnotron //=========================================================================== ACTOR ArachnotronPlasma { - Game Doom - SpawnID 129 Radius 13 Height 8 Speed 25 diff --git a/wadsrc/static/actors/doom/archvile.txt b/wadsrc/static/actors/doom/archvile.txt index ba3a9ca16..29108cda2 100644 --- a/wadsrc/static/actors/doom/archvile.txt +++ b/wadsrc/static/actors/doom/archvile.txt @@ -6,8 +6,6 @@ ACTOR Archvile { - Game Doom - SpawnID 111 Health 700 Radius 20 Height 56 @@ -67,8 +65,6 @@ ACTOR Archvile ACTOR ArchvileFire { - Game Doom - SpawnID 98 +NOBLOCKMAP +NOGRAVITY RenderStyle Add Alpha 1 diff --git a/wadsrc/static/actors/doom/bossbrain.txt b/wadsrc/static/actors/doom/bossbrain.txt index 92b8611f9..999f2da62 100644 --- a/wadsrc/static/actors/doom/bossbrain.txt +++ b/wadsrc/static/actors/doom/bossbrain.txt @@ -7,7 +7,6 @@ ACTOR BossBrain { - Game Doom Health 250 Mass 10000000 PainChance 255 @@ -45,7 +44,6 @@ ACTOR BossBrain ACTOR BossEye { - Game Doom Height 32 +NOBLOCKMAP +NOSECTOR @@ -69,7 +67,6 @@ ACTOR BossEye ACTOR BossTarget : SpecialSpot { - Game Doom Height 32 +NOBLOCKMAP +NOSECTOR diff --git a/wadsrc/static/actors/doom/bruiser.txt b/wadsrc/static/actors/doom/bruiser.txt index 57af9e9a0..0bc4a7f96 100644 --- a/wadsrc/static/actors/doom/bruiser.txt +++ b/wadsrc/static/actors/doom/bruiser.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR BaronOfHell { - Game Doom - SpawnID 3 Health 1000 Radius 24 Height 64 @@ -61,8 +59,6 @@ ACTOR BaronOfHell //=========================================================================== ACTOR HellKnight : BaronOfHell { - Game Doom - SpawnID 113 Health 500 -BOSSDEATH SeeSound "knight/sight" @@ -110,8 +106,6 @@ ACTOR HellKnight : BaronOfHell //=========================================================================== ACTOR BaronBall { - Game Doom - SpawnID 154 Radius 6 Height 16 Speed 15 diff --git a/wadsrc/static/actors/doom/cacodemon.txt b/wadsrc/static/actors/doom/cacodemon.txt index c2feabee0..bf7b8ddf2 100644 --- a/wadsrc/static/actors/doom/cacodemon.txt +++ b/wadsrc/static/actors/doom/cacodemon.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR Cacodemon { - Game Doom - SpawnID 19 Health 400 Radius 31 Height 56 @@ -61,8 +59,6 @@ ACTOR Cacodemon //=========================================================================== ACTOR CacodemonBall { - Game Doom - SpawnID 126 Radius 6 Height 8 Speed 10 diff --git a/wadsrc/static/actors/doom/cyberdemon.txt b/wadsrc/static/actors/doom/cyberdemon.txt index f4fa16ac2..80c1ba2da 100644 --- a/wadsrc/static/actors/doom/cyberdemon.txt +++ b/wadsrc/static/actors/doom/cyberdemon.txt @@ -6,8 +6,6 @@ //=========================================================================== ACTOR Cyberdemon { - Game Doom - SpawnID 114 Health 4000 Radius 40 Height 110 diff --git a/wadsrc/static/actors/doom/deadthings.txt b/wadsrc/static/actors/doom/deadthings.txt index 74d4184cc..5b9835e79 100644 --- a/wadsrc/static/actors/doom/deadthings.txt +++ b/wadsrc/static/actors/doom/deadthings.txt @@ -2,8 +2,6 @@ actor GibbedMarine { - Game Doom - SpawnID 145 States { Spawn: @@ -16,14 +14,12 @@ actor GibbedMarine actor GibbedMarineExtra : GibbedMarine { - Game Doom } // Dead marine ------------------------------------------------------------- actor DeadMarine { - Game Doom States { Spawn: @@ -42,7 +38,6 @@ actor DeadMarine actor DeadZombieMan : ZombieMan { Skip_Super - Game Doom DropItem None States { @@ -56,7 +51,6 @@ actor DeadZombieMan : ZombieMan actor DeadShotgunGuy : ShotgunGuy { Skip_Super - Game Doom DropItem None States { @@ -70,7 +64,6 @@ actor DeadShotgunGuy : ShotgunGuy actor DeadDoomImp : DoomImp { Skip_Super - Game Doom States { Spawn: @@ -83,7 +76,6 @@ actor DeadDoomImp : DoomImp actor DeadDemon : Demon { Skip_Super - Game Doom States { Spawn: @@ -96,7 +88,6 @@ actor DeadDemon : Demon actor DeadCacodemon : Cacodemon { Skip_Super - Game Doom States { Spawn: @@ -115,7 +106,6 @@ actor DeadCacodemon : Cacodemon actor DeadLostSoul : LostSoul { Skip_Super - Game Doom States { Spawn: diff --git a/wadsrc/static/actors/doom/demon.txt b/wadsrc/static/actors/doom/demon.txt index d88d67a72..a1ff8ccfb 100644 --- a/wadsrc/static/actors/doom/demon.txt +++ b/wadsrc/static/actors/doom/demon.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR Demon { - Game Doom - SpawnID 8 Health 150 PainChance 180 Speed 10 @@ -59,8 +57,6 @@ ACTOR Demon //=========================================================================== ACTOR Spectre : Demon { - Game Doom - SpawnID 9 +SHADOW RenderStyle OptFuzzy Alpha 0.5 diff --git a/wadsrc/static/actors/doom/doomammo.txt b/wadsrc/static/actors/doom/doomammo.txt index 9d25c3b46..8e137b3a8 100644 --- a/wadsrc/static/actors/doom/doomammo.txt +++ b/wadsrc/static/actors/doom/doomammo.txt @@ -2,8 +2,6 @@ ACTOR Clip : Ammo { - Game Doom - SpawnID 11 Inventory.PickupMessage "$GOTCLIP" Inventory.Amount 10 Inventory.MaxAmount 200 @@ -22,8 +20,6 @@ ACTOR Clip : Ammo ACTOR ClipBox : Clip { - Game Doom - SpawnID 139 Inventory.PickupMessage "$GOTCLIPBOX" Inventory.Amount 50 States @@ -38,8 +34,6 @@ ACTOR ClipBox : Clip ACTOR RocketAmmo : Ammo { - Game Doom - SpawnID 140 Inventory.PickupMessage "$GOTROCKET" Inventory.Amount 1 Inventory.MaxAmount 50 @@ -58,8 +52,6 @@ ACTOR RocketAmmo : Ammo ACTOR RocketBox : RocketAmmo { - Game Doom - SpawnID 141 Inventory.PickupMessage "$GOTROCKBOX" Inventory.Amount 5 States @@ -74,8 +66,6 @@ ACTOR RocketBox : RocketAmmo ACTOR Cell : Ammo { - Game Doom - SpawnID 75 Inventory.PickupMessage "$GOTCELL" Inventory.Amount 20 Inventory.MaxAmount 300 @@ -94,8 +84,6 @@ ACTOR Cell : Ammo ACTOR CellPack : Cell { - Game Doom - SpawnID 142 Inventory.PickupMessage "$GOTCELLBOX" Inventory.Amount 100 States @@ -110,8 +98,6 @@ ACTOR CellPack : Cell ACTOR Shell : Ammo { - Game Doom - SpawnID 12 Inventory.PickupMessage "$GOTSHELLS" Inventory.Amount 4 Inventory.MaxAmount 50 @@ -130,8 +116,6 @@ ACTOR Shell : Ammo ACTOR ShellBox : Shell { - Game Doom - SpawnID 143 Inventory.PickupMessage "$GOTSHELLBOX" Inventory.Amount 20 States @@ -146,8 +130,6 @@ ACTOR ShellBox : Shell ACTOR Backpack : BackpackItem { - Game Doom - SpawnID 144 Height 26 Inventory.PickupMessage "$GOTBACKPACK" States diff --git a/wadsrc/static/actors/doom/doomarmor.txt b/wadsrc/static/actors/doom/doomarmor.txt index 1cc6847ed..3b518bab8 100644 --- a/wadsrc/static/actors/doom/doomarmor.txt +++ b/wadsrc/static/actors/doom/doomarmor.txt @@ -3,8 +3,6 @@ Actor ArmorBonus : BasicArmorBonus { - Game Doom - SpawnID 22 Radius 20 Height 16 Inventory.Pickupmessage "$GOTARMBONUS" @@ -26,8 +24,6 @@ Actor ArmorBonus : BasicArmorBonus Actor GreenArmor : BasicArmorPickup { - Game Doom - SpawnID 68 Radius 20 Height 16 Inventory.Pickupmessage "$GOTARMOR" @@ -47,8 +43,6 @@ Actor GreenArmor : BasicArmorPickup Actor BlueArmor : BasicArmorPickup { - Game Doom - SpawnID 69 Radius 20 Height 16 Inventory.Pickupmessage "$GOTMEGA" diff --git a/wadsrc/static/actors/doom/doomartifacts.txt b/wadsrc/static/actors/doom/doomartifacts.txt index 6335d1b16..8702155e8 100644 --- a/wadsrc/static/actors/doom/doomartifacts.txt +++ b/wadsrc/static/actors/doom/doomartifacts.txt @@ -2,8 +2,6 @@ ACTOR InvulnerabilitySphere : PowerupGiver { - Game Doom - SpawnID 133 +COUNTITEM +INVENTORY.AUTOACTIVATE +INVENTORY.ALWAYSPICKUP @@ -24,8 +22,6 @@ ACTOR InvulnerabilitySphere : PowerupGiver ACTOR Soulsphere : Health { - Game Doom - SpawnID 25 +COUNTITEM +INVENTORY.AUTOACTIVATE +INVENTORY.ALWAYSPICKUP @@ -60,8 +56,6 @@ actor BlueArmorForMegasphere : BlueArmor ACTOR Megasphere : CustomInventory { - Game Doom - SpawnID 132 +COUNTITEM +INVENTORY.ALWAYSPICKUP Inventory.PickupMessage "$GOTMSPHERE" @@ -82,8 +76,6 @@ ACTOR Megasphere : CustomInventory ACTOR BlurSphere : PowerupGiver { - Game Doom - SpawnID 135 +COUNTITEM +VISIBILITYPULSE +INVENTORY.AUTOACTIVATE @@ -105,8 +97,6 @@ ACTOR BlurSphere : PowerupGiver ACTOR RadSuit : PowerupGiver { - Game Doom - SpawnID 136 Height 46 +INVENTORY.AUTOACTIVATE +INVENTORY.ALWAYSPICKUP @@ -125,8 +115,6 @@ ACTOR RadSuit : PowerupGiver ACTOR Infrared : PowerupGiver { - Game Doom - SpawnID 138 +COUNTITEM +INVENTORY.AUTOACTIVATE +INVENTORY.ALWAYSPICKUP @@ -146,8 +134,6 @@ ACTOR Infrared : PowerupGiver ACTOR Allmap : MapRevealer { - Game Doom - SpawnID 137 +COUNTITEM +INVENTORY.FANCYPICKUPSOUND +INVENTORY.ALWAYSPICKUP @@ -166,8 +152,6 @@ ACTOR Allmap : MapRevealer ACTOR Berserk : CustomInventory { - Game Doom - SpawnID 134 +COUNTITEM +INVENTORY.ALWAYSPICKUP Inventory.PickupMessage "$GOTBERSERK" diff --git a/wadsrc/static/actors/doom/doomdecorations.txt b/wadsrc/static/actors/doom/doomdecorations.txt index 7233657d8..1a5688b58 100644 --- a/wadsrc/static/actors/doom/doomdecorations.txt +++ b/wadsrc/static/actors/doom/doomdecorations.txt @@ -3,7 +3,6 @@ ACTOR TechLamp { - Game Doom Radius 16 Height 80 ProjectilePassHeight -16 @@ -20,7 +19,6 @@ ACTOR TechLamp ACTOR TechLamp2 { - Game Doom Radius 16 Height 60 ProjectilePassHeight -16 @@ -37,7 +35,6 @@ ACTOR TechLamp2 ACTOR Column { - Game Doom Radius 16 Height 48 ProjectilePassHeight -16 @@ -54,7 +51,6 @@ ACTOR Column ACTOR TallGreenColumn { - Game Doom Radius 16 Height 52 ProjectilePassHeight -16 @@ -71,7 +67,6 @@ ACTOR TallGreenColumn ACTOR ShortGreenColumn { - Game Doom Radius 16 Height 40 ProjectilePassHeight -16 @@ -88,7 +83,6 @@ ACTOR ShortGreenColumn ACTOR TallRedColumn { - Game Doom Radius 16 Height 52 ProjectilePassHeight -16 @@ -105,7 +99,6 @@ ACTOR TallRedColumn ACTOR ShortRedColumn { - Game Doom Radius 16 Height 40 ProjectilePassHeight -16 @@ -122,7 +115,6 @@ ACTOR ShortRedColumn ACTOR SkullColumn { - Game Doom Radius 16 Height 40 ProjectilePassHeight -16 @@ -139,7 +131,6 @@ ACTOR SkullColumn ACTOR HeartColumn { - Game Doom Radius 16 Height 40 ProjectilePassHeight -16 @@ -156,7 +147,6 @@ ACTOR HeartColumn ACTOR EvilEye { - Game Doom Radius 16 Height 54 ProjectilePassHeight -16 @@ -173,7 +163,6 @@ ACTOR EvilEye ACTOR FloatingSkull { - Game Doom Radius 16 Height 26 ProjectilePassHeight -16 @@ -190,7 +179,6 @@ ACTOR FloatingSkull ACTOR TorchTree { - Game Doom Radius 16 Height 56 ProjectilePassHeight -16 @@ -207,7 +195,6 @@ ACTOR TorchTree ACTOR BlueTorch { - Game Doom Radius 16 Height 68 ProjectilePassHeight -16 @@ -224,7 +211,6 @@ ACTOR BlueTorch ACTOR GreenTorch { - Game Doom Radius 16 Height 68 ProjectilePassHeight -16 @@ -241,7 +227,6 @@ ACTOR GreenTorch ACTOR RedTorch { - Game Doom Radius 16 Height 68 ProjectilePassHeight -16 @@ -258,7 +243,6 @@ ACTOR RedTorch ACTOR ShortBlueTorch { - Game Doom Radius 16 Height 37 ProjectilePassHeight -16 @@ -275,7 +259,6 @@ ACTOR ShortBlueTorch ACTOR ShortGreenTorch { - Game Doom Radius 16 Height 37 ProjectilePassHeight -16 @@ -292,7 +275,6 @@ ACTOR ShortGreenTorch ACTOR ShortRedTorch { - Game Doom Radius 16 Height 37 ProjectilePassHeight -16 @@ -309,7 +291,6 @@ ACTOR ShortRedTorch ACTOR Stalagtite { - Game Doom Radius 16 Height 40 ProjectilePassHeight -16 @@ -326,7 +307,6 @@ ACTOR Stalagtite ACTOR TechPillar { - Game Doom Radius 16 Height 128 ProjectilePassHeight -16 @@ -343,7 +323,6 @@ ACTOR TechPillar ACTOR Candlestick { - Game Doom Radius 20 Height 14 ProjectilePassHeight -16 @@ -359,7 +338,6 @@ ACTOR Candlestick ACTOR Candelabra { - Game Doom Radius 16 Height 60 ProjectilePassHeight -16 @@ -376,7 +354,6 @@ ACTOR Candelabra ACTOR BloodyTwitch { - Game Doom Radius 16 Height 68 +SOLID @@ -397,7 +374,6 @@ ACTOR BloodyTwitch ACTOR Meat2 { - Game Doom Radius 16 Height 84 +SOLID @@ -415,7 +391,6 @@ ACTOR Meat2 ACTOR Meat3 { - Game Doom Radius 16 Height 84 +SOLID @@ -433,7 +408,6 @@ ACTOR Meat3 ACTOR Meat4 { - Game Doom Radius 16 Height 68 +SOLID @@ -451,7 +425,6 @@ ACTOR Meat4 ACTOR Meat5 { - Game Doom Radius 16 Height 52 +SOLID @@ -469,28 +442,24 @@ ACTOR Meat5 ACTOR NonsolidMeat2 : Meat2 { - Game Doom -SOLID Radius 20 } ACTOR NonsolidMeat3 : Meat3 { - Game Doom -SOLID Radius 20 } ACTOR NonsolidMeat4 : Meat4 { - Game Doom -SOLID Radius 20 } ACTOR NonsolidMeat5 : Meat5 { - Game Doom -SOLID Radius 20 } @@ -499,7 +468,6 @@ ACTOR NonsolidMeat5 : Meat5 ACTOR NonsolidTwitch : BloodyTwitch { - Game Doom -SOLID Radius 20 } @@ -508,7 +476,6 @@ ACTOR NonsolidTwitch : BloodyTwitch ACTOR HeadOnAStick { - Game Doom Radius 16 Height 56 ProjectilePassHeight -16 @@ -525,7 +492,6 @@ ACTOR HeadOnAStick ACTOR HeadsOnAStick { - Game Doom Radius 16 Height 64 ProjectilePassHeight -16 @@ -542,7 +508,6 @@ ACTOR HeadsOnAStick ACTOR HeadCandles { - Game Doom Radius 16 Height 42 ProjectilePassHeight -16 @@ -559,7 +524,6 @@ ACTOR HeadCandles ACTOR DeadStick { - Game Doom Radius 16 Height 64 ProjectilePassHeight -16 @@ -576,7 +540,6 @@ ACTOR DeadStick ACTOR LiveStick { - Game Doom Radius 16 Height 64 ProjectilePassHeight -16 @@ -594,7 +557,6 @@ ACTOR LiveStick ACTOR BigTree { - Game Doom Radius 32 Height 108 ProjectilePassHeight -16 @@ -611,8 +573,6 @@ ACTOR BigTree ACTOR BurningBarrel { - Game Doom - SpawnID 149 Radius 16 Height 32 ProjectilePassHeight -16 @@ -629,7 +589,6 @@ ACTOR BurningBarrel ACTOR HangNoGuts { - Game Doom Radius 16 Height 88 +SOLID @@ -647,7 +606,6 @@ ACTOR HangNoGuts ACTOR HangBNoBrain { - Game Doom Radius 16 Height 88 +SOLID @@ -665,7 +623,6 @@ ACTOR HangBNoBrain ACTOR HangTLookingDown { - Game Doom Radius 16 Height 64 +SOLID @@ -683,7 +640,6 @@ ACTOR HangTLookingDown ACTOR HangTLookingUp { - Game Doom Radius 16 Height 64 +SOLID @@ -701,7 +657,6 @@ ACTOR HangTLookingUp ACTOR HangTSkull { - Game Doom Radius 16 Height 64 +SOLID @@ -719,7 +674,6 @@ ACTOR HangTSkull ACTOR HangTNoBrain { - Game Doom Radius 16 Height 64 +SOLID @@ -737,8 +691,6 @@ ACTOR HangTNoBrain ACTOR ColonGibs { - Game Doom - SpawnID 147 Radius 20 Height 4 +NOBLOCKMAP @@ -755,8 +707,6 @@ ACTOR ColonGibs ACTOR SmallBloodPool { - Game Doom - SpawnID 148 Radius 20 Height 1 +NOBLOCKMAP @@ -773,8 +723,6 @@ ACTOR SmallBloodPool ACTOR BrainStem { - Game Doom - SpawnID 150 Radius 20 Height 4 +NOBLOCKMAP @@ -792,7 +740,6 @@ ACTOR BrainStem ACTOR Stalagmite { - Game Doom Radius 16 Height 48 +SOLID diff --git a/wadsrc/static/actors/doom/doomhealth.txt b/wadsrc/static/actors/doom/doomhealth.txt index bc68c1017..77fc6eaeb 100644 --- a/wadsrc/static/actors/doom/doomhealth.txt +++ b/wadsrc/static/actors/doom/doomhealth.txt @@ -2,8 +2,6 @@ ACTOR HealthBonus : Health { - Game Doom - SpawnID 152 +COUNTITEM +INVENTORY.ALWAYSPICKUP Inventory.Amount 1 @@ -21,8 +19,6 @@ ACTOR HealthBonus : Health ACTOR Stimpack : Health { - Game Doom - SpawnID 23 Inventory.Amount 10 Inventory.PickupMessage "$GOTSTIM" States @@ -37,8 +33,6 @@ ACTOR Stimpack : Health ACTOR Medikit : Health { - Game Doom - SpawnID 24 Inventory.Amount 25 Inventory.PickupMessage "$GOTMEDIKIT" Health.LowMessage 25, "$GOTMEDINEED" diff --git a/wadsrc/static/actors/doom/doomimp.txt b/wadsrc/static/actors/doom/doomimp.txt index 0cf3665c8..938663e35 100644 --- a/wadsrc/static/actors/doom/doomimp.txt +++ b/wadsrc/static/actors/doom/doomimp.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR DoomImp { - Game Doom - SpawnID 5 Health 60 Radius 20 Height 56 @@ -66,8 +64,6 @@ ACTOR DoomImp //=========================================================================== ACTOR DoomImpBall { - Game Doom - SpawnID 10 Radius 6 Height 8 Speed 10 diff --git a/wadsrc/static/actors/doom/doomkeys.txt b/wadsrc/static/actors/doom/doomkeys.txt index 0b61af192..5472193af 100644 --- a/wadsrc/static/actors/doom/doomkeys.txt +++ b/wadsrc/static/actors/doom/doomkeys.txt @@ -10,8 +10,6 @@ Actor DoomKey : Key Actor BlueCard : DoomKey { - Game Doom - SpawnID 85 Inventory.Pickupmessage "$GOTBLUECARD" Inventory.Icon "STKEYS0" States @@ -27,8 +25,6 @@ Actor BlueCard : DoomKey Actor YellowCard : DoomKey { - Game Doom - SpawnID 87 Inventory.Pickupmessage "$GOTYELWCARD" Inventory.Icon "STKEYS1" States @@ -44,8 +40,6 @@ Actor YellowCard : DoomKey Actor RedCard : DoomKey { - Game Doom - SpawnID 86 Inventory.Pickupmessage "$GOTREDCARD" Inventory.Icon "STKEYS2" States @@ -61,8 +55,6 @@ Actor RedCard : DoomKey Actor BlueSkull : DoomKey { - Game Doom - SpawnID 90 Inventory.Pickupmessage "$GOTBLUESKUL" Inventory.Icon "STKEYS3" States @@ -78,8 +70,6 @@ Actor BlueSkull : DoomKey Actor YellowSkull : DoomKey { - Game Doom - SpawnID 88 Inventory.Pickupmessage "$GOTYELWSKUL" Inventory.Icon "STKEYS4" States @@ -95,8 +85,6 @@ Actor YellowSkull : DoomKey Actor RedSkull : DoomKey { - Game Doom - SpawnID 89 Inventory.Pickupmessage "$GOTREDSKUL" Inventory.Icon "STKEYS5" States diff --git a/wadsrc/static/actors/doom/doommisc.txt b/wadsrc/static/actors/doom/doommisc.txt index 0727726f8..d860f855a 100644 --- a/wadsrc/static/actors/doom/doommisc.txt +++ b/wadsrc/static/actors/doom/doommisc.txt @@ -2,8 +2,6 @@ ACTOR ExplosiveBarrel { - Game Doom - SpawnID 125 Health 20 Radius 10 Height 42 @@ -37,8 +35,6 @@ ACTOR ExplosiveBarrel ACTOR BulletPuff { - Game Doom - SpawnID 131 +NOBLOCKMAP +NOGRAVITY +ALLOWPARTICLES @@ -87,7 +83,6 @@ ACTOR DoomUnusedStates Actor EvilSceptre : ScoreItem { - Game Doom Inventory.PickupMessage "$BETA_BONUS3" States { @@ -99,7 +94,6 @@ Actor EvilSceptre : ScoreItem Actor UnholyBible : ScoreItem { - Game Doom Inventory.PickupMessage "$BETA_BONUS4" States { diff --git a/wadsrc/static/actors/doom/doomweapons.txt b/wadsrc/static/actors/doom/doomweapons.txt index ece9da40a..59ce07361 100644 --- a/wadsrc/static/actors/doom/doomweapons.txt +++ b/wadsrc/static/actors/doom/doomweapons.txt @@ -17,7 +17,6 @@ ACTOR DoomWeapon : Weapon ACTOR Fist : Weapon { - Game Doom Weapon.SelectionOrder 3700 Weapon.Kickback 100 Obituary "$OB_MPFIST" @@ -54,7 +53,6 @@ ACTOR Fist : Weapon ACTOR Pistol : DoomWeapon { - Game Doom Weapon.SelectionOrder 1900 Weapon.AmmoUse 1 Weapon.AmmoGive 20 @@ -99,8 +97,6 @@ ACTOR Pistol : DoomWeapon ACTOR Chainsaw : Weapon { - Game Doom - SpawnID 32 Weapon.Kickback 0 Weapon.SelectionOrder 2200 Weapon.UpSound "weapons/sawup" @@ -139,8 +135,6 @@ ACTOR Chainsaw : Weapon ACTOR Shotgun : DoomWeapon { - Game Doom - SpawnID 27 Weapon.SelectionOrder 1300 Weapon.AmmoUse 1 Weapon.AmmoGive 8 @@ -186,8 +180,6 @@ ACTOR Shotgun : DoomWeapon ACTOR SuperShotgun : DoomWeapon { - Game Doom - SpawnID 33 Weapon.SelectionOrder 400 Weapon.AmmoUse 2 Weapon.AmmoGive 8 @@ -240,8 +232,6 @@ ACTOR SuperShotgun : DoomWeapon ACTOR Chaingun : DoomWeapon { - Game Doom - SpawnID 28 Weapon.SelectionOrder 700 Weapon.AmmoUse 1 Weapon.AmmoGive 20 @@ -283,8 +273,6 @@ ACTOR Chaingun : DoomWeapon ACTOR RocketLauncher : DoomWeapon { - Game Doom - SpawnID 29 Weapon.SelectionOrder 2500 Weapon.AmmoUse 1 Weapon.AmmoGive 2 @@ -321,8 +309,6 @@ ACTOR RocketLauncher : DoomWeapon ACTOR Rocket { - Game Doom - SpawnID 127 Radius 11 Height 8 Speed 20 @@ -355,8 +341,6 @@ ACTOR Rocket ACTOR Grenade { - Game Doom - SpawnID 216 Radius 8 Height 8 Speed 25 @@ -406,8 +390,6 @@ ACTOR Grenade ACTOR PlasmaRifle : DoomWeapon { - Game Doom - SpawnID 30 Weapon.SelectionOrder 100 Weapon.AmmoUse 1 Weapon.AmmoGive 40 @@ -442,8 +424,6 @@ ACTOR PlasmaRifle : DoomWeapon ACTOR PlasmaBall { - Game Doom - SpawnID 51 Radius 13 Height 8 Speed 25 @@ -510,9 +490,7 @@ ACTOR PlasmaBall2 : PlasmaBall1 ACTOR BFG9000 : DoomWeapon { - Game Doom Height 20 - SpawnID 31 Weapon.SelectionOrder 2800 Weapon.AmmoUse 40 Weapon.AmmoGive 40 @@ -556,8 +534,6 @@ ACTOR BFG9000 : DoomWeapon ACTOR BFGBall { - Game Doom - SpawnID 128 Radius 13 Height 8 Speed 25 diff --git a/wadsrc/static/actors/doom/fatso.txt b/wadsrc/static/actors/doom/fatso.txt index b77f05b13..1ad40fd93 100644 --- a/wadsrc/static/actors/doom/fatso.txt +++ b/wadsrc/static/actors/doom/fatso.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR Fatso { - Game Doom - SpawnID 112 Health 600 Radius 48 Height 64 @@ -65,8 +63,6 @@ ACTOR Fatso //=========================================================================== ACTOR FatShot { - Game Doom - SpawnID 153 Radius 6 Height 8 Speed 20 diff --git a/wadsrc/static/actors/doom/keen.txt b/wadsrc/static/actors/doom/keen.txt index 2bdd2b343..2c07e5b32 100644 --- a/wadsrc/static/actors/doom/keen.txt +++ b/wadsrc/static/actors/doom/keen.txt @@ -5,7 +5,6 @@ //=========================================================================== ACTOR CommanderKeen { - Game Doom Health 100 Radius 16 Height 72 diff --git a/wadsrc/static/actors/doom/lostsoul.txt b/wadsrc/static/actors/doom/lostsoul.txt index f84d85488..80599d62a 100644 --- a/wadsrc/static/actors/doom/lostsoul.txt +++ b/wadsrc/static/actors/doom/lostsoul.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR LostSoul { - Game Doom - SpawnID 110 Health 100 Radius 16 Height 56 diff --git a/wadsrc/static/actors/doom/painelemental.txt b/wadsrc/static/actors/doom/painelemental.txt index 45d8afccd..5951afd6b 100644 --- a/wadsrc/static/actors/doom/painelemental.txt +++ b/wadsrc/static/actors/doom/painelemental.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR PainElemental { - Game Doom - SpawnID 115 Health 400 Radius 31 Height 56 diff --git a/wadsrc/static/actors/doom/possessed.txt b/wadsrc/static/actors/doom/possessed.txt index 42279317d..7dfee1f9e 100644 --- a/wadsrc/static/actors/doom/possessed.txt +++ b/wadsrc/static/actors/doom/possessed.txt @@ -6,8 +6,6 @@ //=========================================================================== ACTOR ZombieMan { - Game Doom - SpawnID 4 Health 20 Radius 20 Height 56 @@ -67,8 +65,6 @@ ACTOR ZombieMan //=========================================================================== ACTOR ShotgunGuy { - Game Doom - SpawnID 1 Health 30 Radius 20 Height 56 @@ -129,8 +125,6 @@ ACTOR ShotgunGuy //=========================================================================== ACTOR ChaingunGuy { - Game Doom - SpawnID 2 Health 70 Radius 20 Height 56 @@ -191,8 +185,6 @@ ACTOR ChaingunGuy //=========================================================================== ACTOR WolfensteinSS { - Game Doom - SpawnID 116 Health 50 Radius 20 Height 56 diff --git a/wadsrc/static/actors/doom/revenant.txt b/wadsrc/static/actors/doom/revenant.txt index 1d6b318c7..ce072bec4 100644 --- a/wadsrc/static/actors/doom/revenant.txt +++ b/wadsrc/static/actors/doom/revenant.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR Revenant { - Game Doom - SpawnID 20 Health 300 Radius 20 Height 56 @@ -70,8 +68,6 @@ ACTOR Revenant //=========================================================================== ACTOR RevenantTracer { - Game Doom - SpawnID 53 Radius 11 Height 8 Speed 10 diff --git a/wadsrc/static/actors/doom/scriptedmarine.txt b/wadsrc/static/actors/doom/scriptedmarine.txt index 6c5854ac7..7341498be 100644 --- a/wadsrc/static/actors/doom/scriptedmarine.txt +++ b/wadsrc/static/actors/doom/scriptedmarine.txt @@ -3,8 +3,6 @@ ACTOR ScriptedMarine native { - Game Doom - SpawnID 151 Health 100 Radius 16 Height 56 @@ -174,7 +172,6 @@ ACTOR ScriptedMarine native ACTOR MarineFist : ScriptedMarine { - Game Doom States { Melee: @@ -189,7 +186,6 @@ ACTOR MarineFist : ScriptedMarine ACTOR MarineBerserk : MarineFist { - Game Doom States { Melee: @@ -202,7 +198,6 @@ ACTOR MarineBerserk : MarineFist ACTOR MarineChainsaw : ScriptedMarine { - Game Doom States { Melee: @@ -218,7 +213,6 @@ ACTOR MarineChainsaw : ScriptedMarine ACTOR MarinePistol : ScriptedMarine { - Game Doom States { Missile: @@ -231,7 +225,6 @@ ACTOR MarinePistol : ScriptedMarine ACTOR MarineShotgun : ScriptedMarine { - Game Doom States { Missile: @@ -246,7 +239,6 @@ ACTOR MarineShotgun : ScriptedMarine ACTOR MarineSSG : ScriptedMarine { - Game Doom States { Missile: @@ -258,7 +250,6 @@ ACTOR MarineSSG : ScriptedMarine ACTOR MarineChaingun : ScriptedMarine { - Game Doom States { Missile: @@ -271,7 +262,6 @@ ACTOR MarineChaingun : ScriptedMarine ACTOR MarineRocket : MarineFist { - Game Doom States { Missile: @@ -284,7 +274,6 @@ ACTOR MarineRocket : MarineFist ACTOR MarinePlasma : ScriptedMarine { - Game Doom States { Missile: @@ -297,7 +286,6 @@ ACTOR MarinePlasma : ScriptedMarine ACTOR MarineRailgun : ScriptedMarine { - Game Doom States { Missile: @@ -310,7 +298,6 @@ ACTOR MarineRailgun : ScriptedMarine ACTOR MarineBFG : ScriptedMarine { - Game Doom States { Missile: diff --git a/wadsrc/static/actors/doom/spidermaster.txt b/wadsrc/static/actors/doom/spidermaster.txt index 8da894245..97ebbf143 100644 --- a/wadsrc/static/actors/doom/spidermaster.txt +++ b/wadsrc/static/actors/doom/spidermaster.txt @@ -5,8 +5,6 @@ //=========================================================================== ACTOR SpiderMastermind { - Game Doom - SpawnID 7 Health 3000 Radius 100 Height 100 diff --git a/wadsrc/static/actors/doom/stealthmonsters.txt b/wadsrc/static/actors/doom/stealthmonsters.txt index 5cc859ee0..5a35533ea 100644 --- a/wadsrc/static/actors/doom/stealthmonsters.txt +++ b/wadsrc/static/actors/doom/stealthmonsters.txt @@ -1,8 +1,6 @@ ACTOR StealthArachnotron : Arachnotron { - Game Doom - SpawnID 117 +STEALTH RenderStyle Translucent Alpha 0 @@ -11,8 +9,6 @@ ACTOR StealthArachnotron : Arachnotron ACTOR StealthArchvile : Archvile { - Game Doom - SpawnID 118 +STEALTH RenderStyle Translucent Alpha 0 @@ -21,8 +17,6 @@ ACTOR StealthArchvile : Archvile ACTOR StealthBaron : BaronOfHell { - Game Doom - SpawnID 100 +STEALTH RenderStyle Translucent Alpha 0 @@ -32,8 +26,6 @@ ACTOR StealthBaron : BaronOfHell ACTOR StealthCacodemon : Cacodemon { - Game Doom - SpawnID 119 +STEALTH RenderStyle Translucent Alpha 0 @@ -43,8 +35,6 @@ ACTOR StealthCacodemon : Cacodemon ACTOR StealthChaingunGuy : ChaingunGuy { - Game Doom - SpawnID 120 +STEALTH RenderStyle Translucent Alpha 0 @@ -53,8 +43,6 @@ ACTOR StealthChaingunGuy : ChaingunGuy ACTOR StealthDemon : Demon { - Game Doom - SpawnID 121 +STEALTH RenderStyle Translucent Alpha 0 @@ -64,8 +52,6 @@ ACTOR StealthDemon : Demon ACTOR StealthHellKnight : HellKnight { - Game Doom - SpawnID 101 +STEALTH RenderStyle Translucent Alpha 0 @@ -75,8 +61,6 @@ ACTOR StealthHellKnight : HellKnight ACTOR StealthDoomImp : DoomImp { - Game Doom - SpawnID 122 +STEALTH RenderStyle Translucent Alpha 0 @@ -86,8 +70,6 @@ ACTOR StealthDoomImp : DoomImp ACTOR StealthFatso : Fatso { - Game Doom - SpawnID 123 +STEALTH RenderStyle Translucent Alpha 0 @@ -96,8 +78,6 @@ ACTOR StealthFatso : Fatso ACTOR StealthRevenant : Revenant { - Game Doom - SpawnID 124 +STEALTH RenderStyle Translucent Alpha 0 @@ -107,8 +87,6 @@ ACTOR StealthRevenant : Revenant ACTOR StealthShotgunGuy : ShotgunGuy { - Game Doom - SpawnID 103 +STEALTH RenderStyle Translucent Alpha 0 @@ -117,8 +95,6 @@ ACTOR StealthShotgunGuy : ShotgunGuy ACTOR StealthZombieMan : ZombieMan { - Game Doom - SpawnID 102 +STEALTH RenderStyle Translucent Alpha 0 diff --git a/wadsrc/static/actors/heretic/beast.txt b/wadsrc/static/actors/heretic/beast.txt index 956f16dca..757414883 100644 --- a/wadsrc/static/actors/heretic/beast.txt +++ b/wadsrc/static/actors/heretic/beast.txt @@ -3,8 +3,6 @@ ACTOR Beast { - Game Heretic - SpawnID 3 Health 220 Radius 32 Height 74 @@ -61,8 +59,6 @@ ACTOR Beast ACTOR BeastBall { - Game Heretic - SpawnID 120 Radius 9 Height 8 Speed 12 diff --git a/wadsrc/static/actors/heretic/chicken.txt b/wadsrc/static/actors/heretic/chicken.txt index 029dca014..62982f944 100644 --- a/wadsrc/static/actors/heretic/chicken.txt +++ b/wadsrc/static/actors/heretic/chicken.txt @@ -113,8 +113,6 @@ ACTOR ChickenPlayer : PlayerPawn native ACTOR Chicken : MorphedMonster { - Game Heretic - SpawnID 122 Health 10 Radius 9 Height 22 @@ -164,8 +162,6 @@ ACTOR Chicken : MorphedMonster ACTOR Feather { - Game Heretic - SpawnID 121 Radius 2 Height 4 +MISSILE +DROPOFF diff --git a/wadsrc/static/actors/heretic/clink.txt b/wadsrc/static/actors/heretic/clink.txt index dd3bb4c85..f7a483331 100644 --- a/wadsrc/static/actors/heretic/clink.txt +++ b/wadsrc/static/actors/heretic/clink.txt @@ -1,8 +1,6 @@ ACTOR Clink { - Game Heretic - SpawnID 1 Health 150 Radius 20 Height 64 diff --git a/wadsrc/static/actors/heretic/dsparil.txt b/wadsrc/static/actors/heretic/dsparil.txt index 2b2efe3c6..47fada3e6 100644 --- a/wadsrc/static/actors/heretic/dsparil.txt +++ b/wadsrc/static/actors/heretic/dsparil.txt @@ -3,8 +3,6 @@ ACTOR BossSpot : SpecialSpot { - Game Heretic - SpawnID 141 +INVISIBLE } @@ -12,8 +10,6 @@ ACTOR BossSpot : SpecialSpot ACTOR Sorcerer1 { - Game Heretic - SpawnID 142 Health 2000 Radius 28 Height 100 @@ -84,8 +80,6 @@ ACTOR Sorcerer1 ACTOR SorcererFX1 { - Game Heretic - SpawnID 144 Radius 10 Height 10 Speed 20 @@ -112,8 +106,6 @@ ACTOR SorcererFX1 ACTOR Sorcerer2 { - Game Heretic - SpawnID 143 Health 3500 Radius 16 Height 70 @@ -192,8 +184,6 @@ ACTOR Sorcerer2 ACTOR Sorcerer2FX1 { - Game Heretic - SpawnID 145 Radius 10 Height 6 Speed 20 @@ -241,8 +231,6 @@ ACTOR Sorcerer2FXSpark ACTOR Sorcerer2FX2 { - Game Heretic - SpawnID 146 Radius 10 Height 6 Speed 6 diff --git a/wadsrc/static/actors/heretic/hereticammo.txt b/wadsrc/static/actors/heretic/hereticammo.txt index ee17bbdc8..cfbc29702 100644 --- a/wadsrc/static/actors/heretic/hereticammo.txt +++ b/wadsrc/static/actors/heretic/hereticammo.txt @@ -3,8 +3,6 @@ ACTOR GoldWandAmmo : Ammo { - Game Heretic - SpawnID 11 Inventory.PickupMessage "$TXT_AMMOGOLDWAND1" Inventory.Amount 10 Inventory.MaxAmount 100 @@ -23,8 +21,6 @@ ACTOR GoldWandAmmo : Ammo ACTOR GoldWandHefty : GoldWandAmmo { - Game Heretic - SpawnID 12 Inventory.PickupMessage "$TXT_AMMOGOLDWAND2" Inventory.Amount 50 States @@ -38,8 +34,6 @@ ACTOR GoldWandHefty : GoldWandAmmo ACTOR CrossbowAmmo : Ammo { - Game Heretic - SpawnID 33 Inventory.PickupMessage "$TXT_AMMOCROSSBOW1" Inventory.Amount 5 Inventory.MaxAmount 50 @@ -58,8 +52,6 @@ ACTOR CrossbowAmmo : Ammo ACTOR CrossbowHefty : CrossbowAmmo { - Game Heretic - SpawnID 34 Inventory.PickupMessage "$TXT_AMMOCROSSBOW2" Inventory.Amount 20 States @@ -73,8 +65,6 @@ ACTOR CrossbowHefty : CrossbowAmmo ACTOR MaceAmmo : Ammo { - Game Heretic - SpawnID 35 Inventory.PickupMessage "$TXT_AMMOMACE1" Inventory.Amount 20 Inventory.MaxAmount 150 @@ -93,8 +83,6 @@ ACTOR MaceAmmo : Ammo ACTOR MaceHefty : MaceAmmo { - Game Heretic - SpawnID 36 Inventory.PickupMessage "$TXT_AMMOMACE2" Inventory.Amount 100 States @@ -109,8 +97,6 @@ ACTOR MaceHefty : MaceAmmo ACTOR BlasterAmmo : Ammo { - Game Heretic - SpawnID 37 Inventory.PickupMessage "$TXT_AMMOBLASTER1" Inventory.Amount 10 Inventory.MaxAmount 200 @@ -129,8 +115,6 @@ ACTOR BlasterAmmo : Ammo ACTOR BlasterHefty : BlasterAmmo { - Game Heretic - SpawnID 38 Inventory.PickupMessage "$TXT_AMMOBLASTER2" Inventory.Amount 25 States @@ -145,8 +129,6 @@ ACTOR BlasterHefty : BlasterAmmo ACTOR SkullRodAmmo : Ammo { - Game Heretic - SpawnID 158 Inventory.PickupMessage "$TXT_AMMOSKULLROD1" Inventory.Amount 20 Inventory.MaxAmount 200 @@ -165,8 +147,6 @@ ACTOR SkullRodAmmo : Ammo ACTOR SkullRodHefty : SkullRodAmmo { - Game Heretic - SpawnID 159 Inventory.PickupMessage "$TXT_AMMOSKULLROD2" Inventory.Amount 100 States @@ -181,8 +161,6 @@ ACTOR SkullRodHefty : SkullRodAmmo ACTOR PhoenixRodAmmo : Ammo { - Game Heretic - SpawnID 161 Inventory.PickupMessage "$TXT_AMMOPHOENIXROD1" Inventory.Amount 1 Inventory.MaxAmount 20 @@ -200,8 +178,6 @@ ACTOR PhoenixRodAmmo : Ammo ACTOR PhoenixRodHefty : PhoenixRodAmmo { - Game Heretic - SpawnID 162 Inventory.PickupMessage "$TXT_AMMOPHOENIXROD2" Inventory.Amount 10 States @@ -216,8 +192,6 @@ ACTOR PhoenixRodHefty : PhoenixRodAmmo ACTOR BagOfHolding : BackpackItem { - Game Heretic - SpawnID 136 Inventory.PickupMessage "$TXT_ITEMBAGOFHOLDING" +COUNTITEM +FLOATBOB diff --git a/wadsrc/static/actors/heretic/hereticarmor.txt b/wadsrc/static/actors/heretic/hereticarmor.txt index 5f2658d9d..c6e28b030 100644 --- a/wadsrc/static/actors/heretic/hereticarmor.txt +++ b/wadsrc/static/actors/heretic/hereticarmor.txt @@ -3,8 +3,6 @@ Actor SilverShield : BasicArmorPickup { - Game Heretic - SpawnID 68 +FLOATBOB Inventory.Pickupmessage "$TXT_ITEMSHIELD1" Inventory.Icon "SHLDA0" @@ -22,8 +20,6 @@ Actor SilverShield : BasicArmorPickup Actor EnchantedShield : BasicArmorPickup { - Game Heretic - SpawnID 69 +FLOATBOB Inventory.Pickupmessage "$TXT_ITEMSHIELD2" Inventory.Icon "SHD2A0" diff --git a/wadsrc/static/actors/heretic/hereticartifacts.txt b/wadsrc/static/actors/heretic/hereticartifacts.txt index 50f7c45e1..91e954b1b 100644 --- a/wadsrc/static/actors/heretic/hereticartifacts.txt +++ b/wadsrc/static/actors/heretic/hereticartifacts.txt @@ -2,8 +2,6 @@ ACTOR SuperMap : MapRevealer { - Game Heretic - SpawnID 137 +COUNTITEM +INVENTORY.ALWAYSPICKUP +FLOATBOB @@ -22,8 +20,6 @@ ACTOR SuperMap : MapRevealer ACTOR ArtiInvisibility : PowerupGiver { - Game Heretic - SpawnID 135 +COUNTITEM +FLOATBOB +INVENTORY.PICKUPFLASH @@ -47,8 +43,6 @@ ACTOR ArtiInvisibility : PowerupGiver ACTOR ArtiTomeOfPower : PowerupGiver native { - Game Heretic - SpawnID 134 +COUNTITEM +FLOATBOB +INVENTORY.PICKUPFLASH @@ -90,8 +84,6 @@ ACTOR ActivatedTimeBomb ACTOR ArtiTimeBomb : Inventory native { - Game Heretic - SpawnID 72 +COUNTITEM +FLOATBOB +INVENTORY.PICKUPFLASH diff --git a/wadsrc/static/actors/heretic/hereticdecorations.txt b/wadsrc/static/actors/heretic/hereticdecorations.txt index 2713d3378..27bd98540 100644 --- a/wadsrc/static/actors/heretic/hereticdecorations.txt +++ b/wadsrc/static/actors/heretic/hereticdecorations.txt @@ -1,6 +1,5 @@ ACTOR SkullHang70 { - Game Heretic Radius 20 Height 70 +SPAWNCEILING @@ -15,7 +14,6 @@ ACTOR SkullHang70 ACTOR SkullHang60 { - Game Heretic Radius 20 Height 60 +SPAWNCEILING @@ -30,7 +28,6 @@ ACTOR SkullHang60 ACTOR SkullHang45 { - Game Heretic Radius 20 Height 45 +SPAWNCEILING @@ -45,7 +42,6 @@ ACTOR SkullHang45 ACTOR SkullHang35 { - Game Heretic Radius 20 Height 35 +SPAWNCEILING @@ -60,7 +56,6 @@ ACTOR SkullHang35 ACTOR Chandelier { - Game Heretic Radius 20 Height 60 +SPAWNCEILING @@ -75,7 +70,6 @@ ACTOR Chandelier ACTOR SerpentTorch { - Game Heretic Radius 12 Height 54 +SOLID @@ -89,7 +83,6 @@ ACTOR SerpentTorch ACTOR SmallPillar { - Game Heretic Radius 16 Height 34 +SOLID @@ -103,7 +96,6 @@ ACTOR SmallPillar ACTOR StalagmiteSmall { - Game Heretic Radius 8 Height 32 +SOLID @@ -117,7 +109,6 @@ ACTOR StalagmiteSmall ACTOR StalagmiteLarge { - Game Heretic Radius 12 Height 64 +SOLID @@ -131,7 +122,6 @@ ACTOR StalagmiteLarge ACTOR StalactiteSmall { - Game Heretic Radius 8 Height 36 +SOLID @@ -147,7 +137,6 @@ ACTOR StalactiteSmall ACTOR StalactiteLarge { - Game Heretic Radius 12 Height 68 +SOLID @@ -163,7 +152,6 @@ ACTOR StalactiteLarge ACTOR FireBrazier { - Game Heretic Radius 16 Height 44 +SOLID @@ -177,7 +165,6 @@ ACTOR FireBrazier ACTOR Barrel { - Game Heretic Radius 12 Height 32 +SOLID @@ -191,7 +178,6 @@ ACTOR Barrel ACTOR BrownPillar { - Game Heretic Radius 14 Height 128 +SOLID @@ -205,7 +191,6 @@ ACTOR BrownPillar ACTOR Moss1 { - Game Heretic Radius 20 Height 23 +SPAWNCEILING @@ -220,7 +205,6 @@ ACTOR Moss1 ACTOR Moss2 { - Game Heretic Radius 20 Height 27 +SPAWNCEILING @@ -235,7 +219,6 @@ ACTOR Moss2 ACTOR WallTorch { - Game Heretic Radius 6 Height 16 +NOGRAVITY @@ -250,7 +233,6 @@ ACTOR WallTorch ACTOR HangingCorpse { - Game Heretic Radius 8 Height 104 +SOLID diff --git a/wadsrc/static/actors/heretic/hereticimp.txt b/wadsrc/static/actors/heretic/hereticimp.txt index 9a5c30c63..b91cf1160 100644 --- a/wadsrc/static/actors/heretic/hereticimp.txt +++ b/wadsrc/static/actors/heretic/hereticimp.txt @@ -3,8 +3,6 @@ ACTOR HereticImp { - Game Heretic - SpawnID 5 Health 40 Radius 16 Height 36 @@ -80,8 +78,6 @@ ACTOR HereticImp ACTOR HereticImpLeader : HereticImp { - Game Heretic - SpawnID 7 Species "HereticImpLeader" Health 80 -MISSILEMORE @@ -135,8 +131,6 @@ ACTOR HereticImpChunk2 ACTOR HereticImpBall { - Game Heretic - SpawnID 10 Radius 8 Height 8 Speed 10 diff --git a/wadsrc/static/actors/heretic/heretickeys.txt b/wadsrc/static/actors/heretic/heretickeys.txt index 3a34fe144..69d906e55 100644 --- a/wadsrc/static/actors/heretic/heretickeys.txt +++ b/wadsrc/static/actors/heretic/heretickeys.txt @@ -10,8 +10,6 @@ ACTOR HereticKey : Key ACTOR KeyGreen : HereticKey { - Game Heretic - SpawnID 86 Inventory.PickupMessage "$TXT_GOTGREENKEY" Inventory.Icon "GKEYICON" States @@ -26,8 +24,6 @@ ACTOR KeyGreen : HereticKey ACTOR KeyBlue : HereticKey { - Game Heretic - SpawnID 85 Inventory.PickupMessage "$TXT_GOTBLUEKEY" Inventory.Icon "BKEYICON" States @@ -42,8 +38,6 @@ ACTOR KeyBlue : HereticKey ACTOR KeyYellow : HereticKey { - Game Heretic - SpawnID 87 Inventory.PickupMessage "$TXT_GOTYELLOWKEY" Inventory.Icon "YKEYICON" States @@ -59,7 +53,6 @@ ACTOR KeyYellow : HereticKey ACTOR KeyGizmoBlue { - Game Heretic Radius 16 Height 50 +SOLID @@ -91,7 +84,6 @@ ACTOR KeyGizmoFloatBlue ACTOR KeyGizmoGreen { - Game Heretic Radius 16 Height 50 +SOLID @@ -123,7 +115,6 @@ ACTOR KeyGizmoFloatGreen ACTOR KeyGizmoYellow { - Game Heretic Radius 16 Height 50 +SOLID diff --git a/wadsrc/static/actors/heretic/hereticmisc.txt b/wadsrc/static/actors/heretic/hereticmisc.txt index 5231f819d..a8ef81b5d 100644 --- a/wadsrc/static/actors/heretic/hereticmisc.txt +++ b/wadsrc/static/actors/heretic/hereticmisc.txt @@ -3,8 +3,6 @@ ACTOR Pod { - Game Heretic - SpawnID 125 Health 45 Radius 16 Height 54 @@ -64,8 +62,6 @@ ACTOR PodGoo ACTOR PodGenerator { - Game Heretic - SpawnID 126 +NOBLOCKMAP +NOSECTOR +DONTSPLASH @@ -86,8 +82,6 @@ ACTOR PodGenerator ACTOR TeleGlitterGenerator1 { - Game Heretic - SpawnID 166 +NOBLOCKMAP +NOGRAVITY +DONTSPLASH @@ -104,8 +98,6 @@ ACTOR TeleGlitterGenerator1 ACTOR TeleGlitterGenerator2 { - Game Heretic - SpawnID 167 +NOBLOCKMAP +NOGRAVITY +DONTSPLASH @@ -162,8 +154,6 @@ ACTOR TeleGlitter2 : TeleGlitter1 ACTOR Volcano { - Game Heretic - SpawnID 150 Radius 12 Height 20 +SOLID @@ -187,8 +177,6 @@ ACTOR Volcano ACTOR VolcanoBlast { - Game Heretic - SpawnID 123 Radius 8 Height 8 Speed 2 @@ -219,8 +207,6 @@ ACTOR VolcanoBlast ACTOR VolcanoTBlast { - Game Heretic - SpawnID 124 Radius 8 Height 6 Speed 2 diff --git a/wadsrc/static/actors/heretic/hereticweaps.txt b/wadsrc/static/actors/heretic/hereticweaps.txt index f41a84f87..711c3fd29 100644 --- a/wadsrc/static/actors/heretic/hereticweaps.txt +++ b/wadsrc/static/actors/heretic/hereticweaps.txt @@ -9,7 +9,6 @@ ACTOR HereticWeapon : Weapon ACTOR Staff : HereticWeapon { - Game Heretic Weapon.SelectionOrder 3800 +THRUGHOST +WIMPY_WEAPON @@ -41,7 +40,6 @@ ACTOR Staff : HereticWeapon ACTOR StaffPowered : Staff { - Game Heretic Weapon.sisterweapon "Staff" Weapon.ReadySound "weapons/staffcrackle" +WEAPON.POWERED_UP @@ -112,7 +110,6 @@ ACTOR StaffPuff2 ACTOR GoldWand : HereticWeapon { - Game Heretic +BLOODSPLATTER Weapon.SelectionOrder 2000 Weapon.AmmoGive 25 @@ -151,7 +148,6 @@ ACTOR GoldWand : HereticWeapon ACTOR GoldWandPowered : GoldWand { - Game Heretic +WEAPON.POWERED_UP Weapon.AmmoGive 0 Weapon.SisterWeapon "GoldWand" @@ -176,8 +172,6 @@ ACTOR GoldWandPowered : GoldWand ACTOR GoldWandFX1 { - Game Heretic - SpawnID 151 Radius 10 Height 6 Speed 22 @@ -201,8 +195,6 @@ ACTOR GoldWandFX1 ACTOR GoldWandFX2 : GoldWandFX1 { - Game Heretic - SpawnID 152 Speed 18 Damage 1 DeathSound "" @@ -250,8 +242,6 @@ ACTOR GoldWandPuff2 : GoldWandFX1 ACTOR Crossbow : HereticWeapon { - Game Heretic - SpawnID 27 Weapon.SelectionOrder 800 Weapon.AmmoUse 1 Weapon.AmmoGive 10 @@ -289,7 +279,6 @@ ACTOR Crossbow : HereticWeapon ACTOR CrossbowPowered : Crossbow { - Game Heretic +WEAPON.POWERED_UP Weapon.AmmoGive 0 Weapon.SisterWeapon "Crossbow" @@ -317,8 +306,6 @@ ACTOR CrossbowPowered : Crossbow ACTOR CrossbowFX1 { - Game Heretic - SpawnID 147 Radius 11 Height 8 Speed 30 @@ -344,8 +331,6 @@ ACTOR CrossbowFX1 ACTOR CrossbowFX2 : CrossbowFX1 { - Game Heretic - SpawnID 148 Speed 32 Damage 6 Obituary "$OB_MPPCROSSBOW" @@ -361,8 +346,6 @@ ACTOR CrossbowFX2 : CrossbowFX1 ACTOR CrossbowFX3 : CrossbowFX1 { - Game Heretic - SpawnID 149 Speed 20 Damage 2 SeeSound "" @@ -402,8 +385,6 @@ ACTOR CrossbowFX4 ACTOR Gauntlets : Weapon { - Game Heretic - SpawnID 32 +BLOODSPLATTER Weapon.SelectionOrder 2300 +WEAPON.WIMPY_WEAPON @@ -446,7 +427,6 @@ ACTOR Gauntlets : Weapon ACTOR GauntletsPowered : Gauntlets { - Game Heretic +POWERED_UP Tag "$TAG_GAUNTLETSP" Obituary "$OB_MPPGAUNTLETS" @@ -509,8 +489,6 @@ ACTOR GauntletPuff2 : GauntletPuff1 ACTOR Mace : HereticWeapon { - Game Heretic - SpawnID 31 Weapon.SelectionOrder 1400 Weapon.AmmoUse 1 Weapon.AmmoGive1 50 @@ -548,7 +526,6 @@ ACTOR Mace : HereticWeapon ACTOR MacePowered : Mace { - Game Heretic +WEAPON.POWERED_UP Weapon.AmmoUse 5 Weapon.AmmoGive 0 @@ -573,8 +550,6 @@ ACTOR MacePowered : Mace ACTOR MaceFX1 { - Game Heretic - SpawnID 154 Radius 8 Height 6 Speed 20 @@ -604,8 +579,6 @@ ACTOR MaceFX1 ACTOR MaceFX2 : MaceFX1 { - Game Heretic - SpawnID 156 Speed 10 Damage 6 Gravity 0.125 @@ -629,8 +602,6 @@ ACTOR MaceFX2 : MaceFX1 ACTOR MaceFX3 : MaceFX1 { - Game Heretic - SpawnID 155 Speed 7 Damage 4 -NOGRAVITY @@ -648,8 +619,6 @@ ACTOR MaceFX3 : MaceFX1 ACTOR MaceFX4 native { - Game Heretic - SpawnID 153 Radius 8 Height 6 Speed 7 @@ -683,7 +652,6 @@ ACTOR MaceFX4 native ACTOR MaceSpawner : SpecialSpot { - Game Heretic +NOSECTOR +NOBLOCKMAP States @@ -700,8 +668,6 @@ ACTOR MaceSpawner : SpecialSpot ACTOR Blaster : HereticWeapon { - Game Heretic - SpawnID 28 +BLOODSPLATTER Weapon.SelectionOrder 500 Weapon.AmmoUse 1 @@ -741,7 +707,6 @@ ACTOR Blaster : HereticWeapon ACTOR BlasterPowered : Blaster { - Game Heretic +WEAPON.POWERED_UP Weapon.AmmoUse 5 Weapon.AmmoGive 0 @@ -809,8 +774,6 @@ ACTOR BlasterSmoke ACTOR Ripper native { - Game Heretic - SpawnID 157 Radius 8 Height 6 Speed 14 @@ -856,8 +819,6 @@ ACTOR BlasterPuff ACTOR SkullRod : HereticWeapon { - Game Heretic - SpawnID 30 Weapon.SelectionOrder 200 Weapon.AmmoUse1 1 Weapon.AmmoGive1 50 @@ -892,7 +853,6 @@ ACTOR SkullRod : HereticWeapon ACTOR SkullRodPowered : SkullRod { - Game Heretic +WEAPON.POWERED_UP Weapon.AmmoUse1 5 Weapon.AmmoGive1 0 @@ -921,8 +881,6 @@ ACTOR SkullRodPowered : SkullRod ACTOR HornRodFX1 { - Game Heretic - SpawnID 160 Radius 12 Height 8 Speed 22 @@ -1030,8 +988,6 @@ ACTOR RainTracker : Inventory native ACTOR PhoenixRod : Weapon native { - Game Heretic - SpawnID 29 +WEAPON.NOAUTOFIRE Weapon.SelectionOrder 2600 Weapon.Kickback 150 @@ -1070,7 +1026,6 @@ ACTOR PhoenixRod : Weapon native ACTOR PhoenixRodPowered : PhoenixRod native { - Game Heretic +WEAPON.POWERED_UP +WEAPON.MELEEWEAPON Weapon.SisterWeapon "PhoenixRod" @@ -1098,8 +1053,6 @@ ACTOR PhoenixRodPowered : PhoenixRod native ACTOR PhoenixFX1 native { - Game Heretic - SpawnID 163 Radius 11 Height 8 Speed 20 diff --git a/wadsrc/static/actors/heretic/ironlich.txt b/wadsrc/static/actors/heretic/ironlich.txt index 5d9cfa7c0..4b3527a4f 100644 --- a/wadsrc/static/actors/heretic/ironlich.txt +++ b/wadsrc/static/actors/heretic/ironlich.txt @@ -3,8 +3,6 @@ ACTOR Ironlich { - Game Heretic - SpawnID 20 Health 700 Radius 40 Height 72 @@ -59,8 +57,6 @@ ACTOR Ironlich ACTOR HeadFX1 { - Game Heretic - SpawnID 164 Radius 12 Height 6 Speed 13 @@ -147,8 +143,6 @@ ACTOR HeadFX3 ACTOR Whirlwind native { - Game Heretic - SpawnID 165 Radius 16 Height 74 Speed 10 diff --git a/wadsrc/static/actors/heretic/knight.txt b/wadsrc/static/actors/heretic/knight.txt index 55ce2728c..4249f9549 100644 --- a/wadsrc/static/actors/heretic/knight.txt +++ b/wadsrc/static/actors/heretic/knight.txt @@ -3,8 +3,6 @@ ACTOR Knight { - Game Heretic - SpawnID 6 Health 200 Radius 24 Height 78 @@ -62,8 +60,6 @@ ACTOR Knight ACTOR KnightGhost : Knight { - Game Heretic - SpawnID 129 +SHADOW +GHOST RenderStyle Translucent @@ -74,8 +70,6 @@ ACTOR KnightGhost : Knight ACTOR KnightAxe { - Game Heretic - SpawnID 127 Radius 10 Height 8 Speed 9 @@ -105,8 +99,6 @@ ACTOR KnightAxe ACTOR RedAxe : KnightAxe { - Game Heretic - SpawnID 128 +NOBLOCKMAP -WINDTHRUST Damage 7 diff --git a/wadsrc/static/actors/heretic/mummy.txt b/wadsrc/static/actors/heretic/mummy.txt index 57b54c622..46e9deaba 100644 --- a/wadsrc/static/actors/heretic/mummy.txt +++ b/wadsrc/static/actors/heretic/mummy.txt @@ -3,8 +3,6 @@ ACTOR Mummy { - Game Heretic - SpawnID 4 Health 80 Radius 22 Height 62 @@ -53,8 +51,6 @@ ACTOR Mummy ACTOR MummyLeader : Mummy { - Game Heretic - SpawnID 2 Species "MummyLeader" Health 100 Painchance 64 @@ -76,8 +72,6 @@ ACTOR MummyLeader : Mummy ACTOR MummyGhost : Mummy { - Game Heretic - SpawnID 8 +SHADOW +GHOST RenderStyle Translucent @@ -88,8 +82,6 @@ ACTOR MummyGhost : Mummy ACTOR MummyLeaderGhost : MummyLeader { - Game Heretic - SpawnID 9 Species "MummyLeaderGhost" +SHADOW +GHOST @@ -116,8 +108,6 @@ ACTOR MummySoul ACTOR MummyFX1 { - Game Heretic - SpawnID 131 Radius 8 Height 14 Speed 9 diff --git a/wadsrc/static/actors/heretic/snake.txt b/wadsrc/static/actors/heretic/snake.txt index 1f7af5e51..93ed830db 100644 --- a/wadsrc/static/actors/heretic/snake.txt +++ b/wadsrc/static/actors/heretic/snake.txt @@ -1,8 +1,6 @@ ACTOR Snake { - Game Heretic - SpawnID 132 Health 280 Radius 22 Height 70 @@ -50,8 +48,6 @@ ACTOR Snake ACTOR SnakeProjA { - Game Heretic - SpawnID 138 Radius 12 Height 8 Speed 14 @@ -82,8 +78,6 @@ ACTOR SnakeProjA ACTOR SnakeProjB : SnakeProjA { - Game Heretic - SpawnID 139 Damage 3 +NOBLOCKMAP -WINDTHRUST diff --git a/wadsrc/static/actors/heretic/wizard.txt b/wadsrc/static/actors/heretic/wizard.txt index 5ea30d77d..f8f59a0ac 100644 --- a/wadsrc/static/actors/heretic/wizard.txt +++ b/wadsrc/static/actors/heretic/wizard.txt @@ -3,8 +3,6 @@ ACTOR Wizard { - Game Heretic - SpawnID 19 Health 180 Radius 16 Height 68 @@ -75,8 +73,6 @@ ACTOR Wizard ACTOR WizardFX1 { - Game Heretic - SpawnID 140 Radius 10 Height 6 Speed 18 diff --git a/wadsrc/static/actors/hexen/bats.txt b/wadsrc/static/actors/hexen/bats.txt index 79518a4e5..e7c5b9de7 100644 --- a/wadsrc/static/actors/hexen/bats.txt +++ b/wadsrc/static/actors/hexen/bats.txt @@ -3,7 +3,6 @@ ACTOR BatSpawner : SwitchableDecoration { - Game Hexen +NOBLOCKMAP +NOSECTOR +NOGRAVITY RenderStyle None diff --git a/wadsrc/static/actors/hexen/bishop.txt b/wadsrc/static/actors/hexen/bishop.txt index 67d3a753c..6d08d8d7b 100644 --- a/wadsrc/static/actors/hexen/bishop.txt +++ b/wadsrc/static/actors/hexen/bishop.txt @@ -3,8 +3,6 @@ ACTOR Bishop { - Game Hexen - SpawnID 19 Health 130 Radius 22 Height 65 @@ -81,7 +79,6 @@ ACTOR Bishop ACTOR BishopPuff { - Game Hexen +NOBLOCKMAP +NOGRAVITY RenderStyle Translucent Alpha 0.6 @@ -99,7 +96,6 @@ ACTOR BishopPuff ACTOR BishopPainBlur { - Game Hexen +NOBLOCKMAP +NOGRAVITY RenderStyle Translucent Alpha 0.6 @@ -115,7 +111,6 @@ ACTOR BishopPainBlur ACTOR BishopFX { - Game Hexen Radius 10 Height 6 Speed 10 diff --git a/wadsrc/static/actors/hexen/blastradius.txt b/wadsrc/static/actors/hexen/blastradius.txt index 6f3fe76ea..47802de5d 100644 --- a/wadsrc/static/actors/hexen/blastradius.txt +++ b/wadsrc/static/actors/hexen/blastradius.txt @@ -1,8 +1,6 @@ ACTOR ArtiBlastRadius : CustomInventory { - Game Hexen - SpawnID 74 +FLOATBOB Inventory.DefMaxAmount Inventory.PickupFlash "PickupFlash" diff --git a/wadsrc/static/actors/hexen/boostarmor.txt b/wadsrc/static/actors/hexen/boostarmor.txt index aface7971..f06ffa7ca 100644 --- a/wadsrc/static/actors/hexen/boostarmor.txt +++ b/wadsrc/static/actors/hexen/boostarmor.txt @@ -3,8 +3,6 @@ ACTOR ArtiBoostArmor : Inventory native { - Game Hexen - SpawnID 22 +COUNTITEM +FLOATBOB Inventory.DefMaxAmount diff --git a/wadsrc/static/actors/hexen/centaur.txt b/wadsrc/static/actors/hexen/centaur.txt index b59f79104..7ea7f5f32 100644 --- a/wadsrc/static/actors/hexen/centaur.txt +++ b/wadsrc/static/actors/hexen/centaur.txt @@ -2,8 +2,6 @@ ACTOR Centaur { - Game Hexen - SpawnID 1 Health 200 Painchance 135 Speed 13 @@ -80,8 +78,6 @@ ACTOR Centaur ACTOR CentaurLeader : Centaur { - Game Hexen - SpawnID 2 Health 250 PainChance 96 Speed 10 @@ -105,8 +101,6 @@ ACTOR CentaurLeader : Centaur ACTOR CentaurMash : Centaur { - Game Hexen - SpawnID 103 +NOBLOOD +BLASTED -TELESTOMP diff --git a/wadsrc/static/actors/hexen/clericboss.txt b/wadsrc/static/actors/hexen/clericboss.txt index ee8d4b1e5..e3b028b32 100644 --- a/wadsrc/static/actors/hexen/clericboss.txt +++ b/wadsrc/static/actors/hexen/clericboss.txt @@ -3,7 +3,6 @@ ACTOR ClericBoss { - Game Hexen Health 800 PainChance 50 Speed 25 diff --git a/wadsrc/static/actors/hexen/clericflame.txt b/wadsrc/static/actors/hexen/clericflame.txt index 9bb698362..c467c8469 100644 --- a/wadsrc/static/actors/hexen/clericflame.txt +++ b/wadsrc/static/actors/hexen/clericflame.txt @@ -3,7 +3,6 @@ ACTOR CWeapFlame : ClericWeapon { - Game Hexen +NOGRAVITY Weapon.SelectionOrder 1000 Weapon.AmmoUse 4 diff --git a/wadsrc/static/actors/hexen/clericholy.txt b/wadsrc/static/actors/hexen/clericholy.txt index e4f1d808b..745d58fd8 100644 --- a/wadsrc/static/actors/hexen/clericholy.txt +++ b/wadsrc/static/actors/hexen/clericholy.txt @@ -14,8 +14,6 @@ ACTOR ClericWeaponPiece : WeaponPiece ACTOR CWeaponPiece1 : ClericWeaponPiece { - Game Hexen - SpawnID 33 WeaponPiece.Number 1 States { @@ -29,8 +27,6 @@ ACTOR CWeaponPiece1 : ClericWeaponPiece ACTOR CWeaponPiece2 : ClericWeaponPiece { - Game Hexen - SpawnID 34 WeaponPiece.Number 2 States { @@ -44,8 +40,6 @@ ACTOR CWeaponPiece2 : ClericWeaponPiece ACTOR CWeaponPiece3 : ClericWeaponPiece { - Game Hexen - SpawnID 35 WeaponPiece.Number 3 States { @@ -72,7 +66,6 @@ ACTOR WraithvergeDrop ACTOR CWeapWraithverge : ClericWeapon native { - Game Hexen Health 3 Weapon.SelectionOrder 3000 +WEAPON.PRIMARY_USES_BOTH diff --git a/wadsrc/static/actors/hexen/clericmace.txt b/wadsrc/static/actors/hexen/clericmace.txt index 14ef4b00f..bbeda50aa 100644 --- a/wadsrc/static/actors/hexen/clericmace.txt +++ b/wadsrc/static/actors/hexen/clericmace.txt @@ -3,7 +3,6 @@ ACTOR CWeapMace : ClericWeapon { - Game Hexen Weapon.SelectionOrder 3500 Weapon.KickBack 150 Weapon.YAdjust -8 diff --git a/wadsrc/static/actors/hexen/clericstaff.txt b/wadsrc/static/actors/hexen/clericstaff.txt index 9b5b050d7..7a2926023 100644 --- a/wadsrc/static/actors/hexen/clericstaff.txt +++ b/wadsrc/static/actors/hexen/clericstaff.txt @@ -3,8 +3,6 @@ ACTOR CWeapStaff : ClericWeapon { - Game Hexen - SpawnID 32 Weapon.SelectionOrder 1600 Weapon.AmmoUse1 1 Weapon.AmmoGive1 25 diff --git a/wadsrc/static/actors/hexen/demons.txt b/wadsrc/static/actors/hexen/demons.txt index f6bb7a1bf..561608f64 100644 --- a/wadsrc/static/actors/hexen/demons.txt +++ b/wadsrc/static/actors/hexen/demons.txt @@ -3,8 +3,6 @@ ACTOR Demon1 { - Game Hexen - SpawnID 3 Health 250 Painchance 50 Speed 13 @@ -70,8 +68,6 @@ ACTOR Demon1 ACTOR Demon1Mash : Demon1 { - Game Hexen - SpawnID 100 +NOBLOOD +BLASTED -TELESTOMP @@ -214,7 +210,6 @@ ACTOR Demon1FX1 ACTOR Demon2 : Demon1 { - Game Hexen Obituary "$OB_DEMON2" Species "Demon2" States @@ -262,8 +257,6 @@ ACTOR Demon2 : Demon1 ACTOR Demon2Mash : Demon2 { - Game Hexen - SpawnID 101 +NOBLOOD +BLASTED -TELESTOMP diff --git a/wadsrc/static/actors/hexen/dragon.txt b/wadsrc/static/actors/hexen/dragon.txt index 811f1a4b1..ea3b01293 100644 --- a/wadsrc/static/actors/hexen/dragon.txt +++ b/wadsrc/static/actors/hexen/dragon.txt @@ -3,7 +3,6 @@ ACTOR Dragon { - Game Hexen Health 640 PainChance 128 Speed 10 diff --git a/wadsrc/static/actors/hexen/ettin.txt b/wadsrc/static/actors/hexen/ettin.txt index 98d70c995..04f920aa1 100644 --- a/wadsrc/static/actors/hexen/ettin.txt +++ b/wadsrc/static/actors/hexen/ettin.txt @@ -3,8 +3,6 @@ ACTOR Ettin { - Game Hexen - SpawnID 4 Health 175 Radius 25 Height 68 @@ -91,8 +89,6 @@ ACTOR EttinMace ACTOR EttinMash : Ettin { - Game Hexen - SpawnID 102 +NOBLOOD +NOICEDEATH RenderStyle Translucent diff --git a/wadsrc/static/actors/hexen/fighteraxe.txt b/wadsrc/static/actors/hexen/fighteraxe.txt index f7b7ae4bf..b3bea4007 100644 --- a/wadsrc/static/actors/hexen/fighteraxe.txt +++ b/wadsrc/static/actors/hexen/fighteraxe.txt @@ -3,8 +3,6 @@ ACTOR FWeapAxe : FighterWeapon native { - Game Hexen - SpawnID 27 Weapon.SelectionOrder 1500 +WEAPON.AXEBLOOD +WEAPON.AMMO_OPTIONAL +WEAPON.MELEEWEAPON Weapon.AmmoUse1 2 diff --git a/wadsrc/static/actors/hexen/fighterboss.txt b/wadsrc/static/actors/hexen/fighterboss.txt index 5f5e20f1e..a41dd422c 100644 --- a/wadsrc/static/actors/hexen/fighterboss.txt +++ b/wadsrc/static/actors/hexen/fighterboss.txt @@ -3,7 +3,6 @@ ACTOR FighterBoss { - Game Hexen health 800 PainChance 50 Speed 25 diff --git a/wadsrc/static/actors/hexen/fighterfist.txt b/wadsrc/static/actors/hexen/fighterfist.txt index 0122d7f74..43a8b9862 100644 --- a/wadsrc/static/actors/hexen/fighterfist.txt +++ b/wadsrc/static/actors/hexen/fighterfist.txt @@ -3,7 +3,6 @@ ACTOR FWeapFist : FighterWeapon { - Game Hexen +BLOODSPLATTER Weapon.SelectionOrder 3400 +WEAPON.MELEEWEAPON diff --git a/wadsrc/static/actors/hexen/fighterhammer.txt b/wadsrc/static/actors/hexen/fighterhammer.txt index 9cfa4f066..f2b53ea93 100644 --- a/wadsrc/static/actors/hexen/fighterhammer.txt +++ b/wadsrc/static/actors/hexen/fighterhammer.txt @@ -3,8 +3,6 @@ ACTOR FWeapHammer : FighterWeapon { - Game Hexen - SpawnID 28 +BLOODSPLATTER Weapon.SelectionOrder 900 +WEAPON.AMMO_OPTIONAL +WEAPON.MELEEWEAPON diff --git a/wadsrc/static/actors/hexen/fighterplayer.txt b/wadsrc/static/actors/hexen/fighterplayer.txt index 809b1f9e9..14f28b3a8 100644 --- a/wadsrc/static/actors/hexen/fighterplayer.txt +++ b/wadsrc/static/actors/hexen/fighterplayer.txt @@ -104,7 +104,6 @@ ACTOR FighterPlayer : PlayerPawn Actor BloodyFighterSkull : PlayerChunk { - Game Hexen Radius 4 Height 4 +NOBLOCKMAP diff --git a/wadsrc/static/actors/hexen/fighterquietus.txt b/wadsrc/static/actors/hexen/fighterquietus.txt index 5208d8558..fa249a932 100644 --- a/wadsrc/static/actors/hexen/fighterquietus.txt +++ b/wadsrc/static/actors/hexen/fighterquietus.txt @@ -14,8 +14,6 @@ ACTOR FighterWeaponPiece : WeaponPiece ACTOR FWeaponPiece1 : FighterWeaponPiece { - Game Hexen - SpawnID 29 WeaponPiece.Number 1 States { @@ -29,8 +27,6 @@ ACTOR FWeaponPiece1 : FighterWeaponPiece ACTOR FWeaponPiece2 : FighterWeaponPiece { - Game Hexen - SpawnID 30 WeaponPiece.Number 2 States { @@ -44,8 +40,6 @@ ACTOR FWeaponPiece2 : FighterWeaponPiece ACTOR FWeaponPiece3 : FighterWeaponPiece { - Game Hexen - SpawnID 31 WeaponPiece.Number 3 States { @@ -72,7 +66,6 @@ ACTOR QuietusDrop ACTOR FWeapQuietus : FighterWeapon { - Game Hexen Health 3 Weapon.SelectionOrder 2900 +WEAPON.PRIMARY_USES_BOTH diff --git a/wadsrc/static/actors/hexen/firedemon.txt b/wadsrc/static/actors/hexen/firedemon.txt index 2c3eb6653..5a735f106 100644 --- a/wadsrc/static/actors/hexen/firedemon.txt +++ b/wadsrc/static/actors/hexen/firedemon.txt @@ -3,8 +3,6 @@ ACTOR FireDemon { - Game Hexen - SpawnID 5 Health 80 ReactionTime 8 PainChance 1 @@ -76,7 +74,6 @@ ACTOR FireDemon ACTOR FireDemonSplotch1 { - Game Hexen Health 1000 ReactionTime 8 Radius 3 @@ -112,7 +109,6 @@ ACTOR FireDemonSplotch2 : FireDemonSplotch1 ACTOR FireDemonRock1 { - Game Hexen Health 1000 ReactionTime 8 Radius 3 @@ -140,7 +136,6 @@ ACTOR FireDemonRock1 ACTOR FireDemonRock2 : FireDemonRock1 { - Game Hexen States { Spawn: @@ -158,7 +153,6 @@ ACTOR FireDemonRock2 : FireDemonRock1 ACTOR FireDemonRock3 : FireDemonRock1 { - Game Hexen States { Spawn: @@ -176,7 +170,6 @@ ACTOR FireDemonRock3 : FireDemonRock1 ACTOR FireDemonRock4 : FireDemonRock1 { - Game Hexen States { Spawn: @@ -194,7 +187,6 @@ ACTOR FireDemonRock4 : FireDemonRock1 ACTOR FireDemonRock5 : FireDemonRock1 { - Game Hexen States { Spawn: diff --git a/wadsrc/static/actors/hexen/flame.txt b/wadsrc/static/actors/hexen/flame.txt index 492e04fde..3fc9fa595 100644 --- a/wadsrc/static/actors/hexen/flame.txt +++ b/wadsrc/static/actors/hexen/flame.txt @@ -2,8 +2,6 @@ ACTOR FlameSmallTemp { - Game Hexen - SpawnID 96 +NOTELEPORT RenderStyle Add States @@ -23,8 +21,6 @@ ACTOR FlameSmallTemp ACTOR FlameLargeTemp { - Game Hexen - SpawnID 98 +NOTELEPORT RenderStyle Add States @@ -54,8 +50,6 @@ ACTOR FlameLargeTemp ACTOR FlameSmall : SwitchableDecoration { - Game Hexen - SpawnID 97 +NOTELEPORT +INVISIBLE Radius 15 @@ -79,16 +73,12 @@ ACTOR FlameSmall : SwitchableDecoration ACTOR FlameSmall2 : FlameSmall { - Game Hexen - SpawnID 66 } // Large Flame -------------------------------------------------------------- ACTOR FlameLarge : SwitchableDecoration { - Game Hexen - SpawnID 99 +NOTELEPORT +INVISIBLE Radius 15 @@ -112,7 +102,5 @@ ACTOR FlameLarge : SwitchableDecoration ACTOR FlameLarge2 : FlameLarge { - Game Hexen - SpawnID 67 } diff --git a/wadsrc/static/actors/hexen/flechette.txt b/wadsrc/static/actors/hexen/flechette.txt index e2e157ee5..137e72cab 100644 --- a/wadsrc/static/actors/hexen/flechette.txt +++ b/wadsrc/static/actors/hexen/flechette.txt @@ -3,7 +3,6 @@ ACTOR PoisonBag { - Game Hexen Radius 5 Height 5 +NOBLOCKMAP +NOGRAVITY @@ -51,7 +50,6 @@ ACTOR FireBomb ACTOR ThrowingBomb { - Game Hexen Health 48 Speed 12 Radius 8 @@ -96,8 +94,6 @@ ACTOR ThrowingBomb ACTOR ArtiPoisonBag : Inventory native { - Game Hexen - SpawnID 72 +FLOATBOB Inventory.DefMaxAmount Inventory.PickupFlash "PickupFlash" @@ -191,7 +187,6 @@ ACTOR PoisonCloud native ACTOR ZPoisonShroom : PoisonBag { - Game Hexen Radius 6 Height 20 PainChance 255 diff --git a/wadsrc/static/actors/hexen/flies.txt b/wadsrc/static/actors/hexen/flies.txt index 138749a44..e297cc289 100644 --- a/wadsrc/static/actors/hexen/flies.txt +++ b/wadsrc/static/actors/hexen/flies.txt @@ -3,7 +3,6 @@ ACTOR LittleFly { - Game Hexen +NOBLOCKMAP +NOGRAVITY +CANPASS diff --git a/wadsrc/static/actors/hexen/fog.txt b/wadsrc/static/actors/hexen/fog.txt index 9b76bdc7a..1689b5061 100644 --- a/wadsrc/static/actors/hexen/fog.txt +++ b/wadsrc/static/actors/hexen/fog.txt @@ -3,7 +3,6 @@ ACTOR FogSpawner { - Game Hexen +NOSECTOR +NOBLOCKMAP +FLOATBOB +NOGRAVITY @@ -23,7 +22,6 @@ ACTOR FogSpawner ACTOR FogPatchSmall { - Game Hexen Speed 1 +NOBLOCKMAP +NOGRAVITY +NOCLIP +FLOAT +NOTELEPORT @@ -47,7 +45,6 @@ ACTOR FogPatchSmall ACTOR FogPatchMedium : FogPatchSmall { - Game Hexen States { Spawn: @@ -63,7 +60,6 @@ ACTOR FogPatchMedium : FogPatchSmall ACTOR FogPatchLarge : FogPatchMedium { - Game Hexen States { Spawn: diff --git a/wadsrc/static/actors/hexen/healingradius.txt b/wadsrc/static/actors/hexen/healingradius.txt index eefff43ae..04187c898 100644 --- a/wadsrc/static/actors/hexen/healingradius.txt +++ b/wadsrc/static/actors/hexen/healingradius.txt @@ -3,7 +3,6 @@ ACTOR ArtiHealingRadius : Inventory native { - Game Hexen +COUNTITEM +FLOATBOB Inventory.DefMaxAmount diff --git a/wadsrc/static/actors/hexen/heresiarch.txt b/wadsrc/static/actors/hexen/heresiarch.txt index f883fae41..90f11bfb0 100644 --- a/wadsrc/static/actors/hexen/heresiarch.txt +++ b/wadsrc/static/actors/hexen/heresiarch.txt @@ -3,7 +3,6 @@ ACTOR Heresiarch native { - Game Hexen Health 5000 Painchance 10 Speed 16 diff --git a/wadsrc/static/actors/hexen/hexenarmor.txt b/wadsrc/static/actors/hexen/hexenarmor.txt index 9daffbbbe..97b9e0266 100644 --- a/wadsrc/static/actors/hexen/hexenarmor.txt +++ b/wadsrc/static/actors/hexen/hexenarmor.txt @@ -3,8 +3,6 @@ ACTOR MeshArmor : HexenArmor { - Game Hexen - SpawnID 68 +NOGRAVITY Health 0 // Armor class Inventory.Amount 0 @@ -21,8 +19,6 @@ ACTOR MeshArmor : HexenArmor ACTOR FalconShield : HexenArmor { - Game Hexen - SpawnID 69 +NOGRAVITY Health 1 // Armor class Inventory.Amount 0 @@ -39,8 +35,6 @@ ACTOR FalconShield : HexenArmor ACTOR PlatinumHelm : HexenArmor { - Game Hexen - SpawnID 70 +NOGRAVITY Health 2 // Armor class Inventory.Amount 0 @@ -57,8 +51,6 @@ ACTOR PlatinumHelm : HexenArmor ACTOR AmuletOfWarding : HexenArmor { - Game Hexen - SpawnID 71 +NOGRAVITY Health 3 // Armor class Inventory.Amount 0 diff --git a/wadsrc/static/actors/hexen/hexendecorations.txt b/wadsrc/static/actors/hexen/hexendecorations.txt index 3a172b51b..4fd673a44 100644 --- a/wadsrc/static/actors/hexen/hexendecorations.txt +++ b/wadsrc/static/actors/hexen/hexendecorations.txt @@ -1,6 +1,5 @@ ACTOR ZWingedStatue { - Game Hexen Radius 10 Height 62 +SOLID @@ -14,7 +13,6 @@ ACTOR ZWingedStatue ACTOR ZRock1 { - Game Hexen Radius 20 Height 16 States @@ -27,7 +25,6 @@ ACTOR ZRock1 ACTOR ZRock2 { - Game Hexen Radius 20 Height 16 States @@ -40,7 +37,6 @@ ACTOR ZRock2 ACTOR ZRock3 { - Game Hexen Radius 20 Height 16 States @@ -53,7 +49,6 @@ ACTOR ZRock3 ACTOR ZRock4 { - Game Hexen Radius 20 Height 16 States @@ -66,7 +61,6 @@ ACTOR ZRock4 ACTOR ZChandelier { - Game Hexen Radius 20 Height 60 +SPAWNCEILING @@ -81,7 +75,6 @@ ACTOR ZChandelier ACTOR ZChandelierUnlit { - Game Hexen Radius 20 Height 60 +SPAWNCEILING @@ -96,7 +89,6 @@ ACTOR ZChandelierUnlit ACTOR ZTreeDead { - Game Hexen Radius 10 Height 96 +SOLID @@ -110,7 +102,6 @@ ACTOR ZTreeDead ACTOR ZTree { - Game Hexen Radius 15 Height 128 +SOLID @@ -124,7 +115,6 @@ ACTOR ZTree ACTOR ZTreeSwamp150 { - Game Hexen Radius 10 Height 150 +SOLID @@ -138,7 +128,6 @@ ACTOR ZTreeSwamp150 ACTOR ZTreeSwamp120 { - Game Hexen Radius 10 Height 120 +SOLID @@ -152,7 +141,6 @@ ACTOR ZTreeSwamp120 ACTOR ZStumpBurned { - Game Hexen Radius 12 Height 20 +SOLID @@ -166,7 +154,6 @@ ACTOR ZStumpBurned ACTOR ZStumpBare { - Game Hexen Radius 12 Height 20 +SOLID @@ -180,7 +167,6 @@ ACTOR ZStumpBare ACTOR ZStumpSwamp1 { - Game Hexen Radius 20 Height 16 States @@ -193,7 +179,6 @@ ACTOR ZStumpSwamp1 ACTOR ZStumpSwamp2 { - Game Hexen Radius 20 Height 16 States @@ -206,7 +191,6 @@ ACTOR ZStumpSwamp2 ACTOR ZShroomLarge1 { - Game Hexen Radius 20 Height 16 States @@ -219,7 +203,6 @@ ACTOR ZShroomLarge1 ACTOR ZShroomLarge2 { - Game Hexen Radius 20 Height 16 States @@ -232,7 +215,6 @@ ACTOR ZShroomLarge2 ACTOR ZShroomLarge3 { - Game Hexen Radius 20 Height 16 States @@ -245,7 +227,6 @@ ACTOR ZShroomLarge3 ACTOR ZShroomSmall1 { - Game Hexen Radius 20 Height 16 States @@ -258,7 +239,6 @@ ACTOR ZShroomSmall1 ACTOR ZShroomSmall2 { - Game Hexen Radius 20 Height 16 States @@ -271,7 +251,6 @@ ACTOR ZShroomSmall2 ACTOR ZShroomSmall3 { - Game Hexen Radius 20 Height 16 States @@ -284,7 +263,6 @@ ACTOR ZShroomSmall3 ACTOR ZShroomSmall4 { - Game Hexen Radius 20 Height 16 States @@ -297,7 +275,6 @@ ACTOR ZShroomSmall4 ACTOR ZShroomSmall5 { - Game Hexen Radius 20 Height 16 States @@ -310,7 +287,6 @@ ACTOR ZShroomSmall5 ACTOR ZStalagmitePillar { - Game Hexen Radius 8 Height 138 +SOLID @@ -324,7 +300,6 @@ ACTOR ZStalagmitePillar ACTOR ZStalagmiteLarge { - Game Hexen Radius 8 Height 48 +SOLID @@ -338,7 +313,6 @@ ACTOR ZStalagmiteLarge ACTOR ZStalagmiteMedium { - Game Hexen Radius 6 Height 40 +SOLID @@ -352,7 +326,6 @@ ACTOR ZStalagmiteMedium ACTOR ZStalagmiteSmall { - Game Hexen Radius 8 Height 36 +SOLID @@ -366,7 +339,6 @@ ACTOR ZStalagmiteSmall ACTOR ZStalactiteLarge { - Game Hexen Radius 8 Height 66 +SOLID @@ -382,7 +354,6 @@ ACTOR ZStalactiteLarge ACTOR ZStalactiteMedium { - Game Hexen Radius 6 Height 50 +SOLID @@ -398,7 +369,6 @@ ACTOR ZStalactiteMedium ACTOR ZStalactiteSmall { - Game Hexen Radius 8 Height 40 +SOLID @@ -414,7 +384,6 @@ ACTOR ZStalactiteSmall ACTOR ZMossCeiling1 { - Game Hexen Radius 20 Height 20 +SPAWNCEILING @@ -429,7 +398,6 @@ ACTOR ZMossCeiling1 ACTOR ZMossCeiling2 { - Game Hexen Radius 20 Height 24 +SPAWNCEILING @@ -444,7 +412,6 @@ ACTOR ZMossCeiling2 ACTOR ZSwampVine { - Game Hexen Radius 8 Height 52 +SOLID @@ -458,7 +425,6 @@ ACTOR ZSwampVine ACTOR ZCorpseKabob { - Game Hexen Radius 10 Height 92 +SOLID @@ -472,7 +438,6 @@ ACTOR ZCorpseKabob ACTOR ZCorpseSleeping { - Game Hexen Radius 20 Height 16 States @@ -485,7 +450,6 @@ ACTOR ZCorpseSleeping ACTOR ZTombstoneRIP { - Game Hexen Radius 10 Height 46 +SOLID @@ -499,7 +463,6 @@ ACTOR ZTombstoneRIP ACTOR ZTombstoneShane { - Game Hexen Radius 10 Height 46 +SOLID @@ -513,7 +476,6 @@ ACTOR ZTombstoneShane ACTOR ZTombstoneBigCross { - Game Hexen Radius 10 Height 46 +SOLID @@ -527,7 +489,6 @@ ACTOR ZTombstoneBigCross ACTOR ZTombstoneBrianR { - Game Hexen Radius 10 Height 52 +SOLID @@ -541,7 +502,6 @@ ACTOR ZTombstoneBrianR ACTOR ZTombstoneCrossCircle { - Game Hexen Radius 10 Height 52 +SOLID @@ -555,7 +515,6 @@ ACTOR ZTombstoneCrossCircle ACTOR ZTombstoneSmallCross { - Game Hexen Radius 8 Height 46 +SOLID @@ -569,7 +528,6 @@ ACTOR ZTombstoneSmallCross ACTOR ZTombstoneBrianP { - Game Hexen Radius 8 Height 46 +SOLID @@ -583,7 +541,6 @@ ACTOR ZTombstoneBrianP ACTOR ZCorpseHanging { - Game Hexen Radius 6 Height 75 +SOLID @@ -599,7 +556,6 @@ ACTOR ZCorpseHanging ACTOR ZStatueGargoyleGreenTall { - Game Hexen Radius 14 Height 108 +SOLID @@ -613,7 +569,6 @@ ACTOR ZStatueGargoyleGreenTall ACTOR ZStatueGargoyleBlueTall { - Game Hexen Radius 14 Height 108 +SOLID @@ -627,7 +582,6 @@ ACTOR ZStatueGargoyleBlueTall ACTOR ZStatueGargoyleGreenShort { - Game Hexen Radius 14 Height 62 +SOLID @@ -641,7 +595,6 @@ ACTOR ZStatueGargoyleGreenShort ACTOR ZStatueGargoyleBlueShort { - Game Hexen Radius 14 Height 62 +SOLID @@ -655,7 +608,6 @@ ACTOR ZStatueGargoyleBlueShort ACTOR ZStatueGargoyleStripeTall { - Game Hexen Radius 14 Height 108 +SOLID @@ -669,7 +621,6 @@ ACTOR ZStatueGargoyleStripeTall ACTOR ZStatueGargoyleDarkRedTall { - Game Hexen Radius 14 Height 108 +SOLID @@ -683,7 +634,6 @@ ACTOR ZStatueGargoyleDarkRedTall ACTOR ZStatueGargoyleRedTall { - Game Hexen Radius 14 Height 108 +SOLID @@ -697,7 +647,6 @@ ACTOR ZStatueGargoyleRedTall ACTOR ZStatueGargoyleTanTall { - Game Hexen Radius 14 Height 108 +SOLID @@ -711,7 +660,6 @@ ACTOR ZStatueGargoyleTanTall ACTOR ZStatueGargoyleRustTall { - Game Hexen Radius 14 Height 108 +SOLID @@ -725,7 +673,6 @@ ACTOR ZStatueGargoyleRustTall ACTOR ZStatueGargoyleDarkRedShort { - Game Hexen Radius 14 Height 62 +SOLID @@ -739,7 +686,6 @@ ACTOR ZStatueGargoyleDarkRedShort ACTOR ZStatueGargoyleRedShort { - Game Hexen Radius 14 Height 62 +SOLID @@ -753,7 +699,6 @@ ACTOR ZStatueGargoyleRedShort ACTOR ZStatueGargoyleTanShort { - Game Hexen Radius 14 Height 62 +SOLID @@ -767,7 +712,6 @@ ACTOR ZStatueGargoyleTanShort ACTOR ZStatueGargoyleRustShort { - Game Hexen Radius 14 Height 62 +SOLID @@ -781,7 +725,6 @@ ACTOR ZStatueGargoyleRustShort ACTOR ZBannerTattered { - Game Hexen Radius 8 Height 120 +SOLID @@ -795,7 +738,6 @@ ACTOR ZBannerTattered ACTOR ZTreeLarge1 { - Game Hexen Radius 15 Height 180 +SOLID @@ -809,7 +751,6 @@ ACTOR ZTreeLarge1 ACTOR ZTreeLarge2 { - Game Hexen Radius 15 Height 180 +SOLID @@ -823,7 +764,6 @@ ACTOR ZTreeLarge2 ACTOR ZTreeGnarled1 { - Game Hexen Radius 22 Height 100 +SOLID @@ -837,7 +777,6 @@ ACTOR ZTreeGnarled1 ACTOR ZTreeGnarled2 { - Game Hexen Radius 22 Height 100 +SOLID @@ -851,7 +790,6 @@ ACTOR ZTreeGnarled2 ACTOR ZLog { - Game Hexen Radius 20 Height 25 +SOLID @@ -865,7 +803,6 @@ ACTOR ZLog ACTOR ZStalactiteIceLarge { - Game Hexen Radius 8 Height 66 +SOLID @@ -881,7 +818,6 @@ ACTOR ZStalactiteIceLarge ACTOR ZStalactiteIceMedium { - Game Hexen Radius 5 Height 50 +SOLID @@ -897,7 +833,6 @@ ACTOR ZStalactiteIceMedium ACTOR ZStalactiteIceSmall { - Game Hexen Radius 4 Height 32 +SOLID @@ -913,7 +848,6 @@ ACTOR ZStalactiteIceSmall ACTOR ZStalactiteIceTiny { - Game Hexen Radius 4 Height 8 +SOLID @@ -929,7 +863,6 @@ ACTOR ZStalactiteIceTiny ACTOR ZStalagmiteIceLarge { - Game Hexen Radius 8 Height 66 +SOLID @@ -943,7 +876,6 @@ ACTOR ZStalagmiteIceLarge ACTOR ZStalagmiteIceMedium { - Game Hexen Radius 5 Height 50 +SOLID @@ -957,7 +889,6 @@ ACTOR ZStalagmiteIceMedium ACTOR ZStalagmiteIceSmall { - Game Hexen Radius 4 Height 32 +SOLID @@ -971,7 +902,6 @@ ACTOR ZStalagmiteIceSmall ACTOR ZStalagmiteIceTiny { - Game Hexen Radius 4 Height 8 +SOLID @@ -985,7 +915,6 @@ ACTOR ZStalagmiteIceTiny ACTOR ZRockBrown1 { - Game Hexen Radius 17 Height 72 +SOLID @@ -999,7 +928,6 @@ ACTOR ZRockBrown1 ACTOR ZRockBrown2 { - Game Hexen Radius 15 Height 50 +SOLID @@ -1013,7 +941,6 @@ ACTOR ZRockBrown2 ACTOR ZRockBlack { - Game Hexen Radius 20 Height 40 +SOLID @@ -1027,7 +954,6 @@ ACTOR ZRockBlack ACTOR ZRubble1 { - Game Hexen Radius 20 Height 16 States @@ -1040,7 +966,6 @@ ACTOR ZRubble1 ACTOR ZRubble2 { - Game Hexen Radius 20 Height 16 States @@ -1053,7 +978,6 @@ ACTOR ZRubble2 ACTOR ZRubble3 { - Game Hexen Radius 20 Height 16 States @@ -1066,7 +990,6 @@ ACTOR ZRubble3 ACTOR ZVasePillar { - Game Hexen Radius 12 Height 54 +SOLID @@ -1080,7 +1003,6 @@ ACTOR ZVasePillar ACTOR ZCorpseLynched { - Game Hexen Radius 11 Height 95 +SOLID @@ -1096,7 +1018,6 @@ ACTOR ZCorpseLynched ACTOR ZCandle { - Game Hexen Radius 20 Height 16 +NOGRAVITY @@ -1111,7 +1032,6 @@ ACTOR ZCandle ACTOR ZBarrel { - Game Hexen Radius 15 Height 32 +SOLID @@ -1125,7 +1045,6 @@ ACTOR ZBarrel ACTOR ZBucket { - Game Hexen Radius 8 Height 72 +SOLID @@ -1141,7 +1060,6 @@ ACTOR ZBucket ACTOR FireThing { - Game Hexen Radius 5 Height 10 +SOLID @@ -1163,7 +1081,6 @@ ACTOR FireThing ACTOR BrassTorch { - Game Hexen Radius 6 Height 35 +SOLID @@ -1177,7 +1094,6 @@ ACTOR BrassTorch ACTOR ZBlueCandle { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1191,7 +1107,6 @@ ACTOR ZBlueCandle ACTOR ZIronMaiden { - Game Hexen Radius 12 Height 60 +SOLID @@ -1205,7 +1120,6 @@ ACTOR ZIronMaiden ACTOR ZChainBit32 { - Game Hexen Radius 4 Height 32 +SPAWNCEILING @@ -1221,7 +1135,6 @@ ACTOR ZChainBit32 ACTOR ZChainBit64 { - Game Hexen Radius 4 Height 64 +SPAWNCEILING @@ -1237,7 +1150,6 @@ ACTOR ZChainBit64 ACTOR ZChainEndHeart { - Game Hexen Radius 4 Height 32 +SPAWNCEILING @@ -1253,7 +1165,6 @@ ACTOR ZChainEndHeart ACTOR ZChainEndHook1 { - Game Hexen Radius 4 Height 32 +SPAWNCEILING @@ -1269,7 +1180,6 @@ ACTOR ZChainEndHook1 ACTOR ZChainEndHook2 { - Game Hexen Radius 4 Height 32 +SPAWNCEILING @@ -1285,7 +1195,6 @@ ACTOR ZChainEndHook2 ACTOR ZChainEndSpike { - Game Hexen Radius 4 Height 32 +SPAWNCEILING @@ -1301,7 +1210,6 @@ ACTOR ZChainEndSpike ACTOR ZChainEndSkull { - Game Hexen Radius 4 Height 32 +SPAWNCEILING @@ -1317,7 +1225,6 @@ ACTOR ZChainEndSkull ACTOR TableShit1 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1331,7 +1238,6 @@ ACTOR TableShit1 ACTOR TableShit2 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1345,7 +1251,6 @@ ACTOR TableShit2 ACTOR TableShit3 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1359,7 +1264,6 @@ ACTOR TableShit3 ACTOR TableShit4 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1373,7 +1277,6 @@ ACTOR TableShit4 ACTOR TableShit5 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1387,7 +1290,6 @@ ACTOR TableShit5 ACTOR TableShit6 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1401,7 +1303,6 @@ ACTOR TableShit6 ACTOR TableShit7 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1415,7 +1316,6 @@ ACTOR TableShit7 ACTOR TableShit8 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1429,7 +1329,6 @@ ACTOR TableShit8 ACTOR TableShit9 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1443,7 +1342,6 @@ ACTOR TableShit9 ACTOR TableShit10 { - Game Hexen Radius 20 Height 16 +NOBLOCKMAP @@ -1457,7 +1355,6 @@ ACTOR TableShit10 ACTOR TeleSmoke { - Game Hexen Radius 20 Height 16 +NOGRAVITY diff --git a/wadsrc/static/actors/hexen/hexenkeys.txt b/wadsrc/static/actors/hexen/hexenkeys.txt index f52b416ec..54e0a52ec 100644 --- a/wadsrc/static/actors/hexen/hexenkeys.txt +++ b/wadsrc/static/actors/hexen/hexenkeys.txt @@ -7,8 +7,6 @@ ACTOR HexenKey : Key ACTOR KeySteel : HexenKey { - Game Hexen - SpawnID 85 Inventory.Icon KEYSLOT1 Inventory.PickupMessage "$TXT_KEY_STEEL" States @@ -21,8 +19,6 @@ ACTOR KeySteel : HexenKey ACTOR KeyCave : HexenKey { - Game Hexen - SpawnID 86 Inventory.Icon KEYSLOT2 Inventory.PickupMessage "$TXT_KEY_CAVE" States @@ -35,8 +31,6 @@ ACTOR KeyCave : HexenKey ACTOR KeyAxe : HexenKey { - Game Hexen - SpawnID 87 Inventory.Icon KEYSLOT3 Inventory.PickupMessage "$TXT_KEY_AXE" States @@ -49,8 +43,6 @@ ACTOR KeyAxe : HexenKey ACTOR KeyFire : HexenKey { - Game Hexen - SpawnID 88 Inventory.Icon KEYSLOT4 Inventory.PickupMessage "$TXT_KEY_FIRE" States @@ -63,8 +55,6 @@ ACTOR KeyFire : HexenKey ACTOR KeyEmerald : HexenKey { - Game Hexen - SpawnID 89 Inventory.Icon KEYSLOT5 Inventory.PickupMessage "$TXT_KEY_EMERALD" States @@ -77,8 +67,6 @@ ACTOR KeyEmerald : HexenKey ACTOR KeyDungeon : HexenKey { - Game Hexen - SpawnID 90 Inventory.Icon KEYSLOT6 Inventory.PickupMessage "$TXT_KEY_DUNGEON" States @@ -91,8 +79,6 @@ ACTOR KeyDungeon : HexenKey ACTOR KeySilver : HexenKey { - Game Hexen - SpawnID 91 Inventory.Icon KEYSLOT7 Inventory.PickupMessage "$TXT_KEY_SILVER" States @@ -105,8 +91,6 @@ ACTOR KeySilver : HexenKey ACTOR KeyRusted : HexenKey { - Game Hexen - SpawnID 92 Inventory.Icon KEYSLOT8 Inventory.PickupMessage "$TXT_KEY_RUSTED" States @@ -119,8 +103,6 @@ ACTOR KeyRusted : HexenKey ACTOR KeyHorn : HexenKey { - Game Hexen - SpawnID 93 Inventory.Icon KEYSLOT9 Inventory.PickupMessage "$TXT_KEY_HORN" States @@ -133,8 +115,6 @@ ACTOR KeyHorn : HexenKey ACTOR KeySwamp : HexenKey { - Game Hexen - SpawnID 94 Inventory.Icon KEYSLOTA Inventory.PickupMessage "$TXT_KEY_SWAMP" States @@ -147,7 +127,6 @@ ACTOR KeySwamp : HexenKey ACTOR KeyCastle : HexenKey { - Game Hexen Inventory.Icon KEYSLOTB Inventory.PickupMessage "$TXT_KEY_CASTLE" States diff --git a/wadsrc/static/actors/hexen/hexenspecialdecs.txt b/wadsrc/static/actors/hexen/hexenspecialdecs.txt index 61dc0cb19..33ce577c7 100644 --- a/wadsrc/static/actors/hexen/hexenspecialdecs.txt +++ b/wadsrc/static/actors/hexen/hexenspecialdecs.txt @@ -3,7 +3,6 @@ ACTOR ZWingedStatueNoSkull : SwitchingDecoration { - Game Hexen Radius 10 Height 62 +SOLID @@ -23,7 +22,6 @@ ACTOR ZWingedStatueNoSkull : SwitchingDecoration ACTOR ZGemPedestal : SwitchingDecoration { - Game Hexen Radius 10 Height 40 +SOLID @@ -43,7 +41,6 @@ ACTOR ZGemPedestal : SwitchingDecoration ACTOR TreeDestructible { - Game Hexen Health 70 Radius 15 Height 180 @@ -79,7 +76,6 @@ ACTOR TreeDestructible ACTOR Pottery1 native { - Game Hexen Health 15 Speed 10 Height 32 @@ -104,7 +100,6 @@ ACTOR Pottery1 native ACTOR Pottery2 : Pottery1 { - Game Hexen Height 25 States { @@ -118,7 +113,6 @@ ACTOR Pottery2 : Pottery1 ACTOR Pottery3 : Pottery1 { - Game Hexen Height 25 States { @@ -177,7 +171,6 @@ ACTOR PotteryBit ACTOR BloodPool { - Game Hexen States { Spawn: @@ -191,7 +184,6 @@ ACTOR BloodPool ACTOR ZCorpseLynchedNoHeart native { - Game Hexen Radius 10 Height 100 +SOLID +SPAWNCEILING +NOGRAVITY @@ -257,7 +249,6 @@ ACTOR CorpseBit ACTOR ZCorpseSitting { - Game Hexen Health 30 Radius 15 Height 35 @@ -283,7 +274,6 @@ ACTOR ZCorpseSitting ACTOR LeafSpawner { - Game Hexen +NOBLOCKMAP +NOSECTOR +INVISIBLE @@ -359,7 +349,6 @@ ACTOR Leaf2 : Leaf1 ACTOR ZTwinedTorch : SwitchableDecoration { - Game Hexen Radius 10 Height 64 +SOLID @@ -378,7 +367,6 @@ ACTOR ZTwinedTorch : SwitchableDecoration ACTOR ZTwinedTorchUnlit : ZTwinedTorch { - Game Hexen States { Spawn: @@ -391,7 +379,6 @@ ACTOR ZTwinedTorchUnlit : ZTwinedTorch ACTOR ZWallTorch : SwitchableDecoration { - Game Hexen +NOBLOCKMAP +NOGRAVITY +FIXMAPTHINGPOS @@ -411,7 +398,6 @@ ACTOR ZWallTorch : SwitchableDecoration ACTOR ZWallTorchUnlit : ZWallTorch { - Game Hexen States { Spawn: @@ -424,7 +410,6 @@ ACTOR ZWallTorchUnlit : ZWallTorch ACTOR ZShrub1 { - Game Hexen Radius 8 Height 24 Health 20 @@ -449,7 +434,6 @@ ACTOR ZShrub1 ACTOR ZShrub2 { - Game Hexen Radius 16 Height 40 Health 20 @@ -475,7 +459,6 @@ ACTOR ZShrub2 ACTOR ZFireBull : SwitchableDecoration { - Game Hexen Radius 20 Height 80 +SOLID @@ -496,7 +479,6 @@ ACTOR ZFireBull : SwitchableDecoration ACTOR ZFireBullUnlit : ZFireBull { - Game Hexen States { Spawn: @@ -509,7 +491,6 @@ ACTOR ZFireBullUnlit : ZFireBull ACTOR ZSuitOfArmor { - Game Hexen Health 60 Radius 16 Height 72 @@ -569,7 +550,6 @@ ACTOR ZArmorChunk ACTOR ZBell native { - Game Hexen Health 5 Radius 56 Height 120 @@ -629,7 +609,6 @@ ACTOR ZBell native ACTOR ZXmasTree { - Game Hexen Radius 11 Height 130 Health 20 @@ -660,7 +639,6 @@ ACTOR ZXmasTree ACTOR ZCauldron : SwitchableDecoration { - Game Hexen Radius 12 Height 26 +SOLID @@ -679,7 +657,6 @@ ACTOR ZCauldron : SwitchableDecoration ACTOR ZCauldronUnlit : ZCauldron { - Game Hexen States { Spawn: @@ -692,8 +669,6 @@ ACTOR ZCauldronUnlit : ZCauldron ACTOR HWaterDrip { - Game Hexen - SpawnID 95 +MISSILE +LOWGRAVITY +NOTELEPORT diff --git a/wadsrc/static/actors/hexen/iceguy.txt b/wadsrc/static/actors/hexen/iceguy.txt index aaf16d4c6..a972c48e0 100644 --- a/wadsrc/static/actors/hexen/iceguy.txt +++ b/wadsrc/static/actors/hexen/iceguy.txt @@ -3,8 +3,6 @@ ACTOR IceGuy { - Game Hexen - SpawnID 20 Health 120 PainChance 144 Speed 14 diff --git a/wadsrc/static/actors/hexen/korax.txt b/wadsrc/static/actors/hexen/korax.txt index da48b580d..e0d634bbe 100644 --- a/wadsrc/static/actors/hexen/korax.txt +++ b/wadsrc/static/actors/hexen/korax.txt @@ -1,6 +1,5 @@ ACTOR Korax { - Game Hexen Health 5000 Painchance 20 Speed 10 diff --git a/wadsrc/static/actors/hexen/mageboss.txt b/wadsrc/static/actors/hexen/mageboss.txt index f8c5dc9e3..16aaee985 100644 --- a/wadsrc/static/actors/hexen/mageboss.txt +++ b/wadsrc/static/actors/hexen/mageboss.txt @@ -3,7 +3,6 @@ ACTOR MageBoss { - Game Hexen Health 800 PainChance 50 Speed 25 diff --git a/wadsrc/static/actors/hexen/magecone.txt b/wadsrc/static/actors/hexen/magecone.txt index a39dbcb86..ac37f98b8 100644 --- a/wadsrc/static/actors/hexen/magecone.txt +++ b/wadsrc/static/actors/hexen/magecone.txt @@ -3,8 +3,6 @@ ACTOR MWeapFrost : MageWeapon { - Game Hexen - SpawnID 36 +BLOODSPLATTER Weapon.SelectionOrder 1700 Weapon.AmmoUse1 3 @@ -79,8 +77,6 @@ ACTOR FrostMissile native ACTOR IceShard : FrostMissile { - Game Hexen - SpawnID 65 DamageType "Ice" -ACTIVATEIMPACT -ACTIVATEPCROSS diff --git a/wadsrc/static/actors/hexen/magelightning.txt b/wadsrc/static/actors/hexen/magelightning.txt index 0e507db58..daf65df95 100644 --- a/wadsrc/static/actors/hexen/magelightning.txt +++ b/wadsrc/static/actors/hexen/magelightning.txt @@ -3,7 +3,6 @@ ACTOR MWeapLightning : MageWeapon { - Game Hexen +NOGRAVITY Weapon.SelectionOrder 1100 Weapon.AmmoUse1 5 diff --git a/wadsrc/static/actors/hexen/magestaff.txt b/wadsrc/static/actors/hexen/magestaff.txt index 91864ff6f..4d56432bd 100644 --- a/wadsrc/static/actors/hexen/magestaff.txt +++ b/wadsrc/static/actors/hexen/magestaff.txt @@ -14,8 +14,6 @@ ACTOR MageWeaponPiece : WeaponPiece ACTOR MWeaponPiece1 : MageWeaponPiece { - Game Hexen - SpawnID 37 WeaponPiece.Number 1 States { @@ -29,8 +27,6 @@ ACTOR MWeaponPiece1 : MageWeaponPiece ACTOR MWeaponPiece2 : MageWeaponPiece { - Game Hexen - SpawnID 38 WeaponPiece.Number 2 States { @@ -44,8 +40,6 @@ ACTOR MWeaponPiece2 : MageWeaponPiece ACTOR MWeaponPiece3 : MageWeaponPiece { - Game Hexen - SpawnID 39 WeaponPiece.Number 3 States { @@ -72,7 +66,6 @@ ACTOR BloodscourgeDrop ACTOR MWeapBloodscourge : MageWeapon native { - Game Hexen Health 3 Weapon.SelectionOrder 3100 Weapon.AmmoUse1 15 diff --git a/wadsrc/static/actors/hexen/magewand.txt b/wadsrc/static/actors/hexen/magewand.txt index aaac9e5da..a27d6c446 100644 --- a/wadsrc/static/actors/hexen/magewand.txt +++ b/wadsrc/static/actors/hexen/magewand.txt @@ -3,7 +3,6 @@ ACTOR MWeapWand : MageWeapon { - Game Hexen Weapon.SelectionOrder 3600 Weapon.KickBack 0 Weapon.YAdjust 9 diff --git a/wadsrc/static/actors/hexen/mana.txt b/wadsrc/static/actors/hexen/mana.txt index c38bbcb8a..8123c3eb5 100644 --- a/wadsrc/static/actors/hexen/mana.txt +++ b/wadsrc/static/actors/hexen/mana.txt @@ -2,8 +2,6 @@ ACTOR Mana1 : Ammo { - Game Hexen - SpawnID 11 Inventory.Amount 15 Inventory.MaxAmount 200 Ammo.BackpackAmount 15 @@ -25,8 +23,6 @@ ACTOR Mana1 : Ammo ACTOR Mana2 : Ammo { - Game Hexen - SpawnID 12 Inventory.Amount 15 Inventory.MaxAmount 200 Ammo.BackpackAmount 15 @@ -48,8 +44,6 @@ ACTOR Mana2 : Ammo ACTOR Mana3 : CustomInventory { - Game Hexen - SpawnID 75 Radius 8 Height 8 +FLOATBOB @@ -70,8 +64,6 @@ ACTOR Mana3 : CustomInventory ACTOR ArtiBoostMana : CustomInventory { - Game Hexen - SpawnID 26 +FLOATBOB +COUNTITEM +INVENTORY.INVBAR diff --git a/wadsrc/static/actors/hexen/puzzleitems.txt b/wadsrc/static/actors/hexen/puzzleitems.txt index af571a336..b28470580 100644 --- a/wadsrc/static/actors/hexen/puzzleitems.txt +++ b/wadsrc/static/actors/hexen/puzzleitems.txt @@ -3,8 +3,6 @@ ACTOR PuzzSkull : PuzzleItem { - Game Hexen - SpawnID 76 PuzzleItem.Number 0 Inventory.Icon ARTISKLL Inventory.PickupMessage "$TXT_ARTIPUZZSKULL" @@ -22,8 +20,6 @@ ACTOR PuzzSkull : PuzzleItem ACTOR PuzzGemBig : PuzzleItem { - Game Hexen - SpawnID 77 PuzzleItem.Number 1 Inventory.Icon ARTIBGEM Inventory.PickupMessage "$TXT_ARTIPUZZGEMBIG" @@ -40,8 +36,6 @@ ACTOR PuzzGemBig : PuzzleItem ACTOR PuzzGemRed : PuzzleItem { - Game Hexen - SpawnID 78 PuzzleItem.Number 2 Inventory.Icon ARTIGEMR Inventory.PickupMessage "$TXT_ARTIPUZZGEMRED" @@ -59,8 +53,6 @@ ACTOR PuzzGemRed : PuzzleItem ACTOR PuzzGemGreen1 : PuzzleItem { - Game Hexen - SpawnID 79 PuzzleItem.Number 3 Inventory.Icon ARTIGEMG Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN1" @@ -78,8 +70,6 @@ ACTOR PuzzGemGreen1 : PuzzleItem ACTOR PuzzGemGreen2 : PuzzleItem { - Game Hexen - SpawnID 80 PuzzleItem.Number 4 Inventory.Icon ARTIGMG2 Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN2" @@ -97,8 +87,6 @@ ACTOR PuzzGemGreen2 : PuzzleItem ACTOR PuzzGemBlue1 : PuzzleItem { - Game Hexen - SpawnID 81 PuzzleItem.Number 5 Inventory.Icon ARTIGEMB Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE1" @@ -116,8 +104,6 @@ ACTOR PuzzGemBlue1 : PuzzleItem ACTOR PuzzGemBlue2 : PuzzleItem { - Game Hexen - SpawnID 82 PuzzleItem.Number 6 Inventory.Icon ARTIGMB2 Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE2" @@ -135,8 +121,6 @@ ACTOR PuzzGemBlue2 : PuzzleItem ACTOR PuzzBook1 : PuzzleItem { - Game Hexen - SpawnID 83 PuzzleItem.Number 7 Inventory.Icon ARTIBOK1 Inventory.PickupMessage "$TXT_ARTIPUZZBOOK1" @@ -154,8 +138,6 @@ ACTOR PuzzBook1 : PuzzleItem ACTOR PuzzBook2 : PuzzleItem { - Game Hexen - SpawnID 84 PuzzleItem.Number 8 Inventory.Icon ARTIBOK2 Inventory.PickupMessage "$TXT_ARTIPUZZBOOK2" @@ -174,7 +156,6 @@ ACTOR PuzzBook2 : PuzzleItem ACTOR PuzzFlameMask : PuzzleItem { - Game Hexen PuzzleItem.Number 9 Inventory.Icon ARTISKL2 Inventory.PickupMessage "$TXT_ARTIPUZZSKULL2" @@ -191,7 +172,6 @@ ACTOR PuzzFlameMask : PuzzleItem ACTOR PuzzFWeapon : PuzzleItem { - Game Hexen PuzzleItem.Number 10 Inventory.Icon ARTIFWEP Inventory.PickupMessage "$TXT_ARTIPUZZFWEAPON" @@ -209,7 +189,6 @@ ACTOR PuzzFWeapon : PuzzleItem ACTOR PuzzCWeapon : PuzzleItem { - Game Hexen PuzzleItem.Number 11 Inventory.Icon ARTICWEP Inventory.PickupMessage "$TXT_ARTIPUZZCWEAPON" @@ -227,7 +206,6 @@ ACTOR PuzzCWeapon : PuzzleItem ACTOR PuzzMWeapon : PuzzleItem { - Game Hexen PuzzleItem.Number 12 Inventory.Icon ARTIMWEP Inventory.PickupMessage "$TXT_ARTIPUZZMWEAPON" @@ -244,7 +222,6 @@ ACTOR PuzzMWeapon : PuzzleItem ACTOR PuzzGear1 : PuzzleItem { - Game Hexen PuzzleItem.Number 13 Inventory.Icon ARTIGEAR Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" @@ -262,7 +239,6 @@ ACTOR PuzzGear1 : PuzzleItem ACTOR PuzzGear2 : PuzzleItem { - Game Hexen PuzzleItem.Number 14 Inventory.Icon ARTIGER2 Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" @@ -280,7 +256,6 @@ ACTOR PuzzGear2 : PuzzleItem ACTOR PuzzGear3 : PuzzleItem { - Game Hexen PuzzleItem.Number 15 Inventory.Icon ARTIGER3 Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" @@ -298,7 +273,6 @@ ACTOR PuzzGear3 : PuzzleItem ACTOR PuzzGear4 : PuzzleItem { - Game Hexen PuzzleItem.Number 16 Inventory.Icon ARTIGER4 Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" diff --git a/wadsrc/static/actors/hexen/scriptprojectiles.txt b/wadsrc/static/actors/hexen/scriptprojectiles.txt index 9ad06b07b..d4d79f6e7 100644 --- a/wadsrc/static/actors/hexen/scriptprojectiles.txt +++ b/wadsrc/static/actors/hexen/scriptprojectiles.txt @@ -2,8 +2,6 @@ ACTOR FireBall { - Game Hexen - SpawnID 10 Speed 2 Radius 8 Height 8 @@ -28,8 +26,6 @@ ACTOR FireBall ACTOR Arrow { - Game Hexen - SpawnID 50 Speed 6 Radius 8 Height 4 @@ -51,8 +47,6 @@ ACTOR Arrow ACTOR Dart { - Game Hexen - SpawnID 51 Speed 6 Radius 8 Height 4 @@ -74,8 +68,6 @@ ACTOR Dart ACTOR PoisonDart : Dart { - Game Hexen - SpawnID 52 PoisonDamage 20 } @@ -83,8 +75,6 @@ ACTOR PoisonDart : Dart ACTOR RipperBall { - Game Hexen - SpawnID 53 Speed 6 Radius 8 Damage 2 @@ -114,8 +104,6 @@ ACTOR RipperBall ACTOR ProjectileBlade { - Game Hexen - SpawnID 64 Speed 6 Radius 6 Height 6 diff --git a/wadsrc/static/actors/hexen/serpent.txt b/wadsrc/static/actors/hexen/serpent.txt index ab666174a..b0337ccbe 100644 --- a/wadsrc/static/actors/hexen/serpent.txt +++ b/wadsrc/static/actors/hexen/serpent.txt @@ -3,8 +3,6 @@ ACTOR Serpent { - Game Hexen - SpawnID 6 Health 90 PainChance 96 Speed 12 @@ -104,8 +102,6 @@ ACTOR Serpent ACTOR SerpentLeader : Serpent { - Game Hexen - SpawnID 7 Mass 200 Obituary "$OB_SERPENT" States diff --git a/wadsrc/static/actors/hexen/speedboots.txt b/wadsrc/static/actors/hexen/speedboots.txt index 3644a659b..45c78472b 100644 --- a/wadsrc/static/actors/hexen/speedboots.txt +++ b/wadsrc/static/actors/hexen/speedboots.txt @@ -2,8 +2,6 @@ ACTOR ArtiSpeedBoots : PowerupGiver { - Game Hexen - SpawnID 13 +FLOATBOB +COUNTITEM +INVENTORY.PICKUPFLASH diff --git a/wadsrc/static/actors/hexen/spike.txt b/wadsrc/static/actors/hexen/spike.txt index 77691e915..9ca580970 100644 --- a/wadsrc/static/actors/hexen/spike.txt +++ b/wadsrc/static/actors/hexen/spike.txt @@ -81,8 +81,6 @@ ACTOR ThrustFloor native ACTOR ThrustFloorUp : ThrustFloor { - Game Hexen - SpawnID 104 +SOLID +NOTELEPORT +FLOORCLIP States @@ -96,10 +94,8 @@ ACTOR ThrustFloorUp : ThrustFloor ACTOR ThrustFloorDown : ThrustFloor { - Game Hexen +NOTELEPORT +FLOORCLIP +INVISIBLE - SpawnID 105 States { Spawn: diff --git a/wadsrc/static/actors/hexen/summon.txt b/wadsrc/static/actors/hexen/summon.txt index 1fb482d6c..ce76ceb77 100644 --- a/wadsrc/static/actors/hexen/summon.txt +++ b/wadsrc/static/actors/hexen/summon.txt @@ -3,8 +3,6 @@ ACTOR ArtiDarkServant : Inventory native { - Game Hexen - SpawnID 16 +COUNTITEM +FLOATBOB Inventory.RespawnTics 4230 @@ -27,7 +25,6 @@ ACTOR ArtiDarkServant : Inventory native ACTOR SummoningDoll { - Game Hexen Speed 20 +NOBLOCKMAP +DROPOFF +MISSILE +NOTELEPORT @@ -50,7 +47,6 @@ ACTOR SummoningDoll ACTOR MinotaurSmoke { - Game Hexen +NOBLOCKMAP +NOGRAVITY +NOTELEPORT RenderStyle Translucent diff --git a/wadsrc/static/actors/hexen/teleportother.txt b/wadsrc/static/actors/hexen/teleportother.txt index 48f8ba733..c74eeec8c 100644 --- a/wadsrc/static/actors/hexen/teleportother.txt +++ b/wadsrc/static/actors/hexen/teleportother.txt @@ -3,8 +3,6 @@ ACTOR ArtiTeleportOther : Inventory native { - Game Hexen - SpawnID 17 +COUNTITEM +FLOATBOB +INVENTORY.INVBAR diff --git a/wadsrc/static/actors/hexen/wraith.txt b/wadsrc/static/actors/hexen/wraith.txt index b1522681d..2bada5209 100644 --- a/wadsrc/static/actors/hexen/wraith.txt +++ b/wadsrc/static/actors/hexen/wraith.txt @@ -3,8 +3,6 @@ ACTOR Wraith { - Game Hexen - SpawnID 8 Health 150 PainChance 25 Speed 11 @@ -83,8 +81,6 @@ ACTOR Wraith ACTOR WraithBuried : Wraith { - Game Hexen - SpawnID 9 Height 68 -SHOOTABLE -SOLID @@ -151,8 +147,6 @@ ACTOR WraithFX1 ACTOR WraithFX2 { - Game Hexen - SpawnID 108 Radius 2 Height 5 Mass 5 @@ -191,8 +185,6 @@ ACTOR WraithFX3 ACTOR WraithFX4 { - Game Hexen - SpawnID 106 Radius 2 Height 5 Mass 5 @@ -214,8 +206,6 @@ ACTOR WraithFX4 ACTOR WraithFX5 : WraithFX4 { - Game Hexen - SpawnID 107 States { Spawn: diff --git a/wadsrc/static/actors/raven/artiegg.txt b/wadsrc/static/actors/raven/artiegg.txt index 0c168c4d2..33fde6d86 100644 --- a/wadsrc/static/actors/raven/artiegg.txt +++ b/wadsrc/static/actors/raven/artiegg.txt @@ -3,8 +3,6 @@ ACTOR EggFX : MorphProjectile { - Game Heretic - SpawnID 40 Radius 8 Height 8 Speed 18 @@ -27,8 +25,6 @@ ACTOR EggFX : MorphProjectile ACTOR ArtiEgg : CustomInventory { - Game Heretic - SpawnID 14 +COUNTITEM +FLOATBOB +INVENTORY.INVBAR @@ -58,8 +54,6 @@ ACTOR ArtiEgg : CustomInventory ACTOR PorkFX : MorphProjectile { - Game Hexen - SpawnID 40 Radius 8 Height 8 Speed 18 @@ -81,8 +75,6 @@ ACTOR PorkFX : MorphProjectile ACTOR ArtiPork : CustomInventory { - Game Hexen - SpawnID 14 +COUNTITEM +FLOATBOB +INVENTORY.INVBAR diff --git a/wadsrc/static/actors/raven/artitele.txt b/wadsrc/static/actors/raven/artitele.txt index 6dad46781..216c99c4a 100644 --- a/wadsrc/static/actors/raven/artitele.txt +++ b/wadsrc/static/actors/raven/artitele.txt @@ -3,8 +3,6 @@ ACTOR ArtiTeleport : Inventory native { - Game Raven - SpawnID 18 +COUNTITEM +FLOATBOB +INVENTORY.INVBAR diff --git a/wadsrc/static/actors/raven/minotaur.txt b/wadsrc/static/actors/raven/minotaur.txt index ba844fa93..6597b6adb 100644 --- a/wadsrc/static/actors/raven/minotaur.txt +++ b/wadsrc/static/actors/raven/minotaur.txt @@ -1,6 +1,5 @@ ACTOR Minotaur native { - Game Heretic Health 3000 Radius 28 Height 100 diff --git a/wadsrc/static/actors/raven/ravenambient.txt b/wadsrc/static/actors/raven/ravenambient.txt index 6b259e09a..b0dd64807 100644 --- a/wadsrc/static/actors/raven/ravenambient.txt +++ b/wadsrc/static/actors/raven/ravenambient.txt @@ -4,8 +4,6 @@ ACTOR SoundWind { - Game Heretic - SpawnID 110 +NOBLOCKMAP +NOSECTOR +DONTSPLASH @@ -19,8 +17,6 @@ ACTOR SoundWind ACTOR SoundWindHexen : SoundWind { - Game Hexen - SpawnID 110 } @@ -28,8 +24,6 @@ ACTOR SoundWindHexen : SoundWind ACTOR SoundWaterfall { - Game Heretic - SpawnID 111 +NOBLOCKMAP +NOSECTOR +DONTSPLASH diff --git a/wadsrc/static/actors/raven/ravenartifacts.txt b/wadsrc/static/actors/raven/ravenartifacts.txt index c80800502..6e48faeae 100644 --- a/wadsrc/static/actors/raven/ravenartifacts.txt +++ b/wadsrc/static/actors/raven/ravenartifacts.txt @@ -3,8 +3,6 @@ ACTOR ArtiHealth : HealthPickup { - Game Raven - SpawnID 24 Health 25 +COUNTITEM +FLOATBOB @@ -27,8 +25,6 @@ ACTOR ArtiHealth : HealthPickup ACTOR ArtiSuperHealth : HealthPickup { - Game Raven - SpawnID 25 Health 100 +COUNTITEM +FLOATBOB @@ -51,8 +47,6 @@ ACTOR ArtiSuperHealth : HealthPickup ACTOR ArtiFly : PowerupGiver { - Game Raven - SpawnID 15 +COUNTITEM +FLOATBOB +INVENTORY.PICKUPFLASH @@ -74,8 +68,6 @@ ACTOR ArtiFly : PowerupGiver ACTOR ArtiInvulnerability : PowerupGiver { - Game Heretic - SpawnID 133 +COUNTITEM +FLOATBOB +INVENTORY.PICKUPFLASH @@ -97,8 +89,6 @@ ACTOR ArtiInvulnerability : PowerupGiver ACTOR ArtiInvulnerability2 : PowerupGiver { - Game Hexen - SpawnID 133 +COUNTITEM +FLOATBOB +INVENTORY.PICKUPFLASH @@ -119,8 +109,6 @@ ACTOR ArtiInvulnerability2 : PowerupGiver ACTOR ArtiTorch : PowerupGiver { - Game Raven - SpawnID 73 +COUNTITEM +FLOATBOB +INVENTORY.PICKUPFLASH diff --git a/wadsrc/static/actors/raven/ravenhealth.txt b/wadsrc/static/actors/raven/ravenhealth.txt index 526666532..861239839 100644 --- a/wadsrc/static/actors/raven/ravenhealth.txt +++ b/wadsrc/static/actors/raven/ravenhealth.txt @@ -1,7 +1,5 @@ ACTOR CrystalVial : Health { - Game Raven - SpawnID 23 +FLOATBOB Inventory.Amount 10 Inventory.PickupMessage "$TXT_ITEMHEALTH" diff --git a/wadsrc/static/actors/shared/blood.txt b/wadsrc/static/actors/shared/blood.txt index 1a294c6af..9cde14858 100644 --- a/wadsrc/static/actors/shared/blood.txt +++ b/wadsrc/static/actors/shared/blood.txt @@ -3,7 +3,6 @@ ACTOR Blood { - SpawnID 130 Mass 5 +NOBLOCKMAP +NOTELEPORT diff --git a/wadsrc/static/actors/shared/bridge.txt b/wadsrc/static/actors/shared/bridge.txt index 9a0224a93..8386f25b9 100644 --- a/wadsrc/static/actors/shared/bridge.txt +++ b/wadsrc/static/actors/shared/bridge.txt @@ -53,8 +53,6 @@ ACTOR CustomBridge native ACTOR Bridge : CustomBridge { - Game Raven - SpawnID 21 RenderStyle None Args 32, 2, 3, 0 } @@ -63,8 +61,6 @@ ACTOR Bridge : CustomBridge ACTOR ZBridge : CustomBridge { - Game Doom - SpawnID 21 Args 36, 4, 0, 0 } diff --git a/wadsrc/static/actors/shared/debris.txt b/wadsrc/static/actors/shared/debris.txt index 5d48a2217..eb2eb0358 100644 --- a/wadsrc/static/actors/shared/debris.txt +++ b/wadsrc/static/actors/shared/debris.txt @@ -3,7 +3,6 @@ ACTOR Rock1 { - SpawnID 41 +NOBLOCKMAP +DROPOFF +MISSILE @@ -21,7 +20,6 @@ ACTOR Rock1 ACTOR Rock2 { - SpawnID 42 +NOBLOCKMAP +DROPOFF +MISSILE @@ -40,7 +38,6 @@ ACTOR Rock2 ACTOR Rock3 { - SpawnID 43 +NOBLOCKMAP +DROPOFF +MISSILE @@ -61,7 +58,6 @@ ACTOR Rock3 ACTOR Dirt1 { - SpawnID 44 +NOBLOCKMAP +DROPOFF +MISSILE @@ -79,7 +75,6 @@ ACTOR Dirt1 ACTOR Dirt2 { - SpawnID 45 +NOBLOCKMAP +DROPOFF +MISSILE @@ -97,7 +92,6 @@ ACTOR Dirt2 ACTOR Dirt3 { - SpawnID 46 +NOBLOCKMAP +DROPOFF +MISSILE @@ -115,7 +109,6 @@ ACTOR Dirt3 ACTOR Dirt4 { - SpawnID 47 +NOBLOCKMAP +DROPOFF +MISSILE @@ -133,7 +126,6 @@ ACTOR Dirt4 ACTOR Dirt5 { - SpawnID 48 +NOBLOCKMAP +DROPOFF +MISSILE @@ -151,7 +143,6 @@ ACTOR Dirt5 ACTOR Dirt6 { - SpawnID 49 +NOBLOCKMAP +DROPOFF +MISSILE @@ -182,7 +173,6 @@ ACTOR GlassShard native ACTOR SGShard1 : GlassShard { - SpawnID 54 States { Spawn: @@ -196,7 +186,6 @@ ACTOR SGShard1 : GlassShard ACTOR SGShard2 : GlassShard { - SpawnID 55 States { Spawn: @@ -210,7 +199,6 @@ ACTOR SGShard2 : GlassShard ACTOR SGShard3 : GlassShard { - SpawnID 56 States { Spawn: @@ -224,7 +212,6 @@ ACTOR SGShard3 : GlassShard ACTOR SGShard4 : GlassShard { - SpawnID 57 States { Spawn: @@ -238,7 +225,6 @@ ACTOR SGShard4 : GlassShard ACTOR SGShard5 : GlassShard { - SpawnID 58 States { Spawn: @@ -252,7 +238,6 @@ ACTOR SGShard5 : GlassShard ACTOR SGShard6 : GlassShard { - SpawnID 59 States { Spawn: @@ -266,7 +251,6 @@ ACTOR SGShard6 : GlassShard ACTOR SGShard7 : GlassShard { - SpawnID 60 States { Spawn: @@ -280,7 +264,6 @@ ACTOR SGShard7 : GlassShard ACTOR SGShard8 : GlassShard { - SpawnID 61 States { Spawn: @@ -294,7 +277,6 @@ ACTOR SGShard8 : GlassShard ACTOR SGShard9 : GlassShard { - SpawnID 62 States { Spawn: @@ -308,7 +290,6 @@ ACTOR SGShard9 : GlassShard ACTOR SGShard0 : GlassShard { - SpawnID 63 States { Spawn: diff --git a/wadsrc/static/actors/shared/sharedmisc.txt b/wadsrc/static/actors/shared/sharedmisc.txt index fa65ea589..69b1abb15 100644 --- a/wadsrc/static/actors/shared/sharedmisc.txt +++ b/wadsrc/static/actors/shared/sharedmisc.txt @@ -105,8 +105,6 @@ ACTOR RealGibs ACTOR Gibs : RealGibs { - Game Doom - SpawnID 146 ClearFlags } diff --git a/wadsrc/static/actors/shared/soundsequence.txt b/wadsrc/static/actors/shared/soundsequence.txt index 868251a04..463d582ae 100644 --- a/wadsrc/static/actors/shared/soundsequence.txt +++ b/wadsrc/static/actors/shared/soundsequence.txt @@ -29,61 +29,51 @@ ACTOR SoundSequence native ACTOR HereticSoundSequence1 : SoundSequence { - Game Heretic Args 0 } ACTOR HereticSoundSequence2 : SoundSequence { - Game Heretic Args 1 } ACTOR HereticSoundSequence3 : SoundSequence { - Game Heretic Args 2 } ACTOR HereticSoundSequence4 : SoundSequence { - Game Heretic Args 3 } ACTOR HereticSoundSequence5 : SoundSequence { - Game Heretic Args 4 } ACTOR HereticSoundSequence6 : SoundSequence { - Game Heretic Args 5 } ACTOR HereticSoundSequence7 : SoundSequence { - Game Heretic Args 6 } ACTOR HereticSoundSequence8 : SoundSequence { - Game Heretic Args 7 } ACTOR HereticSoundSequence9 : SoundSequence { - Game Heretic Args 8 } ACTOR HereticSoundSequence10 : SoundSequence { - Game Heretic Args 9 } diff --git a/wadsrc/static/actors/strife/acolyte.txt b/wadsrc/static/actors/strife/acolyte.txt index a111bd4df..12d4aab51 100644 --- a/wadsrc/static/actors/strife/acolyte.txt +++ b/wadsrc/static/actors/strife/acolyte.txt @@ -80,7 +80,6 @@ ACTOR Acolyte : StrifeHumanoid ACTOR AcolyteTan : Acolyte { - Game Strife ConversationID 53, 52, 53 +MISSILEMORE +MISSILEEVENMORE DropItem "ClipOfBullets" @@ -90,7 +89,6 @@ ACTOR AcolyteTan : Acolyte ACTOR AcolyteRed : Acolyte { - Game Strife ConversationID 54, 53, 54 +MISSILEMORE +MISSILEEVENMORE Translation 0 @@ -100,7 +98,6 @@ ACTOR AcolyteRed : Acolyte ACTOR AcolyteRust : Acolyte { - Game Strife ConversationID 55, 54, 55 +MISSILEMORE +MISSILEEVENMORE Translation 1 @@ -110,7 +107,6 @@ ACTOR AcolyteRust : Acolyte ACTOR AcolyteGray : Acolyte { - Game Strife ConversationID 56, 55, 56 +MISSILEMORE +MISSILEEVENMORE Translation 2 @@ -120,7 +116,6 @@ ACTOR AcolyteGray : Acolyte ACTOR AcolyteDGreen : Acolyte { - Game Strife ConversationID 57, 56, 57 +MISSILEMORE +MISSILEEVENMORE Translation 3 @@ -130,7 +125,6 @@ ACTOR AcolyteDGreen : Acolyte ACTOR AcolyteGold : Acolyte { - Game Strife ConversationID 58, 57, 58 +MISSILEMORE +MISSILEEVENMORE Translation 4 @@ -140,7 +134,6 @@ ACTOR AcolyteGold : Acolyte ACTOR AcolyteLGreen : Acolyte { - Game Strife Health 60 ConversationID 59, -1, -1 Translation 5 @@ -150,7 +143,6 @@ ACTOR AcolyteLGreen : Acolyte ACTOR AcolyteBlue : Acolyte { - Game Strife Health 60 ConversationID 60, -1, -1 Translation 6 @@ -160,7 +152,6 @@ ACTOR AcolyteBlue : Acolyte ACTOR AcolyteShadow : Acolyte { - Game Strife ConversationID 61, 58, 59 +MISSILEMORE DropItem "ClipOfBullets" @@ -180,7 +171,6 @@ ACTOR AcolyteShadow : Acolyte ACTOR AcolyteToBe : Acolyte { - Game Strife ConversationID 29, -1, -1 Health 61 Radius 20 diff --git a/wadsrc/static/actors/strife/alienspectres.txt b/wadsrc/static/actors/strife/alienspectres.txt index 6391ebf22..3f6ffe549 100644 --- a/wadsrc/static/actors/strife/alienspectres.txt +++ b/wadsrc/static/actors/strife/alienspectres.txt @@ -3,7 +3,6 @@ ACTOR AlienSpectre1 : SpectralMonster { - Game Strife ConversationID 67,-1,-1 Health 1000 Painchance 250 @@ -82,7 +81,6 @@ ACTOR AlienSpectre1 : SpectralMonster ACTOR AlienSpectre2 : AlienSpectre1 { - Game Strife ConversationID 70 Health 1200 Painchance 50 @@ -103,7 +101,6 @@ ACTOR AlienSpectre2 : AlienSpectre1 ACTOR AlienSpectre3 : AlienSpectre1 { - Game Strife ConversationID 71,-1,-1 Health 1500 Painchance 50 @@ -145,7 +142,6 @@ ACTOR AlienSpectre3 : AlienSpectre1 ACTOR AlienSpectre4 : AlienSpectre1 { - Game Strife ConversationID 72,-1,-1 Health 1700 Painchance 50 @@ -166,7 +162,6 @@ ACTOR AlienSpectre4 : AlienSpectre1 ACTOR AlienSpectre5 : AlienSpectre1 { - Game Strife ConversationID 73,-1,-1 Health 2000 Painchance 50 diff --git a/wadsrc/static/actors/strife/beggars.txt b/wadsrc/static/actors/strife/beggars.txt index 9f529c7b3..e7555a139 100644 --- a/wadsrc/static/actors/strife/beggars.txt +++ b/wadsrc/static/actors/strife/beggars.txt @@ -64,34 +64,29 @@ ACTOR Beggar : StrifeHumanoid ACTOR Beggar1 : Beggar { - Game Strife ConversationID 38, 37, 38 } ACTOR Beggar2 : Beggar { - Game Strife ConversationID 39, 38, 39 } ACTOR Beggar3 : Beggar { - Game Strife ConversationID 40, 39, 40 } ACTOR Beggar4 : Beggar { - Game Strife ConversationID 41, 40, 41 } ACTOR Beggar5 : Beggar { - Game Strife ConversationID 42, 41, 42 } diff --git a/wadsrc/static/actors/strife/coin.txt b/wadsrc/static/actors/strife/coin.txt index 4fc5825f1..ff55b7b52 100644 --- a/wadsrc/static/actors/strife/coin.txt +++ b/wadsrc/static/actors/strife/coin.txt @@ -3,7 +3,6 @@ ACTOR Coin : Inventory native { - Game Strife ConversationID 168, 161, 165 +DROPPED +NOTDMATCH @@ -26,7 +25,6 @@ ACTOR Coin : Inventory native ACTOR Gold10 : Coin { - Game Strife ConversationID 169, 162, 166 Inventory.Amount 10 Tag "$TAG_10GOLD" @@ -43,7 +41,6 @@ ACTOR Gold10 : Coin ACTOR Gold25 : Coin { - Game Strife ConversationID 170, 163, 167 Inventory.Amount 25 Tag "$TAG_25GOLD" @@ -60,7 +57,6 @@ ACTOR Gold25 : Coin ACTOR Gold50 : Coin { - Game Strife ConversationID 171, 164, 168 Inventory.Amount 50 Tag "$TAG_50GOLD" diff --git a/wadsrc/static/actors/strife/crusader.txt b/wadsrc/static/actors/strife/crusader.txt index 22aaecdb5..2c1a6fd7f 100644 --- a/wadsrc/static/actors/strife/crusader.txt +++ b/wadsrc/static/actors/strife/crusader.txt @@ -3,7 +3,6 @@ ACTOR Crusader { - Game Strife ConversationID 63,-1,-1 Speed 8 Radius 40 @@ -112,7 +111,6 @@ ACTOR CrusaderMissile ACTOR DeadCrusader { - Game Strife ConversationID 230 States { diff --git a/wadsrc/static/actors/strife/entityboss.txt b/wadsrc/static/actors/strife/entityboss.txt index 90769d4b0..81daf7d0f 100644 --- a/wadsrc/static/actors/strife/entityboss.txt +++ b/wadsrc/static/actors/strife/entityboss.txt @@ -3,7 +3,6 @@ ACTOR EntityNest { - Game Strife ConversationID 76,-1,-1 Radius 84 Height 47 @@ -22,7 +21,6 @@ ACTOR EntityNest ACTOR EntityPod { - Game Strife ConversationID 77,-1,-1 Radius 25 Height 91 @@ -52,7 +50,6 @@ ACTOR EntityPod ACTOR EntityBoss : SpectralMonster { - Game Strife ConversationID 74,-1,-1 Health 2500 Painchance 255 diff --git a/wadsrc/static/actors/strife/inquisitor.txt b/wadsrc/static/actors/strife/inquisitor.txt index 211dc0755..f3a766b0d 100644 --- a/wadsrc/static/actors/strife/inquisitor.txt +++ b/wadsrc/static/actors/strife/inquisitor.txt @@ -3,7 +3,6 @@ ACTOR Inquisitor { - Game Strife ConversationID 93,-1,-1 Health 1000 Speed 12 diff --git a/wadsrc/static/actors/strife/loremaster.txt b/wadsrc/static/actors/strife/loremaster.txt index 8c6f5caa9..03b25c9d3 100644 --- a/wadsrc/static/actors/strife/loremaster.txt +++ b/wadsrc/static/actors/strife/loremaster.txt @@ -3,7 +3,6 @@ ACTOR Loremaster { - Game Strife ConversationID 66, 63, 64 Health 800 Speed 10 diff --git a/wadsrc/static/actors/strife/macil.txt b/wadsrc/static/actors/strife/macil.txt index c479dd4b3..ae437bd19 100644 --- a/wadsrc/static/actors/strife/macil.txt +++ b/wadsrc/static/actors/strife/macil.txt @@ -3,7 +3,6 @@ ACTOR Macil1 { - Game Strife ConversationID 49, 48, 49 Health 95 Radius 20 @@ -60,7 +59,6 @@ ACTOR Macil1 ACTOR Macil2 : Macil1 { - Game Strife ConversationID 50, 49, 50 Painchance 200 +COUNTKILL diff --git a/wadsrc/static/actors/strife/merchants.txt b/wadsrc/static/actors/strife/merchants.txt index 4c8265892..a690fc676 100644 --- a/wadsrc/static/actors/strife/merchants.txt +++ b/wadsrc/static/actors/strife/merchants.txt @@ -56,7 +56,6 @@ ACTOR Merchant ACTOR WeaponSmith : Merchant { - Game Strife ConversationID 2 PainSound "smith/pain" Tag "$TAG_WEAPONSMITH" @@ -67,7 +66,6 @@ ACTOR WeaponSmith : Merchant ACTOR BarKeep : Merchant { - Game Strife Translation 4 ConversationID 3 PainSound "barkeep/pain" @@ -80,7 +78,6 @@ ACTOR BarKeep : Merchant ACTOR Armorer : Merchant { - Game Strife Translation 5 ConversationID 4 PainSound "armorer/pain" @@ -92,7 +89,6 @@ ACTOR Armorer : Merchant ACTOR Medic : Merchant { - Game Strife Translation 6 ConversationID 5 PainSound "medic/pain" diff --git a/wadsrc/static/actors/strife/oracle.txt b/wadsrc/static/actors/strife/oracle.txt index 43e5dcaa4..ce81ebf05 100644 --- a/wadsrc/static/actors/strife/oracle.txt +++ b/wadsrc/static/actors/strife/oracle.txt @@ -3,7 +3,6 @@ ACTOR Oracle { - Game Strife ConversationID 65, 62, 63 Health 1 Radius 15 diff --git a/wadsrc/static/actors/strife/peasants.txt b/wadsrc/static/actors/strife/peasants.txt index 08e5ef09c..b6c100e7c 100644 --- a/wadsrc/static/actors/strife/peasants.txt +++ b/wadsrc/static/actors/strife/peasants.txt @@ -69,28 +69,24 @@ ACTOR Peasant : StrifeHumanoid ACTOR Peasant1 : Peasant { - Game Strife ConversationID 6 Speed 4 } ACTOR Peasant2 : Peasant { - Game Strife ConversationID 7 Speed 5 } ACTOR Peasant3 : Peasant { - Game Strife ConversationID 8 Speed 5 } ACTOR Peasant4 : Peasant { - Game Strife Translation 0 ConversationID 9 Speed 7 @@ -98,7 +94,6 @@ ACTOR Peasant4 : Peasant ACTOR Peasant5 : Peasant { - Game Strife Translation 0 ConversationID 10 Speed 7 @@ -106,7 +101,6 @@ ACTOR Peasant5 : Peasant ACTOR Peasant6 : Peasant { - Game Strife Translation 0 ConversationID 11 Speed 7 @@ -114,112 +108,96 @@ ACTOR Peasant6 : Peasant ACTOR Peasant7 : Peasant { - Game Strife Translation 2 ConversationID 12 } ACTOR Peasant8 : Peasant { - Game Strife Translation 2 ConversationID 13 } ACTOR Peasant9 : Peasant { - Game Strife Translation 2 ConversationID 14 } ACTOR Peasant10 : Peasant { - Game Strife Translation 1 ConversationID 15 } ACTOR Peasant11 : Peasant { - Game Strife Translation 1 ConversationID 16 } ACTOR Peasant12 : Peasant { - Game Strife Translation 1 ConversationID 17 } ACTOR Peasant13 : Peasant { - Game Strife Translation 3 ConversationID 18 } ACTOR Peasant14 : Peasant { - Game Strife Translation 3 ConversationID 19 } ACTOR Peasant15 : Peasant { - Game Strife Translation 3 ConversationID 20 } ACTOR Peasant16 : Peasant { - Game Strife Translation 5 ConversationID 21 } ACTOR Peasant17 : Peasant { - Game Strife Translation 5 ConversationID 22 } ACTOR Peasant18 : Peasant { - Game Strife Translation 5 ConversationID 23 } ACTOR Peasant19 : Peasant { - Game Strife Translation 4 ConversationID 24 } ACTOR Peasant20 : Peasant { - Game Strife Translation 4 ConversationID 25 } ACTOR Peasant21 : Peasant { - Game Strife Translation 4 ConversationID 26 } ACTOR Peasant22 : Peasant { - Game Strife Translation 6 ConversationID 27 } diff --git a/wadsrc/static/actors/strife/programmer.txt b/wadsrc/static/actors/strife/programmer.txt index 4b6fef390..f1833ffdc 100644 --- a/wadsrc/static/actors/strife/programmer.txt +++ b/wadsrc/static/actors/strife/programmer.txt @@ -3,7 +3,6 @@ ACTOR Programmer { - Game Strife ConversationID 95, -1, -1 Health 1100 PainChance 50 diff --git a/wadsrc/static/actors/strife/ratbuddy.txt b/wadsrc/static/actors/strife/ratbuddy.txt index 646323c43..fa7deef89 100644 --- a/wadsrc/static/actors/strife/ratbuddy.txt +++ b/wadsrc/static/actors/strife/ratbuddy.txt @@ -1,7 +1,6 @@ ACTOR RatBuddy { - Game Strife ConversationID 202, 196, 200 Health 5 Speed 13 diff --git a/wadsrc/static/actors/strife/reaver.txt b/wadsrc/static/actors/strife/reaver.txt index 8df0f9d75..76db1cfda 100644 --- a/wadsrc/static/actors/strife/reaver.txt +++ b/wadsrc/static/actors/strife/reaver.txt @@ -1,7 +1,6 @@ ACTOR Reaver { - Game Strife Health 150 Painchance 128 Speed 12 diff --git a/wadsrc/static/actors/strife/rebels.txt b/wadsrc/static/actors/strife/rebels.txt index 2ac3469ad..60c61eabf 100644 --- a/wadsrc/static/actors/strife/rebels.txt +++ b/wadsrc/static/actors/strife/rebels.txt @@ -66,7 +66,6 @@ ACTOR Rebel : StrifeHumanoid ACTOR Rebel1 : Rebel { - Game Strife ConversationID 43, 42, 43 DropItem "ClipOfBullets" } @@ -75,7 +74,6 @@ ACTOR Rebel1 : Rebel ACTOR Rebel2 : Rebel { - Game Strife ConversationID 44, 43, 44 } @@ -83,7 +81,6 @@ ACTOR Rebel2 : Rebel ACTOR Rebel3 : Rebel { - Game Strife ConversationID 45, 44, 45 } @@ -91,7 +88,6 @@ ACTOR Rebel3 : Rebel ACTOR Rebel4 : Rebel { - Game Strife ConversationID 46, 45, 56 } @@ -99,7 +95,6 @@ ACTOR Rebel4 : Rebel ACTOR Rebel5 : Rebel { - Game Strife ConversationID 47, 46, 47 } @@ -107,7 +102,6 @@ ACTOR Rebel5 : Rebel ACTOR Rebel6 : Rebel { - Game Strife ConversationID 48, 47, 48 } @@ -115,7 +109,6 @@ ACTOR Rebel6 : Rebel ACTOR TeleporterBeacon : Inventory native { - Game Strife ConversationID 166,-1,-1 Health 5 Radius 16 diff --git a/wadsrc/static/actors/strife/sentinel.txt b/wadsrc/static/actors/strife/sentinel.txt index e7a1866ca..3da2c5436 100644 --- a/wadsrc/static/actors/strife/sentinel.txt +++ b/wadsrc/static/actors/strife/sentinel.txt @@ -3,7 +3,6 @@ ACTOR Sentinel { - Game Strife ConversationID 91,-1,-1 Health 100 Painchance 255 diff --git a/wadsrc/static/actors/strife/sigil.txt b/wadsrc/static/actors/strife/sigil.txt index 3c6899430..482b2c908 100644 --- a/wadsrc/static/actors/strife/sigil.txt +++ b/wadsrc/static/actors/strife/sigil.txt @@ -3,7 +3,6 @@ ACTOR Sigil : Weapon native { - Game Strife Weapon.Kickback 100 Weapon.SelectionOrder 4000 @@ -125,7 +124,6 @@ ACTOR Sigil : Weapon native ACTOR Sigil1 : Sigil { - Game Strife ConversationID 196, 190, 194 Inventory.Icon "I_SGL1" Health 1 @@ -135,7 +133,6 @@ ACTOR Sigil1 : Sigil ACTOR Sigil2 : Sigil { - Game Strife ConversationID 197, 191, 195 Inventory.Icon "I_SGL2" Health 2 @@ -145,7 +142,6 @@ ACTOR Sigil2 : Sigil ACTOR Sigil3 : Sigil { - Game Strife ConversationID 198, 192, 196 Inventory.Icon "I_SGL3" Health 3 @@ -155,7 +151,6 @@ ACTOR Sigil3 : Sigil ACTOR Sigil4 : Sigil { - Game Strife ConversationID 199, 193, 197 Inventory.Icon "I_SGL4" Health 4 @@ -165,7 +160,6 @@ ACTOR Sigil4 : Sigil ACTOR Sigil5 : Sigil { - Game Strife ConversationID 200, 194, 198 Inventory.Icon "I_SGL5" Health 5 diff --git a/wadsrc/static/actors/strife/stalker.txt b/wadsrc/static/actors/strife/stalker.txt index f0792743f..aaddc8dab 100644 --- a/wadsrc/static/actors/strife/stalker.txt +++ b/wadsrc/static/actors/strife/stalker.txt @@ -4,7 +4,6 @@ ACTOR Stalker { - Game Strife ConversationID 92,-1,-1 Health 80 Painchance 40 diff --git a/wadsrc/static/actors/strife/strifeammo.txt b/wadsrc/static/actors/strife/strifeammo.txt index 5d5e35c8d..b1548f3dd 100644 --- a/wadsrc/static/actors/strife/strifeammo.txt +++ b/wadsrc/static/actors/strife/strifeammo.txt @@ -2,7 +2,6 @@ ACTOR HEGrenadeRounds : Ammo { - Game Strife +FLOORCLIP ConversationID 177, 170, 174 Inventory.Amount 6 @@ -24,7 +23,6 @@ ACTOR HEGrenadeRounds : Ammo ACTOR PhosphorusGrenadeRounds : Ammo { - Game Strife +FLOORCLIP ConversationID 178, 171, 175 Inventory.Amount 4 @@ -46,8 +44,6 @@ ACTOR PhosphorusGrenadeRounds : Ammo ACTOR ClipOfBullets : Ammo { - Game Strife - SpawnID 11 ConversationID 179, 173, 177 +FLOORCLIP Inventory.Amount 10 @@ -69,8 +65,6 @@ ACTOR ClipOfBullets : Ammo ACTOR BoxOfBullets : ClipOfBullets { - Game Strife - SpawnID 139 ConversationID 180, 174, 178 Inventory.Amount 50 Tag "$TAG_BOXOFBULLETS" @@ -87,8 +81,6 @@ ACTOR BoxOfBullets : ClipOfBullets ACTOR MiniMissiles : Ammo { - Game Strife - SpawnID 140 ConversationID 181, 175, 179 +FLOORCLIP Inventory.Amount 4 @@ -110,8 +102,6 @@ ACTOR MiniMissiles : Ammo ACTOR CrateOfMissiles : MiniMissiles { - Game Strife - SpawnID 141 ConversationID 182, 176, 180 Inventory.Amount 20 Tag "$TAG_CRATEOFMISSILES" @@ -128,8 +118,6 @@ ACTOR CrateOfMissiles : MiniMissiles ACTOR EnergyPod : Ammo { - Game Strife - SpawnID 75 ConversationID 183, 177, 181 +FLOORCLIP Inventory.Amount 20 @@ -152,8 +140,6 @@ ACTOR EnergyPod : Ammo ACTOR EnergyPack : EnergyPod { - Game Strife - SpawnID 142 ConversationID 184, 178, 182 Inventory.Amount 100 Tag "$TAG_ENERGYPACK" @@ -170,7 +156,6 @@ ACTOR EnergyPack : EnergyPod ACTOR PoisonBolts : Ammo { - Game Strife ConversationID 185, 179, 183 +FLOORCLIP Inventory.Amount 10 @@ -192,7 +177,6 @@ ACTOR PoisonBolts : Ammo ACTOR ElectricBolts : Ammo { - Game Strife ConversationID 186, 180, 184 +FLOORCLIP Inventory.Amount 20 @@ -214,8 +198,6 @@ ACTOR ElectricBolts : Ammo ACTOR AmmoSatchel : BackpackItem { - Game Strife - SpawnID 144 ConversationID 187, 181, 184 +FLOORCLIP Inventory.Icon "I_BKPK" diff --git a/wadsrc/static/actors/strife/strifearmor.txt b/wadsrc/static/actors/strife/strifearmor.txt index 590a46ea9..9201bc047 100644 --- a/wadsrc/static/actors/strife/strifearmor.txt +++ b/wadsrc/static/actors/strife/strifearmor.txt @@ -1,8 +1,6 @@ ACTOR MetalArmor : BasicArmorPickup { - Game Strife - SpawnID 69 ConversationID 129, 125, 128 Radius 20 Height 16 @@ -25,8 +23,6 @@ ACTOR MetalArmor : BasicArmorPickup ACTOR LeatherArmor : BasicArmorPickup { - Game Strife - SpawnID 68 ConversationID 130, 126, 129 Radius 20 Height 16 diff --git a/wadsrc/static/actors/strife/strifebishop.txt b/wadsrc/static/actors/strife/strifebishop.txt index 71ad18c26..25f33f5e1 100644 --- a/wadsrc/static/actors/strife/strifebishop.txt +++ b/wadsrc/static/actors/strife/strifebishop.txt @@ -3,7 +3,6 @@ ACTOR StrifeBishop { - Game Strife ConversationID 64,-1,-1 Health 500 Painchance 128 diff --git a/wadsrc/static/actors/strife/strifeitems.txt b/wadsrc/static/actors/strife/strifeitems.txt index 89e098848..289210ba2 100644 --- a/wadsrc/static/actors/strife/strifeitems.txt +++ b/wadsrc/static/actors/strife/strifeitems.txt @@ -2,7 +2,6 @@ ACTOR MedPatch : HealthPickup { - Game Strife ConversationID 125, 121, 124 Health 10 +FLOORCLIP @@ -25,7 +24,6 @@ ACTOR MedPatch : HealthPickup ACTOR MedicalKit : HealthPickup { - Game Strife ConversationID 126, 122, 125 Health 25 +FLOORCLIP @@ -48,7 +46,6 @@ ACTOR MedicalKit : HealthPickup ACTOR SurgeryKit : HealthPickup { - Game Strife ConversationID 127, 123, 126 +FLOORCLIP +INVENTORY.INVBAR @@ -70,8 +67,6 @@ ACTOR SurgeryKit : HealthPickup ACTOR StrifeMap : MapRevealer { - Game Strife - SpawnID 137 ConversationID 164, 160, 163 +FLOORCLIP Inventory.PickupSound "misc/p_pkup" @@ -89,7 +84,6 @@ ACTOR StrifeMap : MapRevealer ACTOR BeldinsRing : Inventory { - Game Strife +NOTDMATCH +FLOORCLIP +INVENTORY.INVBAR @@ -111,7 +105,6 @@ ACTOR BeldinsRing : Inventory ACTOR OfferingChalice : Inventory { - Game Strife +DROPPED +FLOORCLIP +INVENTORY.INVBAR @@ -135,7 +128,6 @@ ACTOR OfferingChalice : Inventory ACTOR Ear : Inventory { - Game Strife +FLOORCLIP +INVENTORY.INVBAR ConversationID 175, 167, 171 @@ -156,7 +148,6 @@ ACTOR Ear : Inventory ACTOR BrokenPowerCoupling : Inventory { - Game Strife ConversationID 289, -1, -1 Health 40 +DROPPED @@ -182,8 +173,6 @@ ACTOR BrokenPowerCoupling : Inventory ACTOR ShadowArmor : PowerupGiver { - Game Strife - SpawnID 135 ConversationID 160, 156, 159 +FLOORCLIP +VISIBILITYPULSE @@ -209,8 +198,6 @@ ACTOR ShadowArmor : PowerupGiver ACTOR EnvironmentalSuit : PowerupGiver { - Game Strife - SpawnID 136 ConversationID 161, 157, 160 +FLOORCLIP +INVENTORY.INVBAR @@ -234,7 +221,6 @@ ACTOR EnvironmentalSuit : PowerupGiver ACTOR GuardUniform : Inventory { - Game Strife ConversationID 162, 158, 161 +FLOORCLIP +INVENTORY.INVBAR @@ -255,7 +241,6 @@ ACTOR GuardUniform : Inventory ACTOR OfficersUniform : Inventory { - Game Strife ConversationID 163, 159, 162 +FLOORCLIP +INVENTORY.INVBAR @@ -275,7 +260,6 @@ ACTOR OfficersUniform : Inventory ACTOR FlameThrowerParts : Inventory { - Game Strife ConversationID 191, 185, 189 +FLOORCLIP +INVENTORY.INVBAR @@ -297,7 +281,6 @@ ACTOR FlameThrowerParts : Inventory ACTOR InterrogatorReport : Inventory { - Game Strife ConversationID 308, 289, 306 +FLOORCLIP Tag "$TAG_REPORT" @@ -315,7 +298,6 @@ ACTOR InterrogatorReport : Inventory ACTOR Info : Inventory { - Game Strife ConversationID 300, 282, 299 +FLOORCLIP +INVENTORY.INVBAR @@ -335,7 +317,6 @@ ACTOR Info : Inventory ACTOR Targeter : PowerupGiver { - Game Strife ConversationID 167, 169, 173 +FLOORCLIP +INVENTORY.INVBAR @@ -358,7 +339,6 @@ ACTOR Targeter : PowerupGiver ACTOR Communicator : Inventory { - Game Strife ConversationID 176, 168, 172 +NOTDMATCH Tag "$TAG_COMMUNICATOR" @@ -377,7 +357,6 @@ ACTOR Communicator : Inventory ACTOR DegninOre : Inventory native { - Game Strife ConversationID 128, 124, 127 Health 10 Radius 16 @@ -412,7 +391,6 @@ ACTOR DegninOre : Inventory native ACTOR GunTraining : Inventory { - Game Strife ConversationID 310,-1,-1 +FLOORCLIP +INVENTORY.INVBAR @@ -432,7 +410,6 @@ ACTOR GunTraining : Inventory ACTOR HealthTraining : Inventory native { - Game Strife ConversationID 309,-1,-1 +FLOORCLIP +INVENTORY.INVBAR @@ -454,7 +431,6 @@ ACTOR HealthTraining : Inventory native ACTOR Scanner : PowerupGiver native { - Game Strife ConversationID 165,-1,-1 +FLOORCLIP +INVENTORY.FANCYPICKUPSOUND @@ -476,7 +452,6 @@ ACTOR Scanner : PowerupGiver native ACTOR PrisonPass : Key native { - Game Strife ConversationID 304, 286, 303 Inventory.Icon "I_TOKN" Tag "$TAG_PRISONPASS" diff --git a/wadsrc/static/actors/strife/strifekeys.txt b/wadsrc/static/actors/strife/strifekeys.txt index 1a1dc99c2..ca8949417 100644 --- a/wadsrc/static/actors/strife/strifekeys.txt +++ b/wadsrc/static/actors/strife/strifekeys.txt @@ -10,7 +10,6 @@ ACTOR StrifeKey : Key ACTOR BaseKey : StrifeKey { - Game Strife ConversationID 133, 129, 132 Inventory.Icon "I_FUSL" Tag "$TAG_BASEKEY" @@ -28,7 +27,6 @@ ACTOR BaseKey : StrifeKey ACTOR GovsKey : StrifeKey { - Game Strife ConversationID 134, 130, 133 Inventory.Icon "I_REBL" Tag "$TAG_GOVSKEY" @@ -46,7 +44,6 @@ ACTOR GovsKey : StrifeKey ACTOR Passcard : StrifeKey { - Game Strife ConversationID 135, 131, 134 Inventory.Icon "I_TPAS" Tag "$TAG_PASSCARD" @@ -64,7 +61,6 @@ ACTOR Passcard : StrifeKey ACTOR IDBadge : StrifeKey { - Game Strife ConversationID 136, 132, 135 Inventory.Icon "I_CRD1" Tag "$TAG_IDBADGE" @@ -82,7 +78,6 @@ ACTOR IDBadge : StrifeKey ACTOR PrisonKey : StrifeKey { - Game Strife ConversationID 137, 133, 136 Inventory.Icon "I_PRIS" Tag "$TAG_PRISONKEY" @@ -101,7 +96,6 @@ ACTOR PrisonKey : StrifeKey ACTOR SeveredHand : StrifeKey { - Game Strife ConversationID 138, 134, 137 Inventory.Icon "I_HAND" Tag "$TAG_SEVEREDHAND" @@ -120,7 +114,6 @@ ACTOR SeveredHand : StrifeKey ACTOR Power1Key : StrifeKey { - Game Strife ConversationID 139, 135, 138 Inventory.Icon "I_PWR1" Tag "$TAG_POWER1KEY" @@ -138,7 +131,6 @@ ACTOR Power1Key : StrifeKey ACTOR Power2Key : StrifeKey { - Game Strife ConversationID 140, 136, 139 Inventory.Icon "I_PWR2" Tag "$TAG_POWER2KEY" @@ -156,7 +148,6 @@ ACTOR Power2Key : StrifeKey ACTOR Power3Key : StrifeKey { - Game Strife ConversationID 141, 137, 140 Inventory.Icon "I_PWR3" Tag "$TAG_POWER3KEY" @@ -174,7 +165,6 @@ ACTOR Power3Key : StrifeKey ACTOR GoldKey : StrifeKey { - Game Strife ConversationID 142, 138, 141 Inventory.Icon "I_KY1G" Tag "$TAG_GOLDKEY" @@ -192,7 +182,6 @@ ACTOR GoldKey : StrifeKey ACTOR IDCard : StrifeKey { - Game Strife ConversationID 143, 139, 142 Inventory.Icon "I_CRD2" Tag "$TAG_IDCARD" @@ -210,7 +199,6 @@ ACTOR IDCard : StrifeKey ACTOR SilverKey : StrifeKey { - Game Strife ConversationID 144, 140, 143 Inventory.Icon "I_KY2S" Tag "$TAG_SILVERKEY" @@ -228,7 +216,6 @@ ACTOR SilverKey : StrifeKey ACTOR OracleKey : StrifeKey { - Game Strife ConversationID 145, 141, 144 Inventory.Icon "I_ORAC" Tag "$TAG_ORACLEKEY" @@ -246,7 +233,6 @@ ACTOR OracleKey : StrifeKey ACTOR MilitaryID : StrifeKey { - Game Strife ConversationID 146, 142, 145 Inventory.Icon "I_GYID" Tag "$TAG_MILITARYID" @@ -264,7 +250,6 @@ ACTOR MilitaryID : StrifeKey ACTOR OrderKey : StrifeKey { - Game Strife ConversationID 147, 143, 146 Inventory.Icon "I_FUBR" Tag "$TAG_ORDERKEY" @@ -282,7 +267,6 @@ ACTOR OrderKey : StrifeKey ACTOR WarehouseKey : StrifeKey { - Game Strife ConversationID 148, 144, 147 Inventory.Icon "I_WARE" Tag "$TAG_WAREHOUSEKEY" @@ -300,7 +284,6 @@ ACTOR WarehouseKey : StrifeKey ACTOR BrassKey : StrifeKey { - Game Strife ConversationID 149, 145, 148 Inventory.Icon "I_KY3B" Tag "$TAG_BRASSKEY" @@ -318,7 +301,6 @@ ACTOR BrassKey : StrifeKey ACTOR RedCrystalKey : StrifeKey { - Game Strife ConversationID 150, 146, 149 Inventory.Icon "I_RCRY" Tag "$TAG_REDCRYSTALKEY" @@ -336,7 +318,6 @@ ACTOR RedCrystalKey : StrifeKey ACTOR BlueCrystalKey : StrifeKey { - Game Strife ConversationID 151, 147, 150 Inventory.Icon "I_BCRY" Tag "$TAG_BLUECRYSTALKEY" @@ -354,7 +335,6 @@ ACTOR BlueCrystalKey : StrifeKey ACTOR ChapelKey : StrifeKey { - Game Strife ConversationID 152, 148, 151 Inventory.Icon "I_CHAP" Tag "$TAG_CHAPELKEY" @@ -372,7 +352,6 @@ ACTOR ChapelKey : StrifeKey ACTOR CatacombKey : StrifeKey { - Game Strife ConversationID 153, 149, 152 Inventory.Icon "I_TUNL" Tag "$TAG_CATACOMBKEY" @@ -391,7 +370,6 @@ ACTOR CatacombKey : StrifeKey ACTOR SecurityKey : StrifeKey { - Game Strife ConversationID 154, 150, 153 Inventory.Icon "I_SECK" Tag "$TAG_SECURITYKEY" @@ -409,7 +387,6 @@ ACTOR SecurityKey : StrifeKey ACTOR CoreKey : StrifeKey { - Game Strife ConversationID 155, 151, 154 Inventory.Icon "I_GOID" Tag "$TAG_COREKEY" @@ -427,7 +404,6 @@ ACTOR CoreKey : StrifeKey ACTOR MaulerKey : StrifeKey { - Game Strife ConversationID 156, 152, 155 Inventory.Icon "I_BLTK" Tag "$TAG_MAULERKEY" @@ -445,7 +421,6 @@ ACTOR MaulerKey : StrifeKey ACTOR FactoryKey : StrifeKey { - Game Strife ConversationID 157, 153, 156 Inventory.Icon "I_PROC" Tag "$TAG_FACTORYKEY" @@ -463,7 +438,6 @@ ACTOR FactoryKey : StrifeKey ACTOR MineKey : StrifeKey { - Game Strife ConversationID 158, 154, 157 Inventory.Icon "I_MINE" Tag "$TAG_MINEKEY" @@ -481,7 +455,6 @@ ACTOR MineKey : StrifeKey ACTOR NewKey5 : StrifeKey { - Game Strife ConversationID 159, 155, 158 Inventory.Icon "I_BLTK" Tag "$TAG_NEWKEY5" @@ -499,7 +472,6 @@ ACTOR NewKey5 : StrifeKey ACTOR OraclePass : Inventory { - Game Strife ConversationID 311, 292, 309 +INVENTORY.INVBAR Inventory.Icon "I_OTOK" diff --git a/wadsrc/static/actors/strife/strifestuff.txt b/wadsrc/static/actors/strife/strifestuff.txt index af72541e6..25ed31d66 100644 --- a/wadsrc/static/actors/strife/strifestuff.txt +++ b/wadsrc/static/actors/strife/strifestuff.txt @@ -2,7 +2,6 @@ ACTOR Tank1 { - Game Strife Radius 16 Height 192 +SOLID @@ -21,7 +20,6 @@ ACTOR Tank1 ACTOR Tank2 { - Game Strife Radius 16 Height 192 +SOLID @@ -40,7 +38,6 @@ ACTOR Tank2 ACTOR Tank3 { - Game Strife Radius 16 Height 192 +SOLID @@ -59,7 +56,6 @@ ACTOR Tank3 ACTOR Tank4 { - Game Strife Radius 16 Height 56 +SOLID @@ -78,7 +74,6 @@ ACTOR Tank4 ACTOR Tank5 { - Game Strife Radius 16 Height 56 +SOLID @@ -97,7 +92,6 @@ ACTOR Tank5 ACTOR Tank6 { - Game Strife Radius 16 Height 56 +SOLID @@ -116,7 +110,6 @@ ACTOR Tank6 ACTOR WaterBottle { - Game Strife ConversationID 131, -1, -1 States { @@ -130,7 +123,6 @@ ACTOR WaterBottle ACTOR Mug { - Game Strife ConversationID 132, -1, -1 States { @@ -144,7 +136,6 @@ ACTOR Mug ACTOR WoodenBarrel { - Game Strife Health 10 Radius 10 Height 32 @@ -171,7 +162,6 @@ ACTOR WoodenBarrel ACTOR ExplosiveBarrel2 { - Game Strife Health 30 Radius 10 Height 32 @@ -200,7 +190,6 @@ ACTOR ExplosiveBarrel2 ACTOR LightSilverFluorescent { - Game Strife Radius 2.5 Height 16 +NOBLOCKMAP @@ -218,7 +207,6 @@ ACTOR LightSilverFluorescent ACTOR LightBrownFluorescent { - Game Strife Radius 2.5 Height 16 +NOBLOCKMAP @@ -236,7 +224,6 @@ ACTOR LightBrownFluorescent ACTOR LightGoldFluorescent { - Game Strife Radius 2.5 Height 16 +NOBLOCKMAP @@ -254,7 +241,6 @@ ACTOR LightGoldFluorescent ACTOR LightGlobe { - Game Strife Radius 16 Height 16 +SOLID @@ -271,7 +257,6 @@ ACTOR LightGlobe ACTOR PillarTechno { - Game Strife Radius 20 Height 128 +SOLID @@ -288,7 +273,6 @@ ACTOR PillarTechno ACTOR PillarAztec { - Game Strife Radius 16 Height 128 +SOLID @@ -305,7 +289,6 @@ ACTOR PillarAztec ACTOR PillarAztecDamaged { - Game Strife Radius 16 Height 80 +SOLID @@ -322,7 +305,6 @@ ACTOR PillarAztecDamaged ACTOR PillarAztecRuined { - Game Strife Radius 16 Height 40 +SOLID @@ -339,7 +321,6 @@ ACTOR PillarAztecRuined ACTOR PillarHugeTech { - Game Strife Radius 24 Height 192 +SOLID @@ -356,7 +337,6 @@ ACTOR PillarHugeTech ACTOR PillarAlienPower { - Game Strife Radius 24 Height 192 +SOLID @@ -374,7 +354,6 @@ ACTOR PillarAlienPower ACTOR SStalactiteBig { - Game Strife Radius 16 Height 54 +SOLID +SPAWNCEILING +NOGRAVITY @@ -391,7 +370,6 @@ ACTOR SStalactiteBig ACTOR SStalactiteSmall { - Game Strife Radius 16 Height 40 +SOLID +SPAWNCEILING +NOGRAVITY @@ -408,7 +386,6 @@ ACTOR SStalactiteSmall ACTOR SStalagmiteBig { - Game Strife Radius 16 Height 40 +SOLID @@ -425,7 +402,6 @@ ACTOR SStalagmiteBig ACTOR CavePillarTop { - Game Strife Radius 16 Height 128 +SOLID +SPAWNCEILING +NOGRAVITY @@ -442,7 +418,6 @@ ACTOR CavePillarTop ACTOR CavePillarBottom { - Game Strife Radius 16 Height 128 +SOLID @@ -459,7 +434,6 @@ ACTOR CavePillarBottom ACTOR SStalagmiteSmall { - Game Strife Radius 16 Height 25 +SOLID @@ -476,7 +450,6 @@ ACTOR SStalagmiteSmall ACTOR Candle { - Game Strife ConversationID 222, -1, -1 States { @@ -490,7 +463,6 @@ ACTOR Candle ACTOR StrifeCandelabra { - Game Strife Radius 16 Height 40 +SOLID @@ -507,7 +479,6 @@ ACTOR StrifeCandelabra ACTOR WaterDropOnFloor { - Game Strife +NOBLOCKMAP ConversationID 224, -1, -1 ActiveSound "world/waterdrip" @@ -528,7 +499,6 @@ ACTOR WaterDropOnFloor ACTOR WaterfallSplash { - Game Strife +NOBLOCKMAP ConversationID 225, -1, -1 ActiveSound "world/waterfall" @@ -545,7 +515,6 @@ ACTOR WaterfallSplash ACTOR WaterDrip { - Game Strife Height 1 +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY ConversationID 226, -1, -1 @@ -562,7 +531,6 @@ ACTOR WaterDrip ACTOR WaterFountain { - Game Strife +NOBLOCKMAP ConversationID 227, -1, -1 ActiveSound "world/watersplash" @@ -579,7 +547,6 @@ ACTOR WaterFountain ACTOR HeartsInTank { - Game Strife Radius 16 Height 56 +SOLID @@ -596,7 +563,6 @@ ACTOR HeartsInTank ACTOR TeleportSwirl { - Game Strife +NOBLOCKMAP RenderStyle Add Alpha 0.25 @@ -614,7 +580,6 @@ ACTOR TeleportSwirl ACTOR DeadStrifePlayer { - Game Strife ConversationID 231, -1, -1 States { @@ -630,7 +595,6 @@ ACTOR DeadStrifePlayer ACTOR DeadPeasant { - Game Strife ConversationID 232, -1, -1 States { @@ -645,7 +609,6 @@ ACTOR DeadPeasant ACTOR DeadAcolyte { - Game Strife ConversationID 233, -1, -1 States { @@ -659,7 +622,6 @@ ACTOR DeadAcolyte ACTOR DeadReaver { - Game Strife ConversationID 234, -1, -1 States { @@ -673,7 +635,6 @@ ACTOR DeadReaver ACTOR DeadRebel { - Game Strife ConversationID 235, -1, -1 States { @@ -687,7 +648,6 @@ ACTOR DeadRebel ACTOR SacrificedGuy { - Game Strife ConversationID 236, -1, -1 States { @@ -704,7 +664,6 @@ ACTOR PileOfGuts // Strife used a doomednum, which is the same as the Aztec Pillar. Since // the pillar came first in the mobjinfo list, you could not spawn this // in a map. Pity. - Game Strife ConversationID 237, -1, -1 States { @@ -718,7 +677,6 @@ ACTOR PileOfGuts ACTOR StrifeBurningBarrel { - Game Strife Radius 16 Height 48 +SOLID @@ -735,7 +693,6 @@ ACTOR StrifeBurningBarrel ACTOR BurningBowl { - Game Strife Radius 16 Height 16 +SOLID @@ -753,7 +710,6 @@ ACTOR BurningBowl ACTOR BurningBrazier { - Game Strife Radius 10 Height 32 +SOLID @@ -771,7 +727,6 @@ ACTOR BurningBrazier ACTOR SmallTorchLit { - Game Strife Radius 2.5 Height 16 +NOBLOCKMAP @@ -792,7 +747,6 @@ ACTOR SmallTorchLit ACTOR SmallTorchUnlit { - Game Strife Radius 2.5 Height 16 +NOBLOCKMAP @@ -810,7 +764,6 @@ ACTOR SmallTorchUnlit ACTOR CeilingChain { - Game Strife Radius 20 Height 93 +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY @@ -828,7 +781,6 @@ ACTOR CeilingChain ACTOR CageLight { // No, it's not bright even though it's a light. - Game Strife Height 3 +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY ConversationID 244, -1, -1 @@ -844,7 +796,6 @@ ACTOR CageLight ACTOR Statue { - Game Strife Radius 20 Height 64 +SOLID @@ -861,7 +812,6 @@ ACTOR Statue ACTOR StatueRuined { - Game Strife Radius 20 Height 56 +SOLID @@ -878,7 +828,6 @@ ACTOR StatueRuined ACTOR MediumTorch { - Game Strife Radius 4 Height 72 +SOLID @@ -896,7 +845,6 @@ ACTOR MediumTorch ACTOR OutsideLamp { // No, it's not bright. - Game Strife Radius 3 Height 80 +SOLID @@ -914,7 +862,6 @@ ACTOR OutsideLamp ACTOR PoleLantern { // No, it's not bright. - Game Strife Radius 3 Height 80 +SOLID @@ -931,7 +878,6 @@ ACTOR PoleLantern ACTOR SRock1 { - Game Strife +NOBLOCKMAP ConversationID 250, -1, -1 States @@ -946,7 +892,6 @@ ACTOR SRock1 ACTOR SRock2 { - Game Strife +NOBLOCKMAP ConversationID 251, -1, -1 States @@ -961,7 +906,6 @@ ACTOR SRock2 ACTOR SRock3 { - Game Strife +NOBLOCKMAP ConversationID 252, -1, -1 States @@ -976,7 +920,6 @@ ACTOR SRock3 ACTOR SRock4 { - Game Strife +NOBLOCKMAP ConversationID 253, -1, -1 States @@ -991,7 +934,6 @@ ACTOR SRock4 ACTOR StickInWater { - Game Strife +NOBLOCKMAP +FLOORCLIP ConversationID 254, -1, -1 @@ -1008,7 +950,6 @@ ACTOR StickInWater ACTOR Rubble1 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 255, -1, -1 States @@ -1023,7 +964,6 @@ ACTOR Rubble1 ACTOR Rubble2 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 256, -1, -1 States @@ -1038,7 +978,6 @@ ACTOR Rubble2 ACTOR Rubble3 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 257, -1, -1 States @@ -1053,7 +992,6 @@ ACTOR Rubble3 ACTOR Rubble4 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 258, -1, -1 States @@ -1068,7 +1006,6 @@ ACTOR Rubble4 ACTOR Rubble5 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 259, -1, -1 States @@ -1083,7 +1020,6 @@ ACTOR Rubble5 ACTOR Rubble6 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 260, -1, -1 States @@ -1098,7 +1034,6 @@ ACTOR Rubble6 ACTOR Rubble7 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 261, -1, -1 States @@ -1113,7 +1048,6 @@ ACTOR Rubble7 ACTOR Rubble8 { - Game Strife +NOBLOCKMAP +NOCLIP ConversationID 262, -1, -1 States @@ -1128,7 +1062,6 @@ ACTOR Rubble8 ACTOR SurgeryCrab { - Game Strife +SOLID +SPAWNCEILING +NOGRAVITY Radius 20 Height 16 @@ -1145,7 +1078,6 @@ ACTOR SurgeryCrab ACTOR LargeTorch { - Game Strife Radius 10 Height 72 +SOLID @@ -1163,7 +1095,6 @@ ACTOR LargeTorch ACTOR HugeTorch { - Game Strife Radius 10 Height 80 +SOLID @@ -1181,7 +1112,6 @@ ACTOR HugeTorch ACTOR PalmTree { - Game Strife Radius 15 Height 109 +SOLID @@ -1198,7 +1128,6 @@ ACTOR PalmTree ACTOR BigTree2 { - Game Strife Radius 15 Height 109 +SOLID @@ -1215,7 +1144,6 @@ ACTOR BigTree2 ACTOR PottedTree { - Game Strife Radius 15 Height 64 +SOLID @@ -1232,7 +1160,6 @@ ACTOR PottedTree ACTOR TreeStub { - Game Strife Radius 15 Height 80 +SOLID @@ -1249,7 +1176,6 @@ ACTOR TreeStub ACTOR ShortBush { - Game Strife Radius 15 Height 40 +SOLID @@ -1266,7 +1192,6 @@ ACTOR ShortBush ACTOR TallBush { - Game Strife Radius 20 Height 64 +SOLID @@ -1283,7 +1208,6 @@ ACTOR TallBush ACTOR ChimneyStack { - Game Strife Radius 20 Height 64 // This height does not fit the sprite +SOLID @@ -1300,7 +1224,6 @@ ACTOR ChimneyStack ACTOR BarricadeColumn { - Game Strife Radius 16 Height 128 +SOLID @@ -1317,7 +1240,6 @@ ACTOR BarricadeColumn ACTOR Pot { - Game Strife Radius 12 Height 24 +SOLID @@ -1334,7 +1256,6 @@ ACTOR Pot ACTOR Pitcher { - Game Strife Radius 12 Height 32 +SOLID @@ -1351,7 +1272,6 @@ ACTOR Pitcher ACTOR Stool { - Game Strife Radius 6 Height 24 +SOLID @@ -1368,7 +1288,6 @@ ACTOR Stool ACTOR MetalPot { - Game Strife +NOBLOCKMAP ConversationID 277, -1, -1 States @@ -1383,7 +1302,6 @@ ACTOR MetalPot ACTOR Tub { - Game Strife +NOBLOCKMAP ConversationID 278, -1, -1 States @@ -1398,7 +1316,6 @@ ACTOR Tub ACTOR Anvil { - Game Strife Radius 16 Height 32 +SOLID @@ -1415,7 +1332,6 @@ ACTOR Anvil ACTOR TechLampSilver { - Game Strife Radius 11 Height 64 +SOLID @@ -1432,7 +1348,6 @@ ACTOR TechLampSilver ACTOR TechLampBrass { - Game Strife Radius 8 Height 64 +SOLID @@ -1449,7 +1364,6 @@ ACTOR TechLampBrass ACTOR Tray { - Game Strife Radius 24 Height 40 +SOLID @@ -1466,7 +1380,6 @@ ACTOR Tray ACTOR AmmoFiller { - Game Strife Radius 12 Height 24 +SOLID @@ -1483,7 +1396,6 @@ ACTOR AmmoFiller ACTOR SigilBanner { - Game Strife Radius 24 Height 96 +NOBLOCKMAP // I take it this was once solid, yes? @@ -1500,7 +1412,6 @@ ACTOR SigilBanner ACTOR RebelBoots { - Game Strife +NOBLOCKMAP ConversationID 285, -1, -1 States @@ -1515,7 +1426,6 @@ ACTOR RebelBoots ACTOR RebelHelmet { - Game Strife +NOBLOCKMAP ConversationID 286, -1, -1 States @@ -1530,7 +1440,6 @@ ACTOR RebelHelmet ACTOR RebelShirt { - Game Strife +NOBLOCKMAP ConversationID 287, -1, -1 States @@ -1545,7 +1454,6 @@ ACTOR RebelShirt ACTOR AlienBubbleColumn { - Game Strife Radius 16 Height 128 +SOLID @@ -1563,7 +1471,6 @@ ACTOR AlienBubbleColumn ACTOR AlienFloorBubble { - Game Strife Radius 16 Height 72 +SOLID @@ -1581,7 +1488,6 @@ ACTOR AlienFloorBubble ACTOR AlienCeilingBubble { - Game Strife Radius 16 Height 72 +SOLID +SPAWNCEILING +NOGRAVITY @@ -1599,7 +1505,6 @@ ACTOR AlienCeilingBubble ACTOR AlienAspClimber { - Game Strife Radius 16 Height 128 +SOLID @@ -1617,7 +1522,6 @@ ACTOR AlienAspClimber ACTOR AlienSpiderLight { - Game Strife Radius 32 Height 56 +SOLID @@ -1635,7 +1539,6 @@ ACTOR AlienSpiderLight ACTOR TargetPractice { - Game Strife Health 99999999 PainChance 255 Radius 10 @@ -1661,7 +1564,6 @@ ACTOR TargetPractice ACTOR ForceFieldGuard native { - Game Strife Health 10 Radius 2 Height 1 @@ -1685,7 +1587,6 @@ ACTOR ForceFieldGuard native ACTOR KneelingGuy { - Game Strife ConversationID 37,-1,-1 Health 51 Painchance 255 @@ -1734,7 +1635,6 @@ ACTOR KneelingGuy ACTOR KlaxonWarningLight { - Game Strife ConversationID 121,-1,-1 ReactionTime 60 Radius 5 @@ -1759,7 +1659,6 @@ ACTOR KlaxonWarningLight ACTOR CeilingTurret { - Game Strife ConversationID 122,-1,-1 Health 125 Speed 0 @@ -1803,7 +1702,6 @@ ACTOR CeilingTurret ACTOR PowerCoupling native { - Game Strife ConversationID 288,-1,-1 Health 40 Radius 17 diff --git a/wadsrc/static/actors/strife/strifeweapons.txt b/wadsrc/static/actors/strife/strifeweapons.txt index dc60db3cc..785ebfaae 100644 --- a/wadsrc/static/actors/strife/strifeweapons.txt +++ b/wadsrc/static/actors/strife/strifeweapons.txt @@ -45,7 +45,6 @@ ACTOR StrifeSpark : StrifePuff ACTOR PunchDagger : StrifeWeapon { - Game Strife Weapon.SelectionOrder 3900 +WEAPON.NOALERT Obituary "$OB_MPPUNCHDAGGER" @@ -152,7 +151,6 @@ ACTOR PoisonBolt native ACTOR StrifeCrossbow : StrifeWeapon { - Game Strife +FLOORCLIP ConversationID 194, 188, 192 Weapon.SelectionOrder 1200 @@ -203,7 +201,6 @@ ACTOR StrifeCrossbow : StrifeWeapon ACTOR StrifeCrossbow2 : StrifeCrossbow { - Game Strife Weapon.SelectionOrder 2700 Weapon.AmmoUse1 1 Weapon.AmmoGive1 0 @@ -240,7 +237,6 @@ ACTOR StrifeCrossbow2 : StrifeCrossbow actor AssaultGun : StrifeWeapon { - Game Strife ConversationID 188, 182, 186 +FLOORCLIP Weapon.SelectionOrder 600 @@ -279,7 +275,6 @@ actor AssaultGun : StrifeWeapon ACTOR AssaultGunStanding : WeaponGiver { - Game Strife ConversationID 189, 183, 187 DropItem "AssaultGun" Inventory.PickupMessage "$TXT_ASSAULTGUN" @@ -297,7 +292,6 @@ ACTOR AssaultGunStanding : WeaponGiver ACTOR MiniMissileLauncher : StrifeWeapon { - Game Strife ConversationID 192, 186, 190 +FLOORCLIP Weapon.SelectionOrder 1800 @@ -371,7 +365,6 @@ ACTOR MiniMissilePuff : StrifePuff ACTOR MiniMissile { - Game Strife ConversationID 99,-1,-1 Speed 20 Radius 10 @@ -403,7 +396,6 @@ ACTOR MiniMissile ACTOR FlameThrower : StrifeWeapon { - Game Strife ConversationID 190, 184, 188 +FLOORCLIP Weapon.SelectionOrder 2100 @@ -482,7 +474,6 @@ ACTOR FlameMissile ACTOR Mauler : StrifeWeapon { - Game Strife ConversationID 193, 187, 191 +FLOORCLIP Weapon.SelectionOrder 300 @@ -528,7 +519,6 @@ ACTOR Mauler : StrifeWeapon ACTOR Mauler2 : Mauler { - Game Strife Weapon.SelectionOrder 3300 Weapon.AmmoUse1 30 Weapon.AmmoGive1 0 @@ -643,7 +633,6 @@ ACTOR MaulerTorpedoWave ACTOR HEGrenade { - Game Strife ConversationID 106,-1,-1 Speed 15 Radius 13 @@ -681,7 +670,6 @@ ACTOR HEGrenade ACTOR PhosphorousGrenade { - Game Strife ConversationID 107,-1,-1 Speed 15 Radius 13 @@ -754,7 +742,6 @@ ACTOR PhosphorousFire native ACTOR StrifeGrenadeLauncher : StrifeWeapon { - Game Strife ConversationID 195, 189, 193 +FLOORCLIP Weapon.SelectionOrder 2400 @@ -803,7 +790,6 @@ ACTOR StrifeGrenadeLauncher : StrifeWeapon ACTOR StrifeGrenadeLauncher2 : StrifeGrenadeLauncher { - Game Strife Weapon.SelectionOrder 3200 Weapon.AmmoUse1 1 Weapon.AmmoGive1 0 diff --git a/wadsrc/static/actors/strife/templar.txt b/wadsrc/static/actors/strife/templar.txt index 00316ff43..e11321e82 100644 --- a/wadsrc/static/actors/strife/templar.txt +++ b/wadsrc/static/actors/strife/templar.txt @@ -1,7 +1,6 @@ ACTOR Templar { - Game Strife ConversationID 62, 61, 62 Health 300 Painchance 100 diff --git a/wadsrc/static/actors/strife/thingstoblowup.txt b/wadsrc/static/actors/strife/thingstoblowup.txt index c2b9b1916..2860cea11 100644 --- a/wadsrc/static/actors/strife/thingstoblowup.txt +++ b/wadsrc/static/actors/strife/thingstoblowup.txt @@ -23,7 +23,6 @@ ACTOR Bang4Cloud ACTOR Piston { - Game Strife ConversationID 123,-1,-1 Health 100 Speed 16 @@ -60,7 +59,6 @@ ACTOR Piston ACTOR Computer { - Game Strife ConversationID 124,-1,-1 Health 80 Speed 27 @@ -100,7 +98,6 @@ ACTOR Computer ACTOR PowerCrystal { - Game Strife ConversationID 201,-1,-1 Health 50 Speed 14 diff --git a/wadsrc/static/actors/strife/zombie.txt b/wadsrc/static/actors/strife/zombie.txt index f92cc5a0d..064cf4ffa 100644 --- a/wadsrc/static/actors/strife/zombie.txt +++ b/wadsrc/static/actors/strife/zombie.txt @@ -3,7 +3,6 @@ ACTOR Zombie : StrifeHumanoid { - Game Strife Health 31 Radius 20 Height 56 @@ -45,7 +44,6 @@ ACTOR Zombie : StrifeHumanoid ACTOR ZombieSpawner { - Game Strife Health 20 +SHOOTABLE +NOSECTOR diff --git a/wadsrc/static/mapinfo/common.txt b/wadsrc/static/mapinfo/common.txt index 7202a6265..5e83ee727 100644 --- a/wadsrc/static/mapinfo/common.txt +++ b/wadsrc/static/mapinfo/common.txt @@ -222,6 +222,30 @@ DoomEdNums 32000 = DoomBuilderCamera } +SpawnNums +{ + 41 = Rock1 + 42 = Rock2 + 43 = Rock3 + 44 = Dirt1 + 45 = Dirt2 + 46 = Dirt3 + 47 = Dirt4 + 48 = Dirt5 + 49 = Dirt6 + 54 = SGShard1 + 55 = SGShard2 + 56 = SGShard3 + 57 = SGShard4 + 58 = SGShard5 + 59 = SGShard6 + 60 = SGShard7 + 61 = SGShard8 + 62 = SGShard9 + 63 = SGShard0 + 130 = Blood +} + Intermission Inter_Titlescreen { diff --git a/wadsrc/static/mapinfo/doomcommon.txt b/wadsrc/static/mapinfo/doomcommon.txt index 8138c905d..60be71ea4 100644 --- a/wadsrc/static/mapinfo/doomcommon.txt +++ b/wadsrc/static/mapinfo/doomcommon.txt @@ -67,6 +67,97 @@ gameinfo statscreen_enteringpatch = "WIENTER" } +spawnnums +{ + 1 = ShotgunGuy + 2 = ChaingunGuy + 3 = BaronOfHell + 4 = Zombieman + 5 = DoomImp + 6 = Arachnotron + 7 = SpiderMastermind + 8 = Demon + 9 = Spectre + 10 = DoomImpBall + 11 = Clip + 12 = Shell + 19 = Cacodemon + 20 = Revenant + 21 = ZBridge + 22 = ArmorBonus + 23 = Stimpack + 24 = Medikit + 25 = Soulsphere + 27 = Shotgun + 28 = Chaingun + 29 = RocketLauncher + 30 = PlasmaRifle + 31 = BFG9000 + 32 = Chainsaw + 33 = SuperShotgun + 51 = PlasmaBall + 53 = RevenantTracer + 68 = GreenArmor + 69 = BlueArmor + 75 = Cell + 85 = BlueCard + 86 = RedCard + 87 = YellowCard + 88 = YellowSkull + 89 = RedSkull + 90 = BlueSkull + 98 = ArchvileFire + 100 = StealthBaron + 101 = StealthHellKnight + 102 = StealthZombieMan + 103 = StealthShotgunGuy + 110 = LostSoul + 111 = Archvile + 112 = Fatso + 113 = HellKnight + 114 = Cyberdemon + 115 = PainElemental + 116 = WolfensteinSS + 117 = StealthArachnotron + 118 = StealthArchvile + 119 = StealthCacodemon + 120 = StealthChaingunGuy + 121 = StealthDemon + 122 = StealthDoomImp + 123 = StealthFatso + 124 = StealthRevenant + 125 = ExplosiveBarrel + 126 = CacodemonBall + 127 = Rocket + 128 = BFGBall + 129 = ArachnotronPlasma + 131 = BulletPuff + 132 = Megasphere + 133 = InvulnerabilitySphere + 134 = Berserk + 135 = BlurSphere + 136 = RadSuit + 137 = Allmap + 138 = Infrared + 139 = ClipBox + 140 = RocketAmmo + 141 = RocketBox + 142 = CellPack + 143 = ShellBox + 144 = Backpack + 145 = GibbedMarine + 146 = Gibs + 147 = ColonGibs + 148 = SmallBloodPool + 149 = BurningBarrel + 150 = BrainStem + 151 = ScriptedMarine + 152 = HealthBonus + 153 = FatShot + 154 = BaronBall + 216 = Grenade +} + skill baby { AutoUseHealth diff --git a/wadsrc/static/mapinfo/heretic.txt b/wadsrc/static/mapinfo/heretic.txt index a4b8c3ece..71d9a9949 100644 --- a/wadsrc/static/mapinfo/heretic.txt +++ b/wadsrc/static/mapinfo/heretic.txt @@ -165,6 +165,100 @@ DoomEdNums 9042 = GoldWand } +SpawnNums +{ + 1 = Clink + 2 = MummyLeader + 3 = Beast + 4 = Mummy + 5 = HereticImp + 6 = Knight + 7 = HereticImpLeader + 8 = MummyGhost + 9 = MummyLeaderGhost + 10 = HereticImpBall + 11 = GoldWandAmmo + 12 = GoldWandHefty + 14 = ArtiEgg + 15 = ArtiFly + 18 = ArtiTeleport + 19 = Wizard + 20 = Ironlich + 21 = Bridge + 23 = CrystalVial + 24 = ArtiHealth + 25 = ArtiSuperHealth + 27 = Crossbow + 28 = Blaster + 29 = PhoenixRod + 30 = SkullRod + 31 = Mace + 32 = Gauntlets + 33 = CrossbowAmmo + 34 = CrossbowHefty + 35 = MaceAmmo + 36 = MaceHefty + 37 = BlasterAmmo + 38 = BlasterHefty + 40 = EggFX + 68 = SilverShield + 69 = EnchantedShield + 72 = ArtiTimeBomb + 73 = ArtiTorch + 85 = KeyBlue + 86 = KeyGreen + 87 = KeyYellow + 110 = SoundWind + 111 = SoundWaterfall + 120 = BeastBall + 121 = Feather + 122 = Chicken + 123 = VolcanoBlast + 124 = VolcanoTBlast + 125 = Pod + 126 = PodGenerator + 127 = KnightAxe + 128 = RedAxe + 129 = KnightGhost + 131 = MummyFX1 + 132 = Snake + 133 = ArtiInvulnerability + 134 = ArtiTomeOfPower + 135 = ArtiInvisibility + 136 = BagOfHolding + 137 = SuperMap + 138 = SnakeProjA + 139 = SnakeProjB + 140 = WizardFX1 + 141 = BossSpot + 142 = Sorcerer1 + 143 = Sorcerer2 + 144 = SorcererFX1 + 145 = Sorcerer2FX1 + 146 = Sorcerer2FX2 + 147 = CrossbowFX1 + 148 = CrossbowFX2 + 149 = CrossbowFX3 + 150 = Volcano + 151 = GoldWandFX1 + 152 = GoldWandFX2 + 153 = MaceFX4 + 154 = MaceFX1 + 155 = MaceFX3 + 156 = MaceFX2 + 157 = Ripper + 158 = SkullRodAmmo + 159 = SkullRodHefty + 160 = HornRodFX1 + 161 = PhoenixRodAmmo + 162 = PhoenixRodHefty + 163 = PhoenixFX1 + 164 = HeadFX1 + 165 = Whirlwind + 166 = TeleGlitterGenerator1 + 167 = TeleGlitterGenerator2 +} + skill baby { AutoUseHealth diff --git a/wadsrc/static/mapinfo/hexen.txt b/wadsrc/static/mapinfo/hexen.txt index 2788947a5..508d546aa 100644 --- a/wadsrc/static/mapinfo/hexen.txt +++ b/wadsrc/static/mapinfo/hexen.txt @@ -299,6 +299,101 @@ DoomEdNums 10503 = FlameLarge } +SpawnNums +{ + 1 = Centaur + 2 = CentaurLeader + 3 = Demon1 + 4 = Ettin + 5 = FireDemon + 6 = Serpent + 7 = SerpentLeader + 8 = Wraith + 9 = WraithBuried + 10 = FireBall + 11 = Mana1 + 12 = Mana2 + 13 = ArtiSpeedBoots + 14 = ArtiPork + 15 = ArtiFly + 16 = ArtiDarkServant + 17 = ArtiTeleportOther + 18 = ArtiTeleport + 19 = Bishop + 20 = IceGuy + 21 = Bridge + 22 = ArtiBoostArmor + 23 = CrystalVial + 24 = ArtiHealth + 25 = ArtiSuperHealth + 26 = ArtiBoostMana + 27 = FWeapAxe + 28 = FWeapHammer + 29 = FWeaponPiece1 + 30 = FWeaponPiece2 + 31 = FWeaponPiece3 + 32 = CWeapStaff + 33 = CWeaponPiece1 + 34 = CWeaponPiece2 + 35 = CWeaponPiece3 + 36 = MWeapFrost + 37 = MWeaponPiece1 + 38 = MWeaponPiece2 + 39 = MWeaponPiece3 + 40 = PorkFX + 50 = Arrow + 51 = Dart + 52 = PoisonDart + 53 = RipperBall + 64 = ProjectileBlade + 65 = IceShard + 66 = FlameSmall2 + 67 = FlameLarge2 + 68 = MeshArmor + 69 = FalconShield + 70 = PlatinumHelm + 71 = AmuletOfWarding + 72 = ArtiPoisonBag + 73 = ArtiTorch + 74 = ArtiBlastRadius + 75 = Mana3 + 76 = PuzzSkull + 77 = PuzzGemBig + 78 = PuzzGemRed + 79 = PuzzGemGreen1 + 80 = PuzzGemGreen2 + 81 = PuzzGemBlue1 + 82 = PuzzGemBlue2 + 83 = PuzzBook1 + 84 = PuzzBook2 + 85 = KeySteel + 86 = KeyCave + 87 = KeyAxe + 88 = KeyFire + 89 = KeyEmerald + 90 = KeyDungeon + 91 = KeySilver + 92 = KeyRusted + 93 = KeyHorn + 94 = KeySwamp + 95 = HWaterDrip + 96 = FlameSmallTemp + 97 = FlameSmall + 98 = FlameLargeTemp + 99 = FlameLarge + 100 = Demon1Mash + 101 = Demon2Mash + 102 = EttinMash + 103 = CentaurMash + 104 = ThrustFloorUp + 105 = ThrustFloorDown + 106 = WraithFX4 + 107 = WraithFX5 + 108 = WraithFX2 + 110 = SoundWindHexen + 133 = ArtiInvulnerability2 +} + skill baby { AutoUseHealth diff --git a/wadsrc/static/mapinfo/strife.txt b/wadsrc/static/mapinfo/strife.txt index 6d00d1214..06fb13fbe 100644 --- a/wadsrc/static/mapinfo/strife.txt +++ b/wadsrc/static/mapinfo/strife.txt @@ -321,6 +321,22 @@ DoomEdNums 3006 = Sentinel } +SpawnNums +{ + 11 = ClipOfBullets + 68 = LeatherArmor + 69 = MetalArmor + 75 = EnergyPod + 135 = ShadowArmor + 136 = EnvironmentalSuit + 137 = StrifeMap + 139 = BoxOfBullets + 140 = MiniMissiles + 141 = CrateOfMissiles + 142 = EnergyPack + 144 = AmmoSatchel +} + Intermission Inter_Strife_Good { Image From a08e439551a0e2cd48fdbbe9ae53b4f67ec50606 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 19:21:23 -0500 Subject: [PATCH 056/144] Update VS2005 project --- zdoom.vcproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/zdoom.vcproj b/zdoom.vcproj index 9c3367ff2..ef356b44a 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -1942,6 +1942,10 @@ RelativePath=".\src\win32\fb_ddraw.cpp" > + + From 966d0b70344f3b3356772a3ef421f68af4310449 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 19:59:42 -0500 Subject: [PATCH 057/144] Use FString for FResourceLump::FullName --- src/d_iwad.cpp | 4 ++-- src/resourcefiles/file_7z.cpp | 2 +- src/resourcefiles/file_directory.cpp | 2 +- src/resourcefiles/file_zip.cpp | 2 +- src/resourcefiles/resourcefile.cpp | 7 +------ src/resourcefiles/resourcefile.h | 3 +-- src/w_wad.cpp | 17 +++++++---------- 7 files changed, 14 insertions(+), 23 deletions(-) diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 4bb53e3fe..d6b1b092d 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -302,11 +302,11 @@ int FIWadManager::ScanIWAD (const char *iwad) FResourceLump *lump = iwadfile->GetLump(ii); CheckLumpName(lump->Name); - if (lump->FullName != NULL) + if (lump->FullName.IsNotEmpty()) { if (strnicmp(lump->FullName, "maps/", 5) == 0) { - FString mapname(lump->FullName+5, strcspn(lump->FullName+5, ".")); + FString mapname(&lump->FullName[5], strcspn(&lump->FullName[5], ".")); CheckLumpName(mapname); } } diff --git a/src/resourcefiles/file_7z.cpp b/src/resourcefiles/file_7z.cpp index 21c11ed25..81b740582 100644 --- a/src/resourcefiles/file_7z.cpp +++ b/src/resourcefiles/file_7z.cpp @@ -206,7 +206,7 @@ int STACK_ARGS F7ZFile::lumpcmp(const void * a, const void * b) F7ZLump * rec1 = (F7ZLump *)a; F7ZLump * rec2 = (F7ZLump *)b; - return stricmp(rec1->FullName, rec2->FullName); + return rec1->FullName.CompareNoCase(rec2->FullName); } diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index 024ef0633..0b74bda7b 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -133,7 +133,7 @@ int STACK_ARGS FDirectory::lumpcmp(const void * a, const void * b) FDirectoryLump * rec1 = (FDirectoryLump *)a; FDirectoryLump * rec2 = (FDirectoryLump *)b; - return stricmp(rec1->FullName, rec2->FullName); + return rec1->FullName.CompareNoCase(rec2->FullName); } #ifdef _WIN32 diff --git a/src/resourcefiles/file_zip.cpp b/src/resourcefiles/file_zip.cpp index 7ae0e90a5..bbca89d40 100644 --- a/src/resourcefiles/file_zip.cpp +++ b/src/resourcefiles/file_zip.cpp @@ -154,7 +154,7 @@ int STACK_ARGS FZipFile::lumpcmp(const void * a, const void * b) FZipLump * rec1 = (FZipLump *)a; FZipLump * rec2 = (FZipLump *)b; - return stricmp(rec1->FullName, rec2->FullName); + return rec1->FullName.CompareNoCase(rec2->FullName); } diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 15a4337b1..41d7f8a99 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -74,11 +74,6 @@ public: FResourceLump::~FResourceLump() { - if (FullName != NULL) - { - delete [] FullName; - FullName = NULL; - } if (Cache != NULL && RefCount >= 0) { delete [] Cache; @@ -102,7 +97,7 @@ void FResourceLump::LumpNameSetup(const char *iname) base = base.Left(base.LastIndexOf('.')); uppercopy(Name, base); Name[8] = 0; - FullName = copystring(iname); + FullName = iname; // Map some directories to WAD namespaces. // Note that some of these namespaces don't exist in WADS. diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index 517b5eef4..bcd030e8f 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -13,7 +13,7 @@ struct FResourceLump friend class FResourceFile; int LumpSize; - char * FullName; // only valid for files loaded from a .zip file + FString FullName; // only valid for files loaded from a non-wad archive union { char Name[9]; @@ -30,7 +30,6 @@ struct FResourceLump FResourceLump() { - FullName = NULL; Cache = NULL; Owner = NULL; Flags = 0; diff --git a/src/w_wad.cpp b/src/w_wad.cpp index abbac5763..ccb851a0b 100644 --- a/src/w_wad.cpp +++ b/src/w_wad.cpp @@ -290,14 +290,9 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo) FResourceLump *lump = resfile->GetLump(i); if (lump->Flags & LUMPF_EMBEDDED) { - char path[256]; - - mysnprintf(path, countof(path), "%s:", filename); - char *wadstr = path + strlen(path); - + FString path; + path.Format("%s:%s", filename, lump->FullName.GetChars()); FileReader *embedded = lump->NewReader(); - strcpy(wadstr, lump->FullName); - AddFile(path, embedded); } } @@ -345,7 +340,9 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo) sprintf(cksumout + (j * 2), "%02X", cksum[j]); } - fprintf(hashfile, "file: %s, lump: %s, hash: %s, size: %d\n", filename, lump->FullName ? lump->FullName : lump->Name, cksumout, lump->LumpSize); + fprintf(hashfile, "file: %s, lump: %s, hash: %s, size: %d\n", filename, + lump->FullName.IsNotEmpty() ? lump->FullName.GetChars() : lump->Name, + cksumout, lump->LumpSize); delete reader; } @@ -737,7 +734,7 @@ void FWadCollection::InitHashChains (void) FirstLumpIndex[j] = i; // Do the same for the full paths - if (LumpInfo[i].lump->FullName!=NULL) + if (LumpInfo[i].lump->FullName.IsNotEmpty()) { j = MakeKey(LumpInfo[i].lump->FullName) % NumLumps; NextLumpIndex_FullName[i] = FirstLumpIndex_FullName[j]; @@ -1088,7 +1085,7 @@ const char *FWadCollection::GetLumpFullName (int lump) const { if ((size_t)lump >= NumLumps) return NULL; - else if (LumpInfo[lump].lump->FullName != NULL) + else if (LumpInfo[lump].lump->FullName.IsNotEmpty()) return LumpInfo[lump].lump->FullName; else return LumpInfo[lump].lump->Name; From efa82cf38bf92672b32854c18b7d3186a7daf4a1 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 20:22:18 -0500 Subject: [PATCH 058/144] Consolidate archive sorting into FResourceFile base class --- src/d_iwad.cpp | 2 +- src/resourcefiles/file_7z.cpp | 16 ++-------------- src/resourcefiles/file_directory.cpp | 19 +------------------ src/resourcefiles/file_zip.cpp | 15 +-------------- src/resourcefiles/resourcefile.cpp | 21 +++++++++++++++++++++ src/resourcefiles/resourcefile.h | 1 + 6 files changed, 27 insertions(+), 47 deletions(-) diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index d6b1b092d..4a46a93cd 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -253,7 +253,7 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize) //========================================================================== // -// Lool for IWAD definition lump +// Look for IWAD definition lump // //========================================================================== diff --git a/src/resourcefiles/file_7z.cpp b/src/resourcefiles/file_7z.cpp index 81b740582..1fb553932 100644 --- a/src/resourcefiles/file_7z.cpp +++ b/src/resourcefiles/file_7z.cpp @@ -179,7 +179,7 @@ struct F7ZLump : public FResourceLump //========================================================================== // -// Zip file +// 7-zip file // //========================================================================== @@ -190,8 +190,6 @@ class F7ZFile : public FResourceFile F7ZLump *Lumps; C7zArchive *Archive; - static int STACK_ARGS lumpcmp(const void * a, const void * b); - public: F7ZFile(const char * filename, FileReader *filer); bool Open(bool quiet); @@ -201,15 +199,6 @@ public: -int STACK_ARGS F7ZFile::lumpcmp(const void * a, const void * b) -{ - F7ZLump * rec1 = (F7ZLump *)a; - F7ZLump * rec2 = (F7ZLump *)b; - - return rec1->FullName.CompareNoCase(rec2->FullName); -} - - //========================================================================== // // 7Z file @@ -328,8 +317,7 @@ bool F7ZFile::Open(bool quiet) if (!quiet) Printf(", %d lumps\n", NumLumps); - // Entries in archives are sorted alphabetically - qsort(&Lumps[0], NumLumps, sizeof(F7ZLump), lumpcmp); + PostProcessArchive(&Lumps[0], sizeof(F7ZLump)); return true; } diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index 0b74bda7b..08cb99ea9 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -86,8 +86,6 @@ class FDirectory : public FResourceFile { TArray Lumps; - static int STACK_ARGS lumpcmp(const void * a, const void * b); - int AddDirectory(const char *dirpath); void AddEntry(const char *fullpath, int size); @@ -122,20 +120,6 @@ FDirectory::FDirectory(const char * directory) } -//========================================================================== -// -// -// -//========================================================================== - -int STACK_ARGS FDirectory::lumpcmp(const void * a, const void * b) -{ - FDirectoryLump * rec1 = (FDirectoryLump *)a; - FDirectoryLump * rec2 = (FDirectoryLump *)b; - - return rec1->FullName.CompareNoCase(rec2->FullName); -} - #ifdef _WIN32 //========================================================================== // @@ -299,8 +283,7 @@ bool FDirectory::Open(bool quiet) { NumLumps = AddDirectory(Filename); if (!quiet) Printf(", %d lumps\n", NumLumps); - // Entries in Zips are sorted alphabetically. - qsort(&Lumps[0], NumLumps, sizeof(FDirectoryLump), lumpcmp); + PostProcessArchive(&Lumps[0], sizeof(FDirectoryLump)); return true; } diff --git a/src/resourcefiles/file_zip.cpp b/src/resourcefiles/file_zip.cpp index bbca89d40..5d6ff6c9e 100644 --- a/src/resourcefiles/file_zip.cpp +++ b/src/resourcefiles/file_zip.cpp @@ -138,8 +138,6 @@ class FZipFile : public FResourceFile { FZipLump *Lumps; - static int STACK_ARGS lumpcmp(const void * a, const void * b); - public: FZipFile(const char * filename, FileReader *file); virtual ~FZipFile(); @@ -148,16 +146,6 @@ public: }; - -int STACK_ARGS FZipFile::lumpcmp(const void * a, const void * b) -{ - FZipLump * rec1 = (FZipLump *)a; - FZipLump * rec2 = (FZipLump *)b; - - return rec1->FullName.CompareNoCase(rec2->FullName); -} - - //========================================================================== // // Zip file @@ -274,8 +262,7 @@ bool FZipFile::Open(bool quiet) if (!quiet) Printf(", %d lumps\n", NumLumps); - // Entries in Zips are sorted alphabetically. - qsort(Lumps, NumLumps, sizeof(FZipLump), lumpcmp); + PostProcessArchive(&Lumps[0], sizeof(FZipLump)); return true; } diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 41d7f8a99..181559f85 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -316,6 +316,27 @@ FResourceFile::~FResourceFile() delete Reader; } +int STACK_ARGS lumpcmp(const void * a, const void * b) +{ + FResourceLump * rec1 = (FResourceLump *)a; + FResourceLump * rec2 = (FResourceLump *)b; + + return rec1->FullName.CompareNoCase(rec2->FullName); +} + +//========================================================================== +// +// FResourceFile :: PostProcessArchive +// +// Sorts files by name. +// +//========================================================================== + +void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize) +{ + // Entries in archives are sorted alphabetically + qsort(lumps, NumLumps, lumpsize, lumpcmp); +} //========================================================================== // diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index bcd030e8f..8fd7366ef 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -76,6 +76,7 @@ public: DWORD LumpCount() const { return NumLumps; } DWORD GetFirstLump() const { return FirstLump; } void SetFirstLump(DWORD f) { FirstLump = f; } + void PostProcessArchive(void *lumps, size_t lumpsize); // for archives that can contain directories virtual void FindStrifeTeaserVoices (); virtual bool Open(bool quiet) = 0; From fc6f983c136ec01aa4759bd9eb896c310222d74f Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 21:50:08 -0500 Subject: [PATCH 059/144] Fix memory leak when passing directories to -file --- src/resourcefiles/file_directory.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index 08cb99ea9..f6adf0723 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -111,9 +111,12 @@ FDirectory::FDirectory(const char * directory) #ifdef _WIN32 directory = _fullpath(NULL, directory, _MAX_PATH); #else - // Todo for Linux: Resolve the path befire using it + // Todo for Linux: Resolve the path before using it #endif dirname = directory; + #ifdef _WIN32 + free((void *)directory); + #endif dirname.ReplaceChars('\\', '/'); if (dirname[dirname.Len()-1] != '/') dirname += '/'; Filename = copystring(dirname); From 7b4d6e2f8768a5a8c467d4cf22ed6b5cd11bde0f Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 22:42:22 -0500 Subject: [PATCH 060/144] Add lump filtering for archive resources - Multi-directory archives (e.g. zips) now support filtering lumps depending on the loaded IWAD. The search rules are the same as for the Autoload entries in the user's ini. For instance, if you are playing Doom 2, the following filters will be applied: * "filter/doom2/*" * "filter/doom/*" They will be renamed to strip out the "filter/doom2/" and "filter/doom/" parts and will be ordered so they take precedence over any files not inside a filter/ directory. Any files inside another filter/ directory (e.g. "filter/hexen/*") will be ignored. --- src/d_main.cpp | 3 + src/doomstat.cpp | 1 + src/doomstat.h | 3 + src/resourcefiles/resourcefile.cpp | 170 ++++++++++++++++++++++++++++- src/resourcefiles/resourcefile.h | 8 +- src/w_wad.cpp | 30 +++++ src/w_wad.h | 2 + 7 files changed, 215 insertions(+), 2 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 737622de3..ab2459788 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1992,6 +1992,9 @@ static void D_DoomInit() static void AddAutoloadFiles(const char *group, const char *autoname) { + LumpFilterGroup = group; + LumpFilterIWAD = autoname; + if (!(gameinfo.flags & GI_SHAREWARE) && !Args->CheckParm("-noautoload")) { FString file; diff --git a/src/doomstat.cpp b/src/doomstat.cpp index 27c50b81e..697ef3afe 100644 --- a/src/doomstat.cpp +++ b/src/doomstat.cpp @@ -69,3 +69,4 @@ int SinglePlayerClass[MAXPLAYERS]; bool ToggleFullscreen; int BorderTopRefresh; +FString LumpFilterGroup, LumpFilterIWAD; diff --git a/src/doomstat.h b/src/doomstat.h index b1784530f..d7f3796ac 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -250,4 +250,7 @@ EXTERN_CVAR (Int, compatflags); EXTERN_CVAR (Int, compatflags2); extern int i_compatflags, i_compatflags2, ii_compatflags, ii_compatflags2, ib_compatflags; +// Filters from AddAutoloadFiles(). Used to filter files from archives. +extern FString LumpFilterGroup, LumpFilterIWAD; + #endif diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 181559f85..64fe9b6cf 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -38,7 +38,8 @@ #include "cmdlib.h" #include "w_wad.h" #include "doomerrors.h" - +#include "gi.h" +#include "doomstat.h" //========================================================================== @@ -329,6 +330,9 @@ int STACK_ARGS lumpcmp(const void * a, const void * b) // FResourceFile :: PostProcessArchive // // Sorts files by name. +// For files named "filter//*": Using the same filter rules as config +// autoloading, move them to the end and rename them without the "filter/" +// prefix. Filtered files that don't match are deleted. // //========================================================================== @@ -336,6 +340,170 @@ void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize) { // Entries in archives are sorted alphabetically qsort(lumps, NumLumps, lumpsize, lumpcmp); + + // Filter out lumps using the same names as the Autoload.* sections + // in the ini file use. We reduce the maximum lump concidered after + // each one so that we don't risk refiltering already filtered lumps. + DWORD max = NumLumps; + max -= FilterLumps(gameinfo.ConfigName, lumps, lumpsize, max); + max -= FilterLumps(LumpFilterGroup, lumps, lumpsize, max); + max -= FilterLumps(LumpFilterIWAD, lumps, lumpsize, max); + JunkLeftoverFilters(lumps, lumpsize, max); +} + +//========================================================================== +// +// FResourceFile :: FilterLumps +// +// Finds any lumps between [0,) that match the pattern +// "filter//*" and moves them to the end of the lump list. +// Returns the number of lumps moved. +// +//========================================================================== + +int FResourceFile::FilterLumps(FString filtername, void *lumps, size_t lumpsize, DWORD max) +{ + FString filter; + DWORD start, end; + + if (filtername.IsEmpty()) + { + return 0; + } + filter << "filter/" << filtername << '/'; + if (FindPrefixRange(filter, lumps, lumpsize, max, start, end)) + { + void *from = (BYTE *)lumps + start * lumpsize; + + // Remove filter prefix from every name + void *lump_p = from; + for (DWORD i = start; i < end; ++i, lump_p = (BYTE *)lump_p + lumpsize) + { + FResourceLump *lump = (FResourceLump *)lump_p; + assert(lump->FullName.CompareNoCase(filter, (int)filter.Len()) == 0); + lump->LumpNameSetup(&lump->FullName[filter.Len()]); + } + + // Move filtered lumps to the end of the lump list. + size_t count = (end - start) * lumpsize; + void *to = (BYTE *)lumps + NumLumps * lumpsize - count; + assert (to >= from); + + if (from != to) + { + // Copy filtered lumps to a temporary buffer. + BYTE *filteredlumps = new BYTE[count]; + memcpy(filteredlumps, from, count); + + // Shift lumps left to make room for the filtered ones at the end. + memmove(from, (BYTE *)from + count, (NumLumps - end) * lumpsize); + + // Copy temporary buffer to newly freed space. + memcpy(to, filteredlumps, count); + + delete[] filteredlumps; + } + } + return end - start; +} + +//========================================================================== +// +// FResourceFile :: JunkLeftoverFilters +// +// Deletes any lumps beginning with "filter/" that were not matched. +// +//========================================================================== + +void FResourceFile::JunkLeftoverFilters(void *lumps, size_t lumpsize, DWORD max) +{ + DWORD start, end; + if (FindPrefixRange("filter/", lumps, lumpsize, max, start, end)) + { + // Since the resource lumps may contain non-POD data besides the + // full name, we "delete" them by erasing their names so they + // can't be found. + void *stop = (BYTE *)lumps + end * lumpsize; + for (void *p = (BYTE *)lumps + start * lumpsize; p < stop; p = (BYTE *)p + lumpsize) + { + FResourceLump *lump = (FResourceLump *)p; + lump->FullName = 0; + lump->Name[0] = '\0'; + lump->Namespace = ns_invalid; + } + } +} + +//========================================================================== +// +// FResourceFile :: FindPrefixRange +// +// Finds a range of lumps that start with the prefix string. is left +// indicating the first matching one. is left at one plus the last +// matching one. +// +//========================================================================== + +bool FResourceFile::FindPrefixRange(FString filter, void *lumps, size_t lumpsize, DWORD maxlump, DWORD &start, DWORD &end) +{ + DWORD min, max, mid, inside; + FResourceLump *lump; + int cmp; + + // Pretend that our range starts at 1 instead of 0 so that we can avoid + // unsigned overflow if the range starts at the first lump. + lumps = (BYTE *)lumps - lumpsize; + + // Binary search to find any match at all. + min = 1, max = maxlump; + while (min <= max) + { + mid = min + (max - min) / 2; + lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize); + cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len()); + if (cmp == 0) + break; + else if (cmp < 0) + min = mid + 1; + else + max = mid - 1; + } + if (max < min) + { // matched nothing + return false; + } + + // Binary search to find first match. + inside = mid; + min = 1, max = mid; + while (min <= max) + { + mid = min + (max - min) / 2; + lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize); + cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len()); + // Go left on matches and right on misses. + if (cmp == 0) + max = mid - 1; + else + min = mid + 1; + } + start = mid + (cmp != 0) - 1; + + // Binary search to find last match. + min = inside, max = maxlump; + while (min <= max) + { + mid = min + (max - min) / 2; + lump = (FResourceLump *)((BYTE *)lumps + mid * lumpsize); + cmp = lump->FullName.CompareNoCase(filter, (int)filter.Len()); + // Go right on matches and left on misses. + if (cmp == 0) + min = mid + 1; + else + max = mid - 1; + } + end = mid - (cmp != 0); + return true; } //========================================================================== diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index 8fd7366ef..9927b1eae 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -65,9 +65,16 @@ protected: FResourceFile(const char *filename, FileReader *r); + // for archives that can contain directories + void PostProcessArchive(void *lumps, size_t lumpsize); + private: DWORD FirstLump; + int FilterLumps(FString filtername, void *lumps, size_t lumpsize, DWORD max); + bool FindPrefixRange(FString filter, void *lumps, size_t lumpsize, DWORD max, DWORD &start, DWORD &end); + void JunkLeftoverFilters(void *lumps, size_t lumpsize, DWORD max); + public: static FResourceFile *OpenResourceFile(const char *filename, FileReader *file, bool quiet = false); static FResourceFile *OpenDirectory(const char *filename, bool quiet = false); @@ -76,7 +83,6 @@ public: DWORD LumpCount() const { return NumLumps; } DWORD GetFirstLump() const { return FirstLump; } void SetFirstLump(DWORD f) { FirstLump = f; } - void PostProcessArchive(void *lumps, size_t lumpsize); // for archives that can contain directories virtual void FindStrifeTeaserVoices (); virtual bool Open(bool quiet) = 0; diff --git a/src/w_wad.cpp b/src/w_wad.cpp index ccb851a0b..4d0b51623 100644 --- a/src/w_wad.cpp +++ b/src/w_wad.cpp @@ -1571,3 +1571,33 @@ static void PrintLastError () Printf (TEXTCOLOR_RED " %s\n", strerror(errno)); } #endif + +#ifdef _DEBUG +//========================================================================== +// +// CCMD LumpNum +// +//========================================================================== + +CCMD(lumpnum) +{ + for (int i = 1; i < argv.argc(); ++i) + { + Printf("%s: %d\n", argv[i], Wads.CheckNumForName(argv[i])); + } +} + +//========================================================================== +// +// CCMD LumpNumFull +// +//========================================================================== + +CCMD(lumpnumfull) +{ + for (int i = 1; i < argv.argc(); ++i) + { + Printf("%s: %d\n", argv[i], Wads.CheckNumForFullName(argv[i])); + } +} +#endif diff --git a/src/w_wad.h b/src/w_wad.h index 4dfe3434d..262a332c6 100644 --- a/src/w_wad.h +++ b/src/w_wad.h @@ -52,6 +52,8 @@ struct wadlump_t // [RH] Namespaces from BOOM. typedef enum { + ns_invalid = -1, + ns_global = 0, ns_sprites, ns_flats, From a5e67f7332c7838dbe375ab04daaf8ceb020f2f3 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 3 Apr 2015 22:58:58 -0500 Subject: [PATCH 061/144] Split sndinfo.txt up into multiple files using filter directories. - This means the original need for $ifdoom, $ifheretic, etc directives is no more, but they need to stay for compatibility with third-party wads that use them. --- wadsrc/static/filter/doom/sndinfo.txt | 451 ++++++++ wadsrc/static/filter/heretic/sndinfo.txt | 291 +++++ wadsrc/static/filter/hexen/sndinfo.txt | 190 ++++ wadsrc/static/filter/strife/sndinfo.txt | 314 ++++++ wadsrc/static/sndinfo.txt | 1271 ---------------------- 5 files changed, 1246 insertions(+), 1271 deletions(-) create mode 100644 wadsrc/static/filter/doom/sndinfo.txt create mode 100644 wadsrc/static/filter/heretic/sndinfo.txt create mode 100644 wadsrc/static/filter/hexen/sndinfo.txt create mode 100644 wadsrc/static/filter/strife/sndinfo.txt diff --git a/wadsrc/static/filter/doom/sndinfo.txt b/wadsrc/static/filter/doom/sndinfo.txt new file mode 100644 index 000000000..6028b11f0 --- /dev/null +++ b/wadsrc/static/filter/doom/sndinfo.txt @@ -0,0 +1,451 @@ +/****************************************************************************/ +/* */ +/* DOOM SOUNDS */ +/* */ +/****************************************************************************/ + +// BOOM has pitch shifting equivalent to a range of 4. I never got to hear +// Doom when it used pitch shifting, so I don't know if this is correct or not. +$pitchshiftrange 4 + +// This sound is never actually used. It's just defined here for +// compatibility with DeHackEd patches that reference dsskldth. +misc/unused dsskldth // Sounds just like dsoof + +//=========================================================================== +// +// Doom-specific player sounds +// +//=========================================================================== + +$playersound player male *death dspldeth +$playersound player male *xdeath dspdiehi +$playersound player male *gibbed dsslop +$playersound player male *pain100 dsplpain +$playersounddup player male *pain75 *pain100 +$playersounddup player male *pain50 *pain100 +$playersounddup player male *pain25 *pain100 +$playersound player male *grunt dsoof +$playersounddup player male *land *grunt +$playersound player male *jump dsjump +$playersound player male *fist dspunch +$playersound player male *usefail dsnoway + +$playersound player female *death dsfldeth +$playersound player female *xdeath dsfdiehi +$playersound player female *gibbed dsslop +$playersound player female *pain100 dsflpain +$playersounddup player female *pain75 *pain100 +$playersounddup player female *pain50 *pain100 +$playersounddup player female *pain25 *pain100 +$playersound player female *grunt dsfoof +$playersounddup player female *land *grunt +$playersound player female *jump dsfjump +$playersound player female *fist dspunch +$playersound player female *usefail dsfnoway + +$playersound player other *death dscldeth +$playersound player other *xdeath dscdiehi +$playersound player other *gibbed dsslop +$playersound player other *pain100 dsclpain +$playersounddup player other *pain75 *pain100 +$playersounddup player other *pain50 *pain100 +$playersounddup player other *pain25 *pain100 +$playersound player other *grunt dscoof +$playersounddup player other *land *grunt +$playersound player other *jump dscjump +$playersound player other *fist dspunch +$playersound player other *usefail dscnoway + +// Alternate names for some player sounds needed for ZDoom <= 1.22 compatibility +// +// If any sounds with these names are defined later, they will redefine +// the corresponding player sounds instead. Likewise, if they are played, +// they will play the corresponding player sound instead. + +$playercompat player male *death player/male/death1 +$playercompat player male *death player/male/death2 +$playercompat player male *death player/male/death3 +$playercompat player male *death player/male/death4 +$playercompat player male *xdeath player/male/xdeath1 +$playercompat player male *pain100 player/male/pain100_1 +$playercompat player male *pain100 player/male/pain100_2 +$playercompat player male *pain75 player/male/pain75_1 +$playercompat player male *pain75 player/male/pain75_2 +$playercompat player male *pain50 player/male/pain50_1 +$playercompat player male *pain50 player/male/pain50_2 +$playercompat player male *pain25 player/male/pain25_1 +$playercompat player male *pain25 player/male/pain25_2 +$playercompat player male *grunt player/male/grunt1 +$playercompat player male *land player/male/land1 +$playercompat player male *jump player/male/jump1 +$playercompat player male *gibbed player/male/gibbed +$playercompat player male *fist player/male/fist + +$playercompat player female *death player/female/death1 +$playercompat player female *death player/female/death2 +$playercompat player female *death player/female/death3 +$playercompat player female *death player/female/death4 +$playercompat player female *xdeath player/female/xdeath1 +$playercompat player female *pain100 player/female/pain100_1 +$playercompat player female *pain100 player/female/pain100_2 +$playercompat player female *pain75 player/female/pain75_1 +$playercompat player female *pain75 player/female/pain75_2 +$playercompat player female *pain50 player/female/pain50_1 +$playercompat player female *pain50 player/female/pain50_2 +$playercompat player female *pain25 player/female/pain25_1 +$playercompat player female *pain25 player/female/pain25_2 +$playercompat player female *grunt player/female/grunt1 +$playercompat player female *land player/female/land1 +$playercompat player female *jump player/female/jump1 +$playercompat player female *gibbed player/female/gibbed +$playercompat player female *fist player/female/fist + +$playercompat player other *death player/cyborg/death1 +$playercompat player other *death player/cyborg/death2 +$playercompat player other *death player/cyborg/death3 +$playercompat player other *death player/cyborg/death4 +$playercompat player other *xdeath player/cyborg/xdeath1 +$playercompat player other *pain100 player/cyborg/pain100_1 +$playercompat player other *pain100 player/cyborg/pain100_2 +$playercompat player other *pain75 player/cyborg/pain75_1 +$playercompat player other *pain75 player/cyborg/pain75_2 +$playercompat player other *pain50 player/cyborg/pain50_1 +$playercompat player other *pain50 player/cyborg/pain50_2 +$playercompat player other *pain25 player/cyborg/pain25_1 +$playercompat player other *pain25 player/cyborg/pain25_2 +$playercompat player other *grunt player/cyborg/grunt1 +$playercompat player other *land player/cyborg/land1 +$playercompat player other *jump player/cyborg/jump1 +$playercompat player other *gibbed player/cyborg/gibbed +$playercompat player other *fist player/cyborg/fist + +// +// Weapons +// + +$pitchshiftrange 3 +weapons/sawup dssawup +weapons/sawidle dssawidl +weapons/sawfull dssawful +weapons/sawhit dssawhit +$pitchshiftrange 4 + +weapons/pistol dspistol +weapons/shotgf dsshotgn +weapons/shotgr dssgcock +weapons/sshotf dsdshtgn +weapons/sshoto dsdbopn +weapons/sshotc dsdbcls +weapons/sshotl dsdbload +weapons/chngun dspistol +weapons/rocklx dsbarexp +weapons/rocklf dsrlaunc +weapons/plasmaf dsplasma +weapons/plasmax dsfirxpl +weapons/bfgf dsbfg +weapons/bfgx dsrxplod +weapons/railgf railgf1 +weapons/grbnce dsbounce +weapons/grenlx dsgrnexp +weapons/grenlf dsglaunc + +// Problem: weapons/rocklx needs to be unlimited but +// is also used for the MAP30 brain explosion. +// This alias remaps to the original but has its own limit +// attached so that it doesn't become too loud. +$alias misc/brainexplode weapons/rocklx +$limit misc/brainexplode 4 + +$limit weapons/plasmaf 0 +$limit weapons/chngun 0 +$limit weapons/rocklf 0 // because normal running is almost as fast as a rocket +$limit weapons/rocklx 0 // and the cyberdemon shoots 3 at once + +//=========================================================================== +// +// MONSTER SOUNDS +// +//=========================================================================== + +misc/gibbed dsslop + +// Zombie man + +$random grunt/sight { grunt/sight1 grunt/sight2 grunt/sight3 } +$random grunt/death { grunt/death1 grunt/death2 grunt/death3 } +grunt/sight1 dsposit1 +grunt/sight2 dsposit2 +grunt/sight3 dsposit3 +grunt/active dsposact +grunt/pain dspopain +grunt/death1 dspodth1 +grunt/death2 dspodth2 +grunt/death3 dspodth3 +grunt/attack dspistol + +// Shotgun guy + +$random shotguy/sight { shotguy/sight1 shotguy/sight2 shotguy/sight3 } +$random shotguy/death { shotguy/death1 shotguy/death2 shotguy/death3 } +shotguy/sight1 dsposit1 +shotguy/sight2 dsposit2 +shotguy/sight3 dsposit3 +shotguy/active dsposact +shotguy/pain dspopain +shotguy/death1 dspodth1 +shotguy/death2 dspodth2 +shotguy/death3 dspodth3 +shotguy/attack dsshotgn + +// Archvile + +vile/sight dsvilsit +vile/active dsvilact +vile/pain dsvipain +vile/death dsvildth +vile/raise dsslop +vile/start dsvilatk +vile/stop dsbarexp +vile/firestrt dsflamst +vile/firecrkl dsflame + +// Revenant + +skeleton/sight dsskesit +skeleton/active dsskeact +skeleton/pain dspopain +skeleton/melee dsskepch +skeleton/swing dsskeswg +skeleton/death dsskedth +skeleton/attack dsskeatk +skeleton/tracex dsbarexp + +// Fatso + +fatso/sight dsmansit +fatso/active dsposact +fatso/pain dsmnpain +fatso/raiseguns dsmanatk +fatso/death dsmandth +fatso/attack dsfirsht +fatso/shotx dsfirxpl + +// Chainguy + +$random chainguy/sight { chainguy/sight1 chainguy/sight2 chainguy/sight3 } +$random chainguy/death { chainguy/death1 chainguy/death2 chainguy/death3 } +chainguy/sight1 dsposit1 +chainguy/sight2 dsposit2 +chainguy/sight3 dsposit3 +chainguy/active dsposact +chainguy/pain dspopain +chainguy/death1 dspodth1 +chainguy/death2 dspodth2 +chainguy/death3 dspodth3 +chainguy/attack dsshotgn +$limit chainguy/attack 0 + +// Imp + +$random imp/sight { imp/sight1 imp/sight2 } +$random imp/death { imp/death1 imp/death2 } +imp/sight1 dsbgsit1 +imp/sight2 dsbgsit2 +imp/active dsbgact +imp/pain dspopain +imp/melee dsclaw +imp/death1 dsbgdth1 +imp/death2 dsbgdth2 +imp/attack dsfirsht +imp/shotx dsfirxpl +$limit imp/active 6 + +// Demon + +demon/sight dssgtsit +demon/active dsdmact +demon/pain dsdmpain +demon/melee dssgtatk +demon/death dssgtdth +$limit demon/melee 4 + +// Spectre + +spectre/sight dssgtsit +spectre/active dsdmact +spectre/pain dsdmpain +spectre/melee dssgtatk +spectre/death dssgtdth + +// Cacodemon + +caco/sight dscacsit +caco/active dsdmact +caco/pain dsdmpain +caco/death dscacdth +caco/attack dsfirsht +caco/shotx dsfirxpl + +// Baron of Hell + +baron/sight dsbrssit +baron/active dsdmact +baron/pain dsdmpain +baron/melee dsclaw +baron/death dsbrsdth +baron/attack dsfirsht +baron/shotx dsfirxpl + +// Hell Knight + +knight/sight dskntsit +knight/active dsdmact +knight/pain dsdmpain +knight/death dskntdth + +// Lost Soul + +skull/active dsdmact +skull/pain dsdmpain +skull/melee dssklatk +skull/death dsfirxpl + +// Spider Mastermind + +spider/sight dsspisit +spider/active dsdmact +spider/pain dsdmpain +spider/attack dsshotgn +spider/death dsspidth +spider/walk dsmetal + +// Arachnotron + +baby/sight dsbspsit +baby/active dsbspact +baby/pain dsdmpain +baby/death dsbspdth +baby/walk dsbspwlk +baby/attack dsplasma +baby/shotx dsfirxpl + +$limit baby/attack 0 + +// Cyber Demon + +cyber/sight dscybsit +cyber/active dsdmact +cyber/pain dsdmpain +cyber/death dscybdth +cyber/hoof dshoof + +// Pain Elemental + +pain/sight dspesit +pain/active dsdmact +pain/pain dspepain +pain/death dspedth + +// Wolfenstein SS + +wolfss/sight dssssit +wolfss/active dsposact +wolfss/pain dspopain +wolfss/death dsssdth +wolfss/attack dsshotgn + +// Commander Keen + +keen/pain dskeenpn +keen/death dskeendt + +// Boss Brain + +brain/sight dsbossit +brain/pain dsbospn +brain/death dsbosdth +brain/spit dsbospit +brain/cube dsboscub +brain/cubeboom dsfirxpl +$alias brain/spawn misc/teleport + + +//============================================================================ +// +// WORLD SOUNDS +// +//=========================================================================== + +world/barrelx dsbarexp + +world/drip dsempty +world/watersplash dsempty +world/sludgegloop dsempty +world/lavasizzle dsempty + +// +// +// Platform Sounds +// + +plats/pt1_strt dspstart +plats/pt1_stop dspstop +plats/pt1_mid dsstnmov + +// +// Door Sounds +// + +doors/dr1_open dsdoropn +doors/dr1_clos dsdorcls +doors/dr2_open dsbdopn +doors/dr2_clos dsbdcls + +//=========================================================================== +// +// MISCELLANEOUS SOUNDS +// +//=========================================================================== + +misc/secret dssecret +misc/w_pkup dswpnup // Pickup weapon +misc/p_pkup dsgetpow // Pickup powerup +misc/i_pkup dsitemup // Pickup item +misc/k_pkup dsitemup // Pickup key +misc/spawn dsitmbk // Item respawn +misc/chat dsradio // Doom 2 chat sound +misc/chat2 dstink // Chat sound for everything else + +$limit misc/i_pkup 1 +$limit misc/k_pkup 1 +$limit misc/w_pkup 1 +$limit misc/p_pkup 1 +$pitchshift misc/i_pkup 0 +$pitchshift misc/k_pkup 0 +$pitchshift misc/chat2 0 + +switches/normbutn dsswtchn +switches/exitbutn dsswtchx + +misc/teleport dstelept + +menu/activate dsswtchn // Activate a new menu +menu/backup dsswtchn // Backup to previous menu +menu/prompt dsswtchn // Activate a prompt "menu" +menu/cursor dspstop // Move cursor up/down +menu/change dsstnmov // Select new value for option +menu/invalid dsoof // Menu not available +menu/dismiss dsswtchx // Dismiss a prompt message +menu/choose dspistol // Choose a menu item +menu/clear dsswtchx // Close top menu + +$random menu/quit1 { player/male/death1 demon/pain grunt/pain misc/gibbed misc/teleport grunt/sight1 grunt/sight3 demon/melee } +$random menu/quit2 { vile/active misc/p_pkup brain/cube misc/gibbed skeleton/swing knight/death baby/active demon/melee } + +$alias intermission/tick weapons/pistol +$alias intermission/cooptotal *death +$alias intermission/nextstage weapons/rocklx +$alias intermission/paststats weapons/shotgr +$alias intermission/pastcoopstats weapons/shotgr +$alias intermission/pastdmstats *gibbed diff --git a/wadsrc/static/filter/heretic/sndinfo.txt b/wadsrc/static/filter/heretic/sndinfo.txt new file mode 100644 index 000000000..cb3fe1e73 --- /dev/null +++ b/wadsrc/static/filter/heretic/sndinfo.txt @@ -0,0 +1,291 @@ +/****************************************************************************/ +/* */ +/* HERETIC SOUNDS */ +/* */ +/****************************************************************************/ + +$rolloff * custom 0 1600 + +$pitchshiftrange 2 + +$playersound player male *wimpydeath plrwdth +$playersound player male *death plrdth +$playersound player male *crazydeath plrcdth +$playersound player male *gibbed gibdth +$playersound player male *pain100 plrpai +$playersounddup player male *pain75 *pain100 +$playersounddup player male *pain50 *pain100 +$playersounddup player male *pain25 *pain100 +$playersound player male *weaponlaugh wpnup +$playersounddup player male *evillaugh *weaponlaugh +$playersound player male *grunt plroof +$playersounddup player male *usefail *grunt +$playersounddup player male *land *grunt +$playersound player male *jump plrjmp +$playersound player male *burndeath hedat1 + +$playeralias chicken male *usefail chicken/peck +$PlayerAlias Chicken Male *Grunt chicken/pain +$PlayerAlias Chicken Male *Land chicken/pain +$PlayerAlias Chicken Male *Jump chicken/active +$PlayerAlias Chicken Male *EvilLaugh chicken/active + +chicken/sight chicpai +chicken/pain chicpai +chicken/death chicdth +chicken/attack chicatk + +misc/burn hedat1 + +weapons/staffhit stfhit +weapons/staffpowerhit stfpow +weapons/staffcrackle stfcrk +weapons/wandhit gldhit +weapons/bowshoot bowsht +weapons/bowhit hrnhit +weapons/gauntletsactivate gntact +weapons/gauntletsuse gntuse +weapons/gauntletson gntful +weapons/gauntletshit gnthit +weapons/gauntletspowhit gntpow +weapons/maceshoot lobsht +weapons/macebounce bounce +weapons/macehit lobhit +weapons/macestop pstop +weapons/maceexplode phohit +weapons/blasterhit blshit +weapons/blasterpowhit hrnhit +weapons/blastershoot blssht +weapons/hornrodshoot hrnsht +weapons/hornrodhit hrnhit +weapons/hornrodpowshoot hrnpow +weapons/hornrodpowhit ramphit +weapons/phoenixshoot phosht +weapons/phoenixhit phohit +weapons/phoenixpowshoot phopow + +$limit weapons/gauntletson 0 +$limit weapons/gauntletshit 0 +$limit weapons/gauntletspowhit 0 +$limit weapons/gauntletsactivate 0 +$limit weapons/gauntletsuse 0 +$limit weapons/maceexplode 0 +$limit weapons/phoenixhit 0 +$limit weapons/phoenixpowshoot 1 + +// [RH] Heretic didn't have these limitless, but they can sound bad if they're not +$limit weapons/bowhit 0 +$limit weapons/hornrodshoot 0 +$limit weapons/hornrodhit 0 +$limit weapons/maceshoot 0 + +himp/sight impsit +himp/attack impat1 +himp/pain imppai +himp/death impdth +himp/active impsit +himp/leaderattack impat2 + +misc/invuse artiuse + +$limit misc/invuse 1 + +world/podexplode podexp +world/podgrow newpod +world/wind wind +world/waterfall waterfl + +$limit world/podexplode 0 +$limit world/podgrow 0 +$limit world/wind 1 + +misc/i_pkup itemup +misc/k_pkup keyup +misc/p_pkup artiup +$alias misc/w_pkup *weaponlaugh + +misc/rain ramrain +misc/spawn respawn + +$limit misc/spawn 1 + +// +// Minotaur sounds +// + +minotaur/sight minsit +minotaur/melee stfpow +minotaur/attack1 minat1 +minotaur/attack2 minat2 +minotaur/attack3 minat3 +minotaur/pain minpai +minotaur/death mindth +minotaur/active minact +minotaur/fx2hit phohit +minotaur/fx3hit phohit + +// +// Wizard sounds +// + +wizard/sight wizsit +wizard/attack wizatk +wizard/death wizdth +wizard/pain wizpai +wizard/active1 wizact +$random wizard/active { wizard/sight wizard/active1 } + +// +// Switch sounds +// + +switches/normbutn switch +$alias switches/exitbutn switches/normbutn // Heretic has no special exit button sound + +// +// +// Platform Sounds +// + +plats/pt1_strt pstart +plats/pt1_stop pstop +plats/pt1_mid dormov + +// +// Door Sounds +// + +doors/dr1_open doropn +doors/dr1_clos dorcls +doors/dr2_open doropn +doors/dr2_clos dorcls + +// +// Ambient sounds +// + +world/amb1 amb1 +world/amb2 amb2 +world/amb3 amb3 +world/amb4 amb4 +world/amb5 amb5 +world/amb6 amb6 +world/amb7 amb7 +world/amb8 amb8 +world/amb9 amb9 +world/amb10 amb10 +world/amb11 amb11 +world/amb12 bstsit + +$limit world/amb1 1 +$limit world/amb2 1 +$limit world/amb3 1 +$limit world/amb4 1 +$limit world/amb5 1 +$limit world/amb6 1 +$limit world/amb7 1 +$limit world/amb8 1 +$limit world/amb9 1 +$limit world/amb10 1 +$limit world/amb11 0 + +misc/chat chat +misc/teleport telept +misc/ripslop ripslop + +$limit misc/chat 1 + +world/drip gloop +world/watersplash gloop +world/lavasizzle burn +world/sludgegloop dsempty + +mummy/sight mumsit +mummy/attack1 mumat1 +mummy/attack2 mumat2 +mummy/pain mumpai +mummy/death mumdth +mummy/active mumsit +mummy/head mumhed + +beast/sight bstsit +beast/attack bstatk +beast/pain bstpai +beast/death bstdth +beast/active bstact + +snake/attack snkatk +snake/sight snksit +snake/pain snkpai +snake/death snkdth +snake/active snkact + +clink/sight clksit +clink/attack clkatk +clink/pain clkpai +clink/death clkdth +clink/active clkact + +hknight/sight kgtsit +hknight/attack kgtatk +hknight/melee kgtat2 +hknight/pain kgtpai +hknight/death kgtdth +hknight/active kgtsit +hknight/hit hrnhit +hknight/axewhoosh kgtatk + +misc/timebomb phohit +world/volcano/blast lobhit +world/volcano/shoot bstatk + +ironlich/sight hedsit +ironlich/attack1 hedat1 +ironlich/attack2 hedat2 +ironlich/attack3 hedat3 +ironlich/pain hedpai +ironlich/death heddth +ironlich/active hedact + +dsparilserpent/sight bstsit +dsparilserpent/attack bstatk +dsparilserpent/pain sbtpai +dsparilserpent/death sbtdth +dsparilserpent/active sbtact + +dsparil/sight sorsit +dsparil/attack soratk +dsparil/pain sorpai +dsparil/active soract +dsparil/rise sorrise +dsparil/zap sorzap +dsparil/scream sordsph +dsparil/explode sordexp +dsparil/bones sordbon + +chicken/active chicact +chicken/attack chicatk +chicken/pain chicpai +chicken/death chicdth +chicken/peck1 chicpk1 +chicken/peck2 chicpk2 +chicken/peck3 chicpk3 +$random chicken/peck { chicken/peck1 chicken/peck2 chicken/peck3 } + +menu/activate dorcls +menu/backup switch +menu/prompt chat +menu/choose dorcls +menu/cursor switch +menu/change keyup +menu/invalid plroof +menu/dismiss dorcls +menu/clear dorcls + +misc/secret dssecret + +$alias intermission/cooptotal *death +$alias intermission/nextstage doors/dr1_clos +$alias intermission/paststats plats/pt1_stop +$alias intermission/pastcoopstats plats/pt1_stop +$alias intermission/pastdmstats *gibbed diff --git a/wadsrc/static/filter/hexen/sndinfo.txt b/wadsrc/static/filter/hexen/sndinfo.txt new file mode 100644 index 000000000..85d7a75dd --- /dev/null +++ b/wadsrc/static/filter/hexen/sndinfo.txt @@ -0,0 +1,190 @@ +/****************************************************************************/ +/* */ +/* HEXEN SOUNDS */ +/* */ +/****************************************************************************/ + +$rolloff * custom 0 2025 + +$pitchshiftrange 3 + +$random PlayerFighterExtremeDeathPicker { PlayerFighterExtreme1Death + PlayerFighterExtreme2Death + PlayerFighterExtreme3Death } + +$playeralias fighter male *death PlayerFighterNormalDeath +$playeralias fighter male *crazydeath PlayerFighterCrazyDeath +$playeralias fighter male *burndeath PlayerFighterBurnDeath +$playeralias fighter male *xdeath PlayerFighterExtremeDeathPicker +$playeralias fighter male *pain100 PlayerFighterPain +$playersounddup fighter male *pain75 *pain100 +$playersounddup fighter male *pain50 *pain100 +$playersounddup fighter male *pain25 *pain100 +$playeralias fighter male *grunt PlayerFighterGrunt +$playeralias fighter male *land PlayerLand +$playeralias fighter male *poison PlayerPoisonCough +$playeralias fighter male *falling PlayerFighterFallingScream +$playeralias fighter male *splat PlayerFallingSplat +$playeralias fighter male *usefail PlayerFighterFailedUse +$playeralias fighter male *puzzfail PuzzleFailFighter +$playersound fighter male *jump fgtjump +$playeralias fighter male *fistgrunt FighterGrunt + +$random PlayerClericExtremeDeathPicker { PlayerClericExtreme1Death + PlayerClericExtreme2Death + PlayerClericExtreme3Death } + +$playeralias cleric male *death PlayerClericNormalDeath +$playeralias cleric male *crazydeath PlayerClericCrazyDeath +$playeralias cleric male *burndeath PlayerClericBurnDeath +$playeralias cleric male *xdeath PlayerClericExtremeDeathPicker +$playeralias cleric male *pain100 PlayerClericPain +$playersounddup cleric male *pain75 *pain100 +$playersounddup cleric male *pain50 *pain100 +$playersounddup cleric male *pain25 *pain100 +$playeralias cleric male *grunt PlayerClericGrunt +$playeralias cleric male *land PlayerLand +$playeralias cleric male *poison PlayerPoisonCough +$playeralias cleric male *falling PlayerClericFallingScream +$playeralias cleric male *splat PlayerFallingSplat +$playeralias cleric male *usefail PlayerClericFailedUse +$playeralias cleric male *puzzfail PuzzleFailCleric +$playersound cleric male *jump plrjump + +$random PlayerMageExtremeDeathPicker { PlayerMageExtreme1Death + PlayerMageExtreme2Death + PlayerMageExtreme3Death } + +$playeralias mage male *death PlayerMageNormalDeath +$playeralias mage male *crazydeath PlayerMageCrazyDeath +$playeralias mage male *burndeath PlayerMageBurnDeath +$playeralias mage male *xdeath PlayerMageExtremeDeathPicker +$playeralias mage male *pain100 PlayerMagePain +$playersounddup mage male *pain75 *pain100 +$playersounddup mage male *pain50 *pain100 +$playersounddup mage male *pain25 *pain100 +$playeralias mage male *grunt PlayerMageGrunt +$playeralias mage male *land PlayerLand +$playeralias mage male *poison PlayerPoisonCough +$playeralias mage male *falling PlayerMageFallingScream +$playeralias mage male *splat PlayerFallingSplat +$playeralias mage male *usefail PlayerMageFailedUse +$playeralias mage male *puzzfail PuzzleFailMage +$playersound mage male *jump mgjump + +$playeralias pig male *usefail PigActive1 +$playeralias pig male *puzzfail PigActive2 +$playeralias pig male *grunt PigActive1 +$playeralias pig male *land PigActive2 +$playeralias pig male *jump PigActive1 +$playeralias pig male *poison PigActive2 +$playeralias pig male *falling PigPain +$playeralias pig male *splat PigDeath + +$alias world/drip Ambient10 +$alias world/watersplash WaterSplash +$alias world/lavasizzle LavaSizzle +$alias world/sludgegloop SludgeGloop +$alias world/wind Wind +$alias world/quake Earthquake +$alias world/thunder ThunderCrash + +$alias misc/w_pkup PickupWeapon +$alias misc/p_pkup PickupArtifact +$alias misc/k_pkup PickupKey +$alias misc/i_pkup PickupItem +$alias misc/spawn Respawn +$alias misc/teleport Teleport +$alias misc/keytry DoorLocked +$alias misc/invuse UseArtifact +$alias misc/freeze FreezeDeath +$alias misc/icebreak FreezeShatter + +$alias misc/chat Chat +$alias misc/chat2 Chat + +$alias misc/fallingsplat PlayerFallingSplat + +$alias minotaur/sight MaulatorSight +$alias minotaur/pain MaulatorPain +$alias minotaur/death MaulatorDeath +$alias minotaur/active MaulatorActive +$alias minotaur/attack1 MaulatorHamHit +$alias minotaur/attack2 MaulatorHamSwing + +$random BishopActiveSounds { BishopActive BishopSight } +$random PigActive { PigActive1 PigActive2 } + +$limit PlayerFighterFailedUse 1 +$limit PlayerClericFailedUse 1 +$limit PlayerMageFailedUse 1 +$limit SorcererBallWoosh 4 +$limit SorcererBallBounce 3 +$limit SorcererBallExplode 3 +$limit SorcererBallPop 3 +$limit SorcererBigBallExplode 3 +$limit Ambient1 1 +$limit Ambient2 1 +$limit Ambient3 1 +$limit Ambient4 1 +$limit Ambient5 1 +$limit Ambient6 1 +$limit Ambient7 1 +$limit Ambient8 1 +$limit Ambient9 1 +$limit Ambient10 1 +$limit Ambient11 1 +$limit Ambient12 1 +$limit Ambient13 1 +$limit Ambient14 1 +$limit Ambient15 1 +$limit MysticIncant 4 + +$pitchshift PlayerMageNormalDeath 0 +$pitchshift PlayerMageCrazyDeath 0 +$pitchshift PlayerMageExtreme1Death 0 +$pitchshift PlayerMageExtreme2Death 0 +$pitchshift PlayerMageExtreme3Death 0 +$pitchshift PlayerMageBurnDeath 0 +$pitchshift PlayerMagePain 0 +$pitchshift PlayerMageGrunt 0 +$pitchshift PlayerMageFallingScream 0 +$pitchshift PlayerMageFailedUse 0 +$pitchshift PickupWeapon 0 +$pitchshift PickupPiece 0 +$pitchshift WeaponBuild 0 +$pitchshift BellRing 0 + +$alias menu/activate DoorCloseLight +$alias menu/backup PickupKey +$alias menu/prompt Chat +$alias menu/cursor FighterHammerHitWall +$alias menu/change PickupKey +$alias menu/invalid DoorCloseMetal // Hexen does not use this, but I do +$alias menu/dismiss PlatformStop +$alias menu/choose DoorCloseLight +$alias menu/clear PlatformStop + +// Hexen does not have ripslop sound like Heretic +misc/ripslop dsempty +misc/netnotch blddrp1 + +$alias intermission/cooptotal *death +$alias intermission/nextstage DoorCloseLight +$alias intermission/paststats PlatformStop +$alias intermission/pastcoopstats PlatformStop +$alias intermission/pastdmstats *gibbed + +$limit DoorCloseLight 4 + +$limit PuppyBeat 0 +$limit CeantaurPain 0 +$limit BishopPain 0 +$limit SerpentPain 0 +$limit DemonPain 0 +$limit WraithPain 0 +$limit MaulatorPain 0 +$limit EttinPain 0 +$limit FireDemonPain 0 +$limit SorcererPain 0 +$limit DragonPain 0 diff --git a/wadsrc/static/filter/strife/sndinfo.txt b/wadsrc/static/filter/strife/sndinfo.txt new file mode 100644 index 000000000..877bba50a --- /dev/null +++ b/wadsrc/static/filter/strife/sndinfo.txt @@ -0,0 +1,314 @@ +/****************************************************************************/ +/* */ +/* STRIFE SOUNDS */ +/* */ +/****************************************************************************/ + +$rolloff * 200 1200 + +$playersound player male *death dspldeth +$playersound player male *xdeath dspdiehi +$playersound player male *gibbed dsslop +$playersound player male *pain100 dsplpain +$playersounddup player male *pain75 *pain100 +$playersounddup player male *pain50 *pain100 +$playersounddup player male *pain25 *pain100 +$playersound player male *grunt dsoof +$playersounddup player male *land *grunt +$playersound player male *jump dsjump +$playersound player male *fist dspunch +$playersound player male *usefail dsnoway + +$playersound player female *death dsfldeth +$playersound player female *xdeath dsfdiehi +$playersound player female *gibbed dsslop +$playersound player female *pain100 dsflpain +$playersounddup player female *pain75 *pain100 +$playersounddup player female *pain50 *pain100 +$playersounddup player female *pain25 *pain100 +$playersound player female *grunt dsfoof +$playersounddup player female *land *grunt +$playersound player female *jump dsfjump +$playersound player female *fist dspunch +$playersound player female *usefail dsfnoway + +$playersound player other *death dscldeth +$playersound player other *xdeath dscdiehi +$playersound player other *gibbed dsslop +$playersound player other *pain100 dsclpain +$playersounddup player other *pain75 *pain100 +$playersounddup player other *pain50 *pain100 +$playersounddup player other *pain25 *pain100 +$playersound player other *grunt dscoof +$playersounddup player other *land *grunt +$playersound player other *jump dscjump +$playersound player other *fist dspunch +$playersound player other *usefail dscnoway + +weapons/xbowshoot dsxbow +weapons/xbowhit dsfirxpl +weapons/assaultgun dsrifle +weapons/minimissile dsrlaunc +weapons/minimissilehit dsmislht +weapons/flamethrower dsflburn +weapons/flameidle dsflidl +weapons/mauler1 dspgrdat +weapons/mauler2charge dsproton +weapons/mauler2fire dsprotfl +weapons/mauler2hit dsexplod +weapons/hegrenadeshoot dsphoot +weapons/hegrenadebang dsexplod +weapons/phgrenadeshoot dsphoot +weapons/phgrenadebang dsexplod +weapons/sigil dssigil +weapons/sigilhit dssglhit +weapons/sigilcharge dssiglup + +monsters/rifle dsrifle + +switches/normbutn dsswtchn +$alias switches/exitbutn switches/normbutn +switches/chain dspulchn +switches/knob dsswknob +switches/keycard dskeycrd +switches/stone dsswston +switches/bolt dsswbolt +switches/boltback dsempty +switches/scanner dsswscan +switches/fool dsdifool +switches/valve dsvalve +switches/sizzle dsfirxpl + +world/glassbreak dsbglass +world/barrelx dsbarexp +world/smallfire dssmfire +world/largefire dslgfire +world/river dswriver +world/waterfall dswfall +world/waterdrip dswdrip +world/watersplash dswsplsh + +$limit world/river 1 +$limit world/waterfall 1 +$limit world/waterdrip 1 + +world/drip dsempty // These four satisfy the Heretic/Hexen terrain definitions +world/sludgegloop dsempty +world/lavasizzle dsempty +world/lavasizzle dsempty + +menu/activate dsswtchn // Activate a new menu +menu/backup dsswtchn // Backup to previous menu +menu/prompt dsswtchn // Activate a prompt "menu" +menu/cursor dspstop // Move cursor up/down +menu/change dsstnmov // Select new value for option +menu/invalid dsoof // Menu not available +menu/dismiss dsswish // Dismiss a prompt message +menu/choose dsrifl // Choose a menu item +menu/clear dsmtalht // Close top menu + +misc/startupdone dspsdtha +misc/teleport dstelept +misc/swish dsswish +misc/meathit dsmeatht +misc/metalhit dsmtalht +misc/pcrush dspcrush +misc/gibbed dsslop +misc/explosion dsexplod +misc/reactor dsreactr +misc/missileinflight dsrflite +misc/static dsstatic +misc/chant dschant +misc/alarm dsalarm +misc/disruptordeath dsdsrptr +$singular misc/alarm + +misc/secret dsyeah +misc/w_pkup dswpnup +misc/p_pkup dsyeah +misc/i_pkup dsitemup +misc/k_pkup dsitemup +misc/spawn dsitmbk +misc/chat dsradio +misc/invuse dsitemup +misc/mask dsmask + +plats/pt1_strt dspstart +plats/pt1_stop dspstop +plats/pt1_mid dsstnmov + +doors/dr2_open dsbdopn +doors/dr2_clos dsbdcls + +doors/stone_open dsdrston +doors/stone_close dsdrston + +doors/large_metal_open dsdrlmto +doors/large_metal_close dsdrlmtc + +doors/small_metal_open dsdrsmto +doors/small_metal_close dsdrsmtc + +doors/large_wood_open dsdrlwud +doors/large_wood_close dsdrlwud + +doors/small_wood_open dsdrswud +doors/small_wood_close dsdrswud + +doors/airlock_open dsairlck +doors/airlock_close dsairlck + +doors/chain_open dsdrchno +doors/chain_close dsdrchnc + +woodenbarrel/death dswbrldt + +human/imonfire dsburnme + +ambient/alien1 dsamaln1 +ambient/alien2 dsamaln2 +ambient/alien3 dsamaln3 +ambient/alien4 dsamaln4 +ambient/alien5 dsamaln5 +ambient/alien6 dsamaln6 + +reaver/sight dsrevsee +reaver/pain dsreavpn +reaver/death dsrevdth +reaver/active dsrevact +reaver/attack dsreavat +reaver/blade dsrevbld + +crusader/sight dsrb2see +crusader/pain dsrb2pn +crusader/death dsrb2dth +crusader/active dsrb2act +crusader/misl dsrlaunc +crusader/mislx dsmislht + +bishop/sight dsrb2see +bishop/pain dsrb2pn +bishop/death dspgrdth +bishop/active dsrb2act +bishop/misl dsrlaunc +bishop/mislx dsmislht + +sentinel/sight dssntsee +sentinel/death dssntdth +sentinel/active dssntact +sentinel/plasma dsplasma + +$random peasant/pain { peasant/pain1 peasant/pain2 peasant/pain3 peasant/pain4 } +peasant/pain1 dspespna +peasant/pain2 dspespnb +peasant/pain3 dspespnc +peasant/pain4 dspespnd + +//$random peasant/death { peasant/death1 peasant/death2 peasant/death3 } +$alias peasant/death peasant/death1 +peasant/death1 dspsdtha +peasant/death2 dspsdthb +peasant/death3 dspsdthc + +peasant/sight dsrebact +peasant/attack dsmeatht +peasant/active dsrebact + +beggar/attack dsmeatht +$alias beggar/pain peasant/pain +$alias beggar/death peasant/death + +rebel/sight dswpnup +$alias rebel/pain peasant/pain +rebel/death dsrebdth +rebel/active dsrebact + +barkeep/pain dsambbar +barkeep/active dsambppl +$singular barkeep/pain +$singular barkeep/active + +$alias smith/pain peasant/pain +$alias armorer/pain peasant/pain +$alias medic/pain peasant/pain +$alias zombie/death peasant/death +$alias becoming/death peasant/death +zombie/spawner dstelept + +acolyte/sight dsagrsee +acolyte/pain dsagrdpn +acolyte/death dsagrdth +acolyte/rifle dsrifle +$random acolyte/active { acolyte/active1 acolyte/active2 acolyte/active3 acolyte/active4 } +acolyte/active1 dsagrac1 +acolyte/active2 dsagrac2 +acolyte/active3 dsagrac3 +acolyte/active4 dsagrac4 + +macil/sight dsagrsee +$alias macil/pain peasant/pain +macil/active dsrebact +macil/slop dsslop + +alienspectre/sight dsalnsee +alienspectre/blade dsrevbld +alienspectre/pain dsalnpn +alienspectre/death dsalndth +alienspectre/active dsalnact + +turret/death dsmislht + +ore/explode dsexplod + +rat/sight dsratact +rat/death dsratact +rat/active dsratact +$singular rat/sight + +loremaster/chain dschain +loremaster/swish dsswish +loremaster/sight dslorsee +loremaster/attack dsrevbld +loremaster/pain dslorpn +loremaster/death dsslop +loremaster/active dstend + +stalker/sight dsspisit +stalker/attack dsspdatk +stalker/pain dsspdatk +stalker/death dsspidth +stalker/active dsspisit +stalker/walk dsspdwlk + +templar/sight dspgrsee +templar/pain dspgrdpn +templar/death dspgrdth +templar/active dspgract +templar/shoot dspgrdat + +inquisitor/sight dsinqsee +inquisitor/death dsinqdth +inquisitor/active dsinqact +inquisitor/walk dsinqact +inquisitor/jump dsinqjmp +inquisitor/attack dsphoot +inquisitor/atkexplode dsexplod + +programmer/clank dsmtalht +programmer/attack dsrevbld // Unused? +programmer/pain dsprgpn +programmer/death dsrb2dth +programmer/active dsprogac + +entity/sight dsmnalse +entity/melee dsrevbld +entity/pain dsalnpn +entity/death dsmnaldt +entity/active dsalnact + +$alias intermission/tick weapons/assaultgun +$alias intermission/cooptotal *death +$alias intermission/nextstage misc/explosion +$alias intermission/paststats world/barrelx +$alias intermission/pastcoopstats world/barrelx +$alias intermission/pastdmstats *gibbed diff --git a/wadsrc/static/sndinfo.txt b/wadsrc/static/sndinfo.txt index be2ecd987..562681043 100644 --- a/wadsrc/static/sndinfo.txt +++ b/wadsrc/static/sndinfo.txt @@ -56,1274 +56,3 @@ dog/attack dsdgatk dog/death dsdgdth dog/pain dsdgpain dog/sight dsdgsit - -/****************************************************************************/ -/* */ -/* DOOM SOUNDS */ -/* */ -/****************************************************************************/ - -$ifdoom - - -// BOOM has pitch shifting equivalent to a range of 4. I never got to hear -// Doom when it used pitch shifting, so I don't know if this is correct or not. -$pitchshiftrange 4 - -// This sound is never actually used. It's just defined here for -// compatibility with DeHackEd patches that reference dsskldth. -misc/unused dsskldth // Sounds just like dsoof - -//=========================================================================== -// -// Doom-specific player sounds -// -//=========================================================================== - -$playersound player male *death dspldeth -$playersound player male *xdeath dspdiehi -$playersound player male *gibbed dsslop -$playersound player male *pain100 dsplpain -$playersounddup player male *pain75 *pain100 -$playersounddup player male *pain50 *pain100 -$playersounddup player male *pain25 *pain100 -$playersound player male *grunt dsoof -$playersounddup player male *land *grunt -$playersound player male *jump dsjump -$playersound player male *fist dspunch -$playersound player male *usefail dsnoway - -$playersound player female *death dsfldeth -$playersound player female *xdeath dsfdiehi -$playersound player female *gibbed dsslop -$playersound player female *pain100 dsflpain -$playersounddup player female *pain75 *pain100 -$playersounddup player female *pain50 *pain100 -$playersounddup player female *pain25 *pain100 -$playersound player female *grunt dsfoof -$playersounddup player female *land *grunt -$playersound player female *jump dsfjump -$playersound player female *fist dspunch -$playersound player female *usefail dsfnoway - -$playersound player other *death dscldeth -$playersound player other *xdeath dscdiehi -$playersound player other *gibbed dsslop -$playersound player other *pain100 dsclpain -$playersounddup player other *pain75 *pain100 -$playersounddup player other *pain50 *pain100 -$playersounddup player other *pain25 *pain100 -$playersound player other *grunt dscoof -$playersounddup player other *land *grunt -$playersound player other *jump dscjump -$playersound player other *fist dspunch -$playersound player other *usefail dscnoway - -// Alternate names for some player sounds needed for ZDoom <= 1.22 compatibility -// -// If any sounds with these names are defined later, they will redefine -// the corresponding player sounds instead. Likewise, if they are played, -// they will play the corresponding player sound instead. - -$playercompat player male *death player/male/death1 -$playercompat player male *death player/male/death2 -$playercompat player male *death player/male/death3 -$playercompat player male *death player/male/death4 -$playercompat player male *xdeath player/male/xdeath1 -$playercompat player male *pain100 player/male/pain100_1 -$playercompat player male *pain100 player/male/pain100_2 -$playercompat player male *pain75 player/male/pain75_1 -$playercompat player male *pain75 player/male/pain75_2 -$playercompat player male *pain50 player/male/pain50_1 -$playercompat player male *pain50 player/male/pain50_2 -$playercompat player male *pain25 player/male/pain25_1 -$playercompat player male *pain25 player/male/pain25_2 -$playercompat player male *grunt player/male/grunt1 -$playercompat player male *land player/male/land1 -$playercompat player male *jump player/male/jump1 -$playercompat player male *gibbed player/male/gibbed -$playercompat player male *fist player/male/fist - -$playercompat player female *death player/female/death1 -$playercompat player female *death player/female/death2 -$playercompat player female *death player/female/death3 -$playercompat player female *death player/female/death4 -$playercompat player female *xdeath player/female/xdeath1 -$playercompat player female *pain100 player/female/pain100_1 -$playercompat player female *pain100 player/female/pain100_2 -$playercompat player female *pain75 player/female/pain75_1 -$playercompat player female *pain75 player/female/pain75_2 -$playercompat player female *pain50 player/female/pain50_1 -$playercompat player female *pain50 player/female/pain50_2 -$playercompat player female *pain25 player/female/pain25_1 -$playercompat player female *pain25 player/female/pain25_2 -$playercompat player female *grunt player/female/grunt1 -$playercompat player female *land player/female/land1 -$playercompat player female *jump player/female/jump1 -$playercompat player female *gibbed player/female/gibbed -$playercompat player female *fist player/female/fist - -$playercompat player other *death player/cyborg/death1 -$playercompat player other *death player/cyborg/death2 -$playercompat player other *death player/cyborg/death3 -$playercompat player other *death player/cyborg/death4 -$playercompat player other *xdeath player/cyborg/xdeath1 -$playercompat player other *pain100 player/cyborg/pain100_1 -$playercompat player other *pain100 player/cyborg/pain100_2 -$playercompat player other *pain75 player/cyborg/pain75_1 -$playercompat player other *pain75 player/cyborg/pain75_2 -$playercompat player other *pain50 player/cyborg/pain50_1 -$playercompat player other *pain50 player/cyborg/pain50_2 -$playercompat player other *pain25 player/cyborg/pain25_1 -$playercompat player other *pain25 player/cyborg/pain25_2 -$playercompat player other *grunt player/cyborg/grunt1 -$playercompat player other *land player/cyborg/land1 -$playercompat player other *jump player/cyborg/jump1 -$playercompat player other *gibbed player/cyborg/gibbed -$playercompat player other *fist player/cyborg/fist - -// -// Weapons -// - -$pitchshiftrange 3 -weapons/sawup dssawup -weapons/sawidle dssawidl -weapons/sawfull dssawful -weapons/sawhit dssawhit -$pitchshiftrange 4 - -weapons/pistol dspistol -weapons/shotgf dsshotgn -weapons/shotgr dssgcock -weapons/sshotf dsdshtgn -weapons/sshoto dsdbopn -weapons/sshotc dsdbcls -weapons/sshotl dsdbload -weapons/chngun dspistol -weapons/rocklx dsbarexp -weapons/rocklf dsrlaunc -weapons/plasmaf dsplasma -weapons/plasmax dsfirxpl -weapons/bfgf dsbfg -weapons/bfgx dsrxplod -weapons/railgf railgf1 -weapons/grbnce dsbounce -weapons/grenlx dsgrnexp -weapons/grenlf dsglaunc - -// Problem: weapons/rocklx needs to be unlimited but -// is also used for the MAP30 brain explosion. -// This alias remaps to the original but has its own limit -// attached so that it doesn't become too loud. -$alias misc/brainexplode weapons/rocklx -$limit misc/brainexplode 4 - -$limit weapons/plasmaf 0 -$limit weapons/chngun 0 -$limit weapons/rocklf 0 // because normal running is almost as fast as a rocket -$limit weapons/rocklx 0 // and the cyberdemon shoots 3 at once - -//=========================================================================== -// -// MONSTER SOUNDS -// -//=========================================================================== - -misc/gibbed dsslop - -// Zombie man - -$random grunt/sight { grunt/sight1 grunt/sight2 grunt/sight3 } -$random grunt/death { grunt/death1 grunt/death2 grunt/death3 } -grunt/sight1 dsposit1 -grunt/sight2 dsposit2 -grunt/sight3 dsposit3 -grunt/active dsposact -grunt/pain dspopain -grunt/death1 dspodth1 -grunt/death2 dspodth2 -grunt/death3 dspodth3 -grunt/attack dspistol - -// Shotgun guy - -$random shotguy/sight { shotguy/sight1 shotguy/sight2 shotguy/sight3 } -$random shotguy/death { shotguy/death1 shotguy/death2 shotguy/death3 } -shotguy/sight1 dsposit1 -shotguy/sight2 dsposit2 -shotguy/sight3 dsposit3 -shotguy/active dsposact -shotguy/pain dspopain -shotguy/death1 dspodth1 -shotguy/death2 dspodth2 -shotguy/death3 dspodth3 -shotguy/attack dsshotgn - -// Archvile - -vile/sight dsvilsit -vile/active dsvilact -vile/pain dsvipain -vile/death dsvildth -vile/raise dsslop -vile/start dsvilatk -vile/stop dsbarexp -vile/firestrt dsflamst -vile/firecrkl dsflame - -// Revenant - -skeleton/sight dsskesit -skeleton/active dsskeact -skeleton/pain dspopain -skeleton/melee dsskepch -skeleton/swing dsskeswg -skeleton/death dsskedth -skeleton/attack dsskeatk -skeleton/tracex dsbarexp - -// Fatso - -fatso/sight dsmansit -fatso/active dsposact -fatso/pain dsmnpain -fatso/raiseguns dsmanatk -fatso/death dsmandth -fatso/attack dsfirsht -fatso/shotx dsfirxpl - -// Chainguy - -$random chainguy/sight { chainguy/sight1 chainguy/sight2 chainguy/sight3 } -$random chainguy/death { chainguy/death1 chainguy/death2 chainguy/death3 } -chainguy/sight1 dsposit1 -chainguy/sight2 dsposit2 -chainguy/sight3 dsposit3 -chainguy/active dsposact -chainguy/pain dspopain -chainguy/death1 dspodth1 -chainguy/death2 dspodth2 -chainguy/death3 dspodth3 -chainguy/attack dsshotgn -$limit chainguy/attack 0 - -// Imp - -$random imp/sight { imp/sight1 imp/sight2 } -$random imp/death { imp/death1 imp/death2 } -imp/sight1 dsbgsit1 -imp/sight2 dsbgsit2 -imp/active dsbgact -imp/pain dspopain -imp/melee dsclaw -imp/death1 dsbgdth1 -imp/death2 dsbgdth2 -imp/attack dsfirsht -imp/shotx dsfirxpl -$limit imp/active 6 - -// Demon - -demon/sight dssgtsit -demon/active dsdmact -demon/pain dsdmpain -demon/melee dssgtatk -demon/death dssgtdth -$limit demon/melee 4 - -// Spectre - -spectre/sight dssgtsit -spectre/active dsdmact -spectre/pain dsdmpain -spectre/melee dssgtatk -spectre/death dssgtdth - -// Cacodemon - -caco/sight dscacsit -caco/active dsdmact -caco/pain dsdmpain -caco/death dscacdth -caco/attack dsfirsht -caco/shotx dsfirxpl - -// Baron of Hell - -baron/sight dsbrssit -baron/active dsdmact -baron/pain dsdmpain -baron/melee dsclaw -baron/death dsbrsdth -baron/attack dsfirsht -baron/shotx dsfirxpl - -// Hell Knight - -knight/sight dskntsit -knight/active dsdmact -knight/pain dsdmpain -knight/death dskntdth - -// Lost Soul - -skull/active dsdmact -skull/pain dsdmpain -skull/melee dssklatk -skull/death dsfirxpl - -// Spider Mastermind - -spider/sight dsspisit -spider/active dsdmact -spider/pain dsdmpain -spider/attack dsshotgn -spider/death dsspidth -spider/walk dsmetal - -// Arachnotron - -baby/sight dsbspsit -baby/active dsbspact -baby/pain dsdmpain -baby/death dsbspdth -baby/walk dsbspwlk -baby/attack dsplasma -baby/shotx dsfirxpl - -$limit baby/attack 0 - -// Cyber Demon - -cyber/sight dscybsit -cyber/active dsdmact -cyber/pain dsdmpain -cyber/death dscybdth -cyber/hoof dshoof - -// Pain Elemental - -pain/sight dspesit -pain/active dsdmact -pain/pain dspepain -pain/death dspedth - -// Wolfenstein SS - -wolfss/sight dssssit -wolfss/active dsposact -wolfss/pain dspopain -wolfss/death dsssdth -wolfss/attack dsshotgn - -// Commander Keen - -keen/pain dskeenpn -keen/death dskeendt - -// Boss Brain - -brain/sight dsbossit -brain/pain dsbospn -brain/death dsbosdth -brain/spit dsbospit -brain/cube dsboscub -brain/cubeboom dsfirxpl -$alias brain/spawn misc/teleport - - -//============================================================================ -// -// WORLD SOUNDS -// -//=========================================================================== - -world/barrelx dsbarexp - -world/drip dsempty -world/watersplash dsempty -world/sludgegloop dsempty -world/lavasizzle dsempty - -// -// -// Platform Sounds -// - -plats/pt1_strt dspstart -plats/pt1_stop dspstop -plats/pt1_mid dsstnmov - -// -// Door Sounds -// - -doors/dr1_open dsdoropn -doors/dr1_clos dsdorcls -doors/dr2_open dsbdopn -doors/dr2_clos dsbdcls - -//=========================================================================== -// -// MISCELLANEOUS SOUNDS -// -//=========================================================================== - -misc/secret dssecret -misc/w_pkup dswpnup // Pickup weapon -misc/p_pkup dsgetpow // Pickup powerup -misc/i_pkup dsitemup // Pickup item -misc/k_pkup dsitemup // Pickup key -misc/spawn dsitmbk // Item respawn -misc/chat dsradio // Doom 2 chat sound -misc/chat2 dstink // Chat sound for everything else - -$limit misc/i_pkup 1 -$limit misc/k_pkup 1 -$limit misc/w_pkup 1 -$limit misc/p_pkup 1 -$pitchshift misc/i_pkup 0 -$pitchshift misc/k_pkup 0 -$pitchshift misc/chat2 0 - -switches/normbutn dsswtchn -switches/exitbutn dsswtchx - -misc/teleport dstelept - -menu/activate dsswtchn // Activate a new menu -menu/backup dsswtchn // Backup to previous menu -menu/prompt dsswtchn // Activate a prompt "menu" -menu/cursor dspstop // Move cursor up/down -menu/change dsstnmov // Select new value for option -menu/invalid dsoof // Menu not available -menu/dismiss dsswtchx // Dismiss a prompt message -menu/choose dspistol // Choose a menu item -menu/clear dsswtchx // Close top menu - -$random menu/quit1 { player/male/death1 demon/pain grunt/pain misc/gibbed misc/teleport grunt/sight1 grunt/sight3 demon/melee } -$random menu/quit2 { vile/active misc/p_pkup brain/cube misc/gibbed skeleton/swing knight/death baby/active demon/melee } - -$alias intermission/tick weapons/pistol -$alias intermission/cooptotal *death -$alias intermission/nextstage weapons/rocklx -$alias intermission/paststats weapons/shotgr -$alias intermission/pastcoopstats weapons/shotgr -$alias intermission/pastdmstats *gibbed - - -$endif // ifdoom - - -/****************************************************************************/ -/* */ -/* HERETIC SOUNDS */ -/* */ -/****************************************************************************/ - -$ifheretic - -$rolloff * custom 0 1600 - -$pitchshiftrange 2 - -$playersound player male *wimpydeath plrwdth -$playersound player male *death plrdth -$playersound player male *crazydeath plrcdth -$playersound player male *gibbed gibdth -$playersound player male *pain100 plrpai -$playersounddup player male *pain75 *pain100 -$playersounddup player male *pain50 *pain100 -$playersounddup player male *pain25 *pain100 -$playersound player male *weaponlaugh wpnup -$playersounddup player male *evillaugh *weaponlaugh -$playersound player male *grunt plroof -$playersounddup player male *usefail *grunt -$playersounddup player male *land *grunt -$playersound player male *jump plrjmp -$playersound player male *burndeath hedat1 - -$playeralias chicken male *usefail chicken/peck -$PlayerAlias Chicken Male *Grunt chicken/pain -$PlayerAlias Chicken Male *Land chicken/pain -$PlayerAlias Chicken Male *Jump chicken/active -$PlayerAlias Chicken Male *EvilLaugh chicken/active - -chicken/sight chicpai -chicken/pain chicpai -chicken/death chicdth -chicken/attack chicatk - -misc/burn hedat1 - -weapons/staffhit stfhit -weapons/staffpowerhit stfpow -weapons/staffcrackle stfcrk -weapons/wandhit gldhit -weapons/bowshoot bowsht -weapons/bowhit hrnhit -weapons/gauntletsactivate gntact -weapons/gauntletsuse gntuse -weapons/gauntletson gntful -weapons/gauntletshit gnthit -weapons/gauntletspowhit gntpow -weapons/maceshoot lobsht -weapons/macebounce bounce -weapons/macehit lobhit -weapons/macestop pstop -weapons/maceexplode phohit -weapons/blasterhit blshit -weapons/blasterpowhit hrnhit -weapons/blastershoot blssht -weapons/hornrodshoot hrnsht -weapons/hornrodhit hrnhit -weapons/hornrodpowshoot hrnpow -weapons/hornrodpowhit ramphit -weapons/phoenixshoot phosht -weapons/phoenixhit phohit -weapons/phoenixpowshoot phopow - -$limit weapons/gauntletson 0 -$limit weapons/gauntletshit 0 -$limit weapons/gauntletspowhit 0 -$limit weapons/gauntletsactivate 0 -$limit weapons/gauntletsuse 0 -$limit weapons/maceexplode 0 -$limit weapons/phoenixhit 0 -$limit weapons/phoenixpowshoot 1 - -// [RH] Heretic didn't have these limitless, but they can sound bad if they're not -$limit weapons/bowhit 0 -$limit weapons/hornrodshoot 0 -$limit weapons/hornrodhit 0 -$limit weapons/maceshoot 0 - -himp/sight impsit -himp/attack impat1 -himp/pain imppai -himp/death impdth -himp/active impsit -himp/leaderattack impat2 - -misc/invuse artiuse - -$limit misc/invuse 1 - -world/podexplode podexp -world/podgrow newpod -world/wind wind -world/waterfall waterfl - -$limit world/podexplode 0 -$limit world/podgrow 0 -$limit world/wind 1 - -misc/i_pkup itemup -misc/k_pkup keyup -misc/p_pkup artiup -$alias misc/w_pkup *weaponlaugh - -misc/rain ramrain -misc/spawn respawn - -$limit misc/spawn 1 - -// -// Minotaur sounds -// - -minotaur/sight minsit -minotaur/melee stfpow -minotaur/attack1 minat1 -minotaur/attack2 minat2 -minotaur/attack3 minat3 -minotaur/pain minpai -minotaur/death mindth -minotaur/active minact -minotaur/fx2hit phohit -minotaur/fx3hit phohit - -// -// Wizard sounds -// - -wizard/sight wizsit -wizard/attack wizatk -wizard/death wizdth -wizard/pain wizpai -wizard/active1 wizact -$random wizard/active { wizard/sight wizard/active1 } - -// -// Switch sounds -// - -switches/normbutn switch -$alias switches/exitbutn switches/normbutn // Heretic has no special exit button sound - -// -// -// Platform Sounds -// - -plats/pt1_strt pstart -plats/pt1_stop pstop -plats/pt1_mid dormov - -// -// Door Sounds -// - -doors/dr1_open doropn -doors/dr1_clos dorcls -doors/dr2_open doropn -doors/dr2_clos dorcls - -// -// Ambient sounds -// - -world/amb1 amb1 -world/amb2 amb2 -world/amb3 amb3 -world/amb4 amb4 -world/amb5 amb5 -world/amb6 amb6 -world/amb7 amb7 -world/amb8 amb8 -world/amb9 amb9 -world/amb10 amb10 -world/amb11 amb11 -world/amb12 bstsit - -$limit world/amb1 1 -$limit world/amb2 1 -$limit world/amb3 1 -$limit world/amb4 1 -$limit world/amb5 1 -$limit world/amb6 1 -$limit world/amb7 1 -$limit world/amb8 1 -$limit world/amb9 1 -$limit world/amb10 1 -$limit world/amb11 0 - -misc/chat chat -misc/teleport telept -misc/ripslop ripslop - -$limit misc/chat 1 - -world/drip gloop -world/watersplash gloop -world/lavasizzle burn -world/sludgegloop dsempty - -mummy/sight mumsit -mummy/attack1 mumat1 -mummy/attack2 mumat2 -mummy/pain mumpai -mummy/death mumdth -mummy/active mumsit -mummy/head mumhed - -beast/sight bstsit -beast/attack bstatk -beast/pain bstpai -beast/death bstdth -beast/active bstact - -snake/attack snkatk -snake/sight snksit -snake/pain snkpai -snake/death snkdth -snake/active snkact - -clink/sight clksit -clink/attack clkatk -clink/pain clkpai -clink/death clkdth -clink/active clkact - -hknight/sight kgtsit -hknight/attack kgtatk -hknight/melee kgtat2 -hknight/pain kgtpai -hknight/death kgtdth -hknight/active kgtsit -hknight/hit hrnhit -hknight/axewhoosh kgtatk - -misc/timebomb phohit -world/volcano/blast lobhit -world/volcano/shoot bstatk - -ironlich/sight hedsit -ironlich/attack1 hedat1 -ironlich/attack2 hedat2 -ironlich/attack3 hedat3 -ironlich/pain hedpai -ironlich/death heddth -ironlich/active hedact - -dsparilserpent/sight bstsit -dsparilserpent/attack bstatk -dsparilserpent/pain sbtpai -dsparilserpent/death sbtdth -dsparilserpent/active sbtact - -dsparil/sight sorsit -dsparil/attack soratk -dsparil/pain sorpai -dsparil/active soract -dsparil/rise sorrise -dsparil/zap sorzap -dsparil/scream sordsph -dsparil/explode sordexp -dsparil/bones sordbon - -chicken/active chicact -chicken/attack chicatk -chicken/pain chicpai -chicken/death chicdth -chicken/peck1 chicpk1 -chicken/peck2 chicpk2 -chicken/peck3 chicpk3 -$random chicken/peck { chicken/peck1 chicken/peck2 chicken/peck3 } - -menu/activate dorcls -menu/backup switch -menu/prompt chat -menu/choose dorcls -menu/cursor switch -menu/change keyup -menu/invalid plroof -menu/dismiss dorcls -menu/clear dorcls - -misc/secret dssecret - -$alias intermission/cooptotal *death -$alias intermission/nextstage doors/dr1_clos -$alias intermission/paststats plats/pt1_stop -$alias intermission/pastcoopstats plats/pt1_stop -$alias intermission/pastdmstats *gibbed - - -$endif // ifheretic - - -/****************************************************************************/ -/* */ -/* HEXEN SOUNDS */ -/* */ -/****************************************************************************/ - -$ifhexen - -$rolloff * custom 0 2025 - -$pitchshiftrange 3 - -$random PlayerFighterExtremeDeathPicker { PlayerFighterExtreme1Death - PlayerFighterExtreme2Death - PlayerFighterExtreme3Death } - -$playeralias fighter male *death PlayerFighterNormalDeath -$playeralias fighter male *crazydeath PlayerFighterCrazyDeath -$playeralias fighter male *burndeath PlayerFighterBurnDeath -$playeralias fighter male *xdeath PlayerFighterExtremeDeathPicker -$playeralias fighter male *pain100 PlayerFighterPain -$playersounddup fighter male *pain75 *pain100 -$playersounddup fighter male *pain50 *pain100 -$playersounddup fighter male *pain25 *pain100 -$playeralias fighter male *grunt PlayerFighterGrunt -$playeralias fighter male *land PlayerLand -$playeralias fighter male *poison PlayerPoisonCough -$playeralias fighter male *falling PlayerFighterFallingScream -$playeralias fighter male *splat PlayerFallingSplat -$playeralias fighter male *usefail PlayerFighterFailedUse -$playeralias fighter male *puzzfail PuzzleFailFighter -$playersound fighter male *jump fgtjump -$playeralias fighter male *fistgrunt FighterGrunt - -$random PlayerClericExtremeDeathPicker { PlayerClericExtreme1Death - PlayerClericExtreme2Death - PlayerClericExtreme3Death } - -$playeralias cleric male *death PlayerClericNormalDeath -$playeralias cleric male *crazydeath PlayerClericCrazyDeath -$playeralias cleric male *burndeath PlayerClericBurnDeath -$playeralias cleric male *xdeath PlayerClericExtremeDeathPicker -$playeralias cleric male *pain100 PlayerClericPain -$playersounddup cleric male *pain75 *pain100 -$playersounddup cleric male *pain50 *pain100 -$playersounddup cleric male *pain25 *pain100 -$playeralias cleric male *grunt PlayerClericGrunt -$playeralias cleric male *land PlayerLand -$playeralias cleric male *poison PlayerPoisonCough -$playeralias cleric male *falling PlayerClericFallingScream -$playeralias cleric male *splat PlayerFallingSplat -$playeralias cleric male *usefail PlayerClericFailedUse -$playeralias cleric male *puzzfail PuzzleFailCleric -$playersound cleric male *jump plrjump - -$random PlayerMageExtremeDeathPicker { PlayerMageExtreme1Death - PlayerMageExtreme2Death - PlayerMageExtreme3Death } - -$playeralias mage male *death PlayerMageNormalDeath -$playeralias mage male *crazydeath PlayerMageCrazyDeath -$playeralias mage male *burndeath PlayerMageBurnDeath -$playeralias mage male *xdeath PlayerMageExtremeDeathPicker -$playeralias mage male *pain100 PlayerMagePain -$playersounddup mage male *pain75 *pain100 -$playersounddup mage male *pain50 *pain100 -$playersounddup mage male *pain25 *pain100 -$playeralias mage male *grunt PlayerMageGrunt -$playeralias mage male *land PlayerLand -$playeralias mage male *poison PlayerPoisonCough -$playeralias mage male *falling PlayerMageFallingScream -$playeralias mage male *splat PlayerFallingSplat -$playeralias mage male *usefail PlayerMageFailedUse -$playeralias mage male *puzzfail PuzzleFailMage -$playersound mage male *jump mgjump - -$playeralias pig male *usefail PigActive1 -$playeralias pig male *puzzfail PigActive2 -$playeralias pig male *grunt PigActive1 -$playeralias pig male *land PigActive2 -$playeralias pig male *jump PigActive1 -$playeralias pig male *poison PigActive2 -$playeralias pig male *falling PigPain -$playeralias pig male *splat PigDeath - -$alias world/drip Ambient10 -$alias world/watersplash WaterSplash -$alias world/lavasizzle LavaSizzle -$alias world/sludgegloop SludgeGloop -$alias world/wind Wind -$alias world/quake Earthquake -$alias world/thunder ThunderCrash - -$alias misc/w_pkup PickupWeapon -$alias misc/p_pkup PickupArtifact -$alias misc/k_pkup PickupKey -$alias misc/i_pkup PickupItem -$alias misc/spawn Respawn -$alias misc/teleport Teleport -$alias misc/keytry DoorLocked -$alias misc/invuse UseArtifact -$alias misc/freeze FreezeDeath -$alias misc/icebreak FreezeShatter - -$alias misc/chat Chat -$alias misc/chat2 Chat - -$alias misc/fallingsplat PlayerFallingSplat - -$alias minotaur/sight MaulatorSight -$alias minotaur/pain MaulatorPain -$alias minotaur/death MaulatorDeath -$alias minotaur/active MaulatorActive -$alias minotaur/attack1 MaulatorHamHit -$alias minotaur/attack2 MaulatorHamSwing - -$random BishopActiveSounds { BishopActive BishopSight } -$random PigActive { PigActive1 PigActive2 } - -$limit PlayerFighterFailedUse 1 -$limit PlayerClericFailedUse 1 -$limit PlayerMageFailedUse 1 -$limit SorcererBallWoosh 4 -$limit SorcererBallBounce 3 -$limit SorcererBallExplode 3 -$limit SorcererBallPop 3 -$limit SorcererBigBallExplode 3 -$limit Ambient1 1 -$limit Ambient2 1 -$limit Ambient3 1 -$limit Ambient4 1 -$limit Ambient5 1 -$limit Ambient6 1 -$limit Ambient7 1 -$limit Ambient8 1 -$limit Ambient9 1 -$limit Ambient10 1 -$limit Ambient11 1 -$limit Ambient12 1 -$limit Ambient13 1 -$limit Ambient14 1 -$limit Ambient15 1 -$limit MysticIncant 4 - -$pitchshift PlayerMageNormalDeath 0 -$pitchshift PlayerMageCrazyDeath 0 -$pitchshift PlayerMageExtreme1Death 0 -$pitchshift PlayerMageExtreme2Death 0 -$pitchshift PlayerMageExtreme3Death 0 -$pitchshift PlayerMageBurnDeath 0 -$pitchshift PlayerMagePain 0 -$pitchshift PlayerMageGrunt 0 -$pitchshift PlayerMageFallingScream 0 -$pitchshift PlayerMageFailedUse 0 -$pitchshift PickupWeapon 0 -$pitchshift PickupPiece 0 -$pitchshift WeaponBuild 0 -$pitchshift BellRing 0 - -$alias menu/activate DoorCloseLight -$alias menu/backup PickupKey -$alias menu/prompt Chat -$alias menu/cursor FighterHammerHitWall -$alias menu/change PickupKey -$alias menu/invalid DoorCloseMetal // Hexen does not use this, but I do -$alias menu/dismiss PlatformStop -$alias menu/choose DoorCloseLight -$alias menu/clear PlatformStop - -// Hexen does not have ripslop sound like Heretic -misc/ripslop dsempty -misc/netnotch blddrp1 - -$alias intermission/cooptotal *death -$alias intermission/nextstage DoorCloseLight -$alias intermission/paststats PlatformStop -$alias intermission/pastcoopstats PlatformStop -$alias intermission/pastdmstats *gibbed - -$limit DoorCloseLight 4 - -$limit PuppyBeat 0 -$limit CeantaurPain 0 -$limit BishopPain 0 -$limit SerpentPain 0 -$limit DemonPain 0 -$limit WraithPain 0 -$limit MaulatorPain 0 -$limit EttinPain 0 -$limit FireDemonPain 0 -$limit SorcererPain 0 -$limit DragonPain 0 - -$endif // ifhexen - -/****************************************************************************/ -/* */ -/* STRIFE SOUNDS */ -/* */ -/****************************************************************************/ - -$ifstrife - -$rolloff * 200 1200 - -$playersound player male *death dspldeth -$playersound player male *xdeath dspdiehi -$playersound player male *gibbed dsslop -$playersound player male *pain100 dsplpain -$playersounddup player male *pain75 *pain100 -$playersounddup player male *pain50 *pain100 -$playersounddup player male *pain25 *pain100 -$playersound player male *grunt dsoof -$playersounddup player male *land *grunt -$playersound player male *jump dsjump -$playersound player male *fist dspunch -$playersound player male *usefail dsnoway - -$playersound player female *death dsfldeth -$playersound player female *xdeath dsfdiehi -$playersound player female *gibbed dsslop -$playersound player female *pain100 dsflpain -$playersounddup player female *pain75 *pain100 -$playersounddup player female *pain50 *pain100 -$playersounddup player female *pain25 *pain100 -$playersound player female *grunt dsfoof -$playersounddup player female *land *grunt -$playersound player female *jump dsfjump -$playersound player female *fist dspunch -$playersound player female *usefail dsfnoway - -$playersound player other *death dscldeth -$playersound player other *xdeath dscdiehi -$playersound player other *gibbed dsslop -$playersound player other *pain100 dsclpain -$playersounddup player other *pain75 *pain100 -$playersounddup player other *pain50 *pain100 -$playersounddup player other *pain25 *pain100 -$playersound player other *grunt dscoof -$playersounddup player other *land *grunt -$playersound player other *jump dscjump -$playersound player other *fist dspunch -$playersound player other *usefail dscnoway - -weapons/xbowshoot dsxbow -weapons/xbowhit dsfirxpl -weapons/assaultgun dsrifle -weapons/minimissile dsrlaunc -weapons/minimissilehit dsmislht -weapons/flamethrower dsflburn -weapons/flameidle dsflidl -weapons/mauler1 dspgrdat -weapons/mauler2charge dsproton -weapons/mauler2fire dsprotfl -weapons/mauler2hit dsexplod -weapons/hegrenadeshoot dsphoot -weapons/hegrenadebang dsexplod -weapons/phgrenadeshoot dsphoot -weapons/phgrenadebang dsexplod -weapons/sigil dssigil -weapons/sigilhit dssglhit -weapons/sigilcharge dssiglup - -monsters/rifle dsrifle - -switches/normbutn dsswtchn -$alias switches/exitbutn switches/normbutn -switches/chain dspulchn -switches/knob dsswknob -switches/keycard dskeycrd -switches/stone dsswston -switches/bolt dsswbolt -switches/boltback dsempty -switches/scanner dsswscan -switches/fool dsdifool -switches/valve dsvalve -switches/sizzle dsfirxpl - -world/glassbreak dsbglass -world/barrelx dsbarexp -world/smallfire dssmfire -world/largefire dslgfire -world/river dswriver -world/waterfall dswfall -world/waterdrip dswdrip -world/watersplash dswsplsh - -$limit world/river 1 -$limit world/waterfall 1 -$limit world/waterdrip 1 - -world/drip dsempty // These four satisfy the Heretic/Hexen terrain definitions -world/sludgegloop dsempty -world/lavasizzle dsempty -world/lavasizzle dsempty - -menu/activate dsswtchn // Activate a new menu -menu/backup dsswtchn // Backup to previous menu -menu/prompt dsswtchn // Activate a prompt "menu" -menu/cursor dspstop // Move cursor up/down -menu/change dsstnmov // Select new value for option -menu/invalid dsoof // Menu not available -menu/dismiss dsswish // Dismiss a prompt message -menu/choose dsrifl // Choose a menu item -menu/clear dsmtalht // Close top menu - -misc/startupdone dspsdtha -misc/teleport dstelept -misc/swish dsswish -misc/meathit dsmeatht -misc/metalhit dsmtalht -misc/pcrush dspcrush -misc/gibbed dsslop -misc/explosion dsexplod -misc/reactor dsreactr -misc/missileinflight dsrflite -misc/static dsstatic -misc/chant dschant -misc/alarm dsalarm -misc/disruptordeath dsdsrptr -$singular misc/alarm - -misc/secret dsyeah -misc/w_pkup dswpnup -misc/p_pkup dsyeah -misc/i_pkup dsitemup -misc/k_pkup dsitemup -misc/spawn dsitmbk -misc/chat dsradio -misc/invuse dsitemup -misc/mask dsmask - -plats/pt1_strt dspstart -plats/pt1_stop dspstop -plats/pt1_mid dsstnmov - -doors/dr2_open dsbdopn -doors/dr2_clos dsbdcls - -doors/stone_open dsdrston -doors/stone_close dsdrston - -doors/large_metal_open dsdrlmto -doors/large_metal_close dsdrlmtc - -doors/small_metal_open dsdrsmto -doors/small_metal_close dsdrsmtc - -doors/large_wood_open dsdrlwud -doors/large_wood_close dsdrlwud - -doors/small_wood_open dsdrswud -doors/small_wood_close dsdrswud - -doors/airlock_open dsairlck -doors/airlock_close dsairlck - -doors/chain_open dsdrchno -doors/chain_close dsdrchnc - -woodenbarrel/death dswbrldt - -human/imonfire dsburnme - -ambient/alien1 dsamaln1 -ambient/alien2 dsamaln2 -ambient/alien3 dsamaln3 -ambient/alien4 dsamaln4 -ambient/alien5 dsamaln5 -ambient/alien6 dsamaln6 - -reaver/sight dsrevsee -reaver/pain dsreavpn -reaver/death dsrevdth -reaver/active dsrevact -reaver/attack dsreavat -reaver/blade dsrevbld - -crusader/sight dsrb2see -crusader/pain dsrb2pn -crusader/death dsrb2dth -crusader/active dsrb2act -crusader/misl dsrlaunc -crusader/mislx dsmislht - -bishop/sight dsrb2see -bishop/pain dsrb2pn -bishop/death dspgrdth -bishop/active dsrb2act -bishop/misl dsrlaunc -bishop/mislx dsmislht - -sentinel/sight dssntsee -sentinel/death dssntdth -sentinel/active dssntact -sentinel/plasma dsplasma - -$random peasant/pain { peasant/pain1 peasant/pain2 peasant/pain3 peasant/pain4 } -peasant/pain1 dspespna -peasant/pain2 dspespnb -peasant/pain3 dspespnc -peasant/pain4 dspespnd - -//$random peasant/death { peasant/death1 peasant/death2 peasant/death3 } -$alias peasant/death peasant/death1 -peasant/death1 dspsdtha -peasant/death2 dspsdthb -peasant/death3 dspsdthc - -peasant/sight dsrebact -peasant/attack dsmeatht -peasant/active dsrebact - -beggar/attack dsmeatht -$alias beggar/pain peasant/pain -$alias beggar/death peasant/death - -rebel/sight dswpnup -$alias rebel/pain peasant/pain -rebel/death dsrebdth -rebel/active dsrebact - -barkeep/pain dsambbar -barkeep/active dsambppl -$singular barkeep/pain -$singular barkeep/active - -$alias smith/pain peasant/pain -$alias armorer/pain peasant/pain -$alias medic/pain peasant/pain -$alias zombie/death peasant/death -$alias becoming/death peasant/death -zombie/spawner dstelept - -acolyte/sight dsagrsee -acolyte/pain dsagrdpn -acolyte/death dsagrdth -acolyte/rifle dsrifle -$random acolyte/active { acolyte/active1 acolyte/active2 acolyte/active3 acolyte/active4 } -acolyte/active1 dsagrac1 -acolyte/active2 dsagrac2 -acolyte/active3 dsagrac3 -acolyte/active4 dsagrac4 - -macil/sight dsagrsee -$alias macil/pain peasant/pain -macil/active dsrebact -macil/slop dsslop - -alienspectre/sight dsalnsee -alienspectre/blade dsrevbld -alienspectre/pain dsalnpn -alienspectre/death dsalndth -alienspectre/active dsalnact - -turret/death dsmislht - -ore/explode dsexplod - -rat/sight dsratact -rat/death dsratact -rat/active dsratact -$singular rat/sight - -loremaster/chain dschain -loremaster/swish dsswish -loremaster/sight dslorsee -loremaster/attack dsrevbld -loremaster/pain dslorpn -loremaster/death dsslop -loremaster/active dstend - -stalker/sight dsspisit -stalker/attack dsspdatk -stalker/pain dsspdatk -stalker/death dsspidth -stalker/active dsspisit -stalker/walk dsspdwlk - -templar/sight dspgrsee -templar/pain dspgrdpn -templar/death dspgrdth -templar/active dspgract -templar/shoot dspgrdat - -inquisitor/sight dsinqsee -inquisitor/death dsinqdth -inquisitor/active dsinqact -inquisitor/walk dsinqact -inquisitor/jump dsinqjmp -inquisitor/attack dsphoot -inquisitor/atkexplode dsexplod - -programmer/clank dsmtalht -programmer/attack dsrevbld // Unused? -programmer/pain dsprgpn -programmer/death dsrb2dth -programmer/active dsprogac - -entity/sight dsmnalse -entity/melee dsrevbld -entity/pain dsalnpn -entity/death dsmnaldt -entity/active dsalnact - -$alias intermission/tick weapons/assaultgun -$alias intermission/cooptotal *death -$alias intermission/nextstage misc/explosion -$alias intermission/paststats world/barrelx -$alias intermission/pastcoopstats world/barrelx -$alias intermission/pastdmstats *gibbed - -$endif From 51591d10b0240ec39013677b866b66e326bff27b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 4 Apr 2015 10:25:01 +0200 Subject: [PATCH 062/144] - handle slope things through new definition tables as well. Since these get processed outside P_SpawnMapThing it required some restructuring so that the actual spawn data is present when slope things get processed. - removed FMapThing::Serialize because it isn't used anywhere - it was rather broken anyway. --- src/doomdata.h | 6 ++- src/g_doomedmap.cpp | 39 ++++++++++------ src/info.h | 39 ++++++++++------ src/p_buildmap.cpp | 13 +++--- src/p_mobj.cpp | 43 ++++++++---------- src/p_setup.cpp | 14 +++--- src/p_slopes.cpp | 77 ++++++++++++++------------------ src/p_udmf.cpp | 3 +- src/po_man.cpp | 12 ++--- wadsrc/static/mapinfo/common.txt | 10 +++++ 10 files changed, 140 insertions(+), 116 deletions(-) diff --git a/src/doomdata.h b/src/doomdata.h index 1dcd8e6b4..c08714f46 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; @@ -364,7 +366,7 @@ struct FMapThing short roll; DWORD RenderStyle; - void Serialize (FArchive &); + //void Serialize (FArchive &); }; diff --git a/src/g_doomedmap.cpp b/src/g_doomedmap.cpp index c3e586bc2..131ddd076 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 2ab0a82d6..f6750df9e 100644 --- a/src/info.h +++ b/src/info.h @@ -287,20 +287,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 c12c79608..c6fffd87c 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 5eb806b02..76afec801 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -384,11 +384,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() { @@ -4597,17 +4592,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. @@ -4634,7 +4629,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); @@ -4642,10 +4637,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; @@ -4654,20 +4649,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 @@ -4752,7 +4747,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 eaa0d4027..80c84ffde 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); @@ -1785,7 +1785,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; } @@ -1825,7 +1826,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/wadsrc/static/mapinfo/common.txt b/wadsrc/static/mapinfo/common.txt index 5e83ee727..80c14acd0 100644 --- a/wadsrc/static/mapinfo/common.txt +++ b/wadsrc/static/mapinfo/common.txt @@ -26,6 +26,10 @@ DoomEdNums 1408 = "$SSeqOverride", 8 1409 = "$SSeqOverride", 9 1411 = "$SSeqOverride" + 1500 = "$VavoomFloor" + 1501 = "$VavoomCeiling" + 1504 = "$VertexFloorZ" + 1505 = "$VertexCeilingZ" 5001 = PointPusher 5002 = PointPuller 5004 = FS_Mapspot @@ -73,6 +77,12 @@ DoomEdNums 9301 = "$PolySpawn" 9302 = "$PolySpawnCrush" 9303 = "$PolySpawnHurt" + 9500 = "$SlopeFloorPointLine" + 9501 = "$SlopeCeilingPointLine" + 9502 = "$SetFloorSlope" + 9503 = "$SetCeilingSlope" + 9510 = "$CopyFloorPlane" + 9511 = "$CopyCeilingPlane" 9982 = SecActEyesAboveC 9983 = SecActEyesBelowC 9988 = CustomSprite From 338a220df84b8f4391197e87c47422a7475e47a3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 4 Apr 2015 10:30:09 +0200 Subject: [PATCH 063/144] - add empty editor number mapping for GZDoom's dynamic lights so that these will no longer produce errors when loaded with ZDoom. --- wadsrc/static/mapinfo/common.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/wadsrc/static/mapinfo/common.txt b/wadsrc/static/mapinfo/common.txt index 80c14acd0..807c677be 100644 --- a/wadsrc/static/mapinfo/common.txt +++ b/wadsrc/static/mapinfo/common.txt @@ -28,6 +28,8 @@ DoomEdNums 1411 = "$SSeqOverride" 1500 = "$VavoomFloor" 1501 = "$VavoomCeiling" + 1502 = none + 1503 = none 1504 = "$VertexFloorZ" 1505 = "$VertexCeilingZ" 5001 = PointPusher @@ -83,6 +85,22 @@ DoomEdNums 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 From 8b92c45f8478fa61b06fdf733f72beabdf8f26b4 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sat, 4 Apr 2015 12:38:37 +0300 Subject: [PATCH 064/144] Fixed crash in lump filtering caused by uninitialized variables --- src/resourcefiles/resourcefile.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 64fe9b6cf..223ad861e 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -450,6 +450,8 @@ bool FResourceFile::FindPrefixRange(FString filter, void *lumps, size_t lumpsize 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; From bd96adafda8499d6231c222ed338def7ebde5d66 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 4 Apr 2015 14:12:04 +0200 Subject: [PATCH 065/144] - cleanup --- src/doomdata.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/doomdata.h b/src/doomdata.h index c08714f46..b51dd5d20 100644 --- a/src/doomdata.h +++ b/src/doomdata.h @@ -365,8 +365,6 @@ struct FMapThing short pitch; short roll; DWORD RenderStyle; - - //void Serialize (FArchive &); }; From 193b491b63c5b2f1c6fcca100f747b8fd936be7e Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sat, 4 Apr 2015 17:36:55 +0300 Subject: [PATCH 066/144] Added control of automatic graphics switching on OS X Automatic graphics switching is enabled by default Set vid_autoswitch CVAR to false to disable it --- src/posix/cocoa/i_video.mm | 10 ++++++++++ src/posix/osx/zdoom-info.plist | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/posix/cocoa/i_video.mm b/src/posix/cocoa/i_video.mm index 350202a13..29e6bf4d4 100644 --- a/src/posix/cocoa/i_video.mm +++ b/src/posix/cocoa/i_video.mm @@ -72,6 +72,11 @@ CUSTOM_CVAR(Bool, fullscreen, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) setmodeneeded = true; } +CUSTOM_CVAR(Bool, vid_autoswitch, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) +{ + Printf("You must restart " GAMENAME " to apply graphics switching mode\n"); +} + RenderBufferOptions rbOpts; @@ -399,6 +404,11 @@ CocoaVideo::CocoaVideo(const int multisample) attributes[i++] = NSOpenGLPFAStencilSize; attributes[i++] = NSOpenGLPixelFormatAttribute(8); + if (!vid_autoswitch) + { + attributes[i++] = NSOpenGLPFAAllowOfflineRenderers; + } + if (multisample) { attributes[i++] = NSOpenGLPFAMultisample; diff --git a/src/posix/osx/zdoom-info.plist b/src/posix/osx/zdoom-info.plist index 2a1911cdf..73be09aa8 100644 --- a/src/posix/osx/zdoom-info.plist +++ b/src/posix/osx/zdoom-info.plist @@ -43,5 +43,7 @@ NSPrincipalClass NSApplication + NSSupportsAutomaticGraphicsSwitching + YES From a5c75c1b1a089d0c875588eb41c84e701abda867 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 4 Apr 2015 20:44:27 +0200 Subject: [PATCH 067/144] - added some missing autoload sections (Hacx 1.2 vs. Hacx 2, Hexen vs Deathkings and Heretic vs. Shadows of the Serpent Riders.) and filter names for Strifeteaser1 and Strifeteaser2 which are needed for exporting the conversation IDs to MAPINFO --- wadsrc/static/iwadinfo.txt | 6 ++++++ 1 file changed, 6 insertions(+) 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" From 6e45c565a0bc8d05279b0b2458a3fb718ae0924c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 4 Apr 2015 20:52:55 +0200 Subject: [PATCH 068/144] - fixed: FResourceLump::LumpNameSetup's iname parameter can point to the FullName variable's stringbuffer so any assignment to that variable must be done indirectly. --- src/resourcefiles/resourcefile.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 223ad861e..ebeb40d96 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -98,7 +98,8 @@ void FResourceLump::LumpNameSetup(const char *iname) base = base.Left(base.LastIndexOf('.')); uppercopy(Name, base); Name[8] = 0; - FullName = 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. From b6a4511dd1e74440fad99bc673c1f2b3680dba48 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 5 Apr 2015 00:31:15 +0200 Subject: [PATCH 069/144] - move conversation ID definition to MAPINFO as well. Uses the newly added filter feature to handle the teaser differences. --- src/dobjtype.cpp | 2 + src/doomtype.h | 3 + src/g_level.h | 1 + src/g_mapinfo.cpp | 12 + src/info.cpp | 10 +- src/info.h | 3 +- src/p_conversation.cpp | 4 +- src/p_local.h | 3 +- src/p_things.cpp | 86 +++-- src/thingdef/thingdef_properties.cpp | 22 +- wadsrc/static/actors/strife/acolyte.txt | 10 - wadsrc/static/actors/strife/alienspectres.txt | 7 - wadsrc/static/actors/strife/beggars.txt | 5 - wadsrc/static/actors/strife/coin.txt | 5 - wadsrc/static/actors/strife/crusader.txt | 2 - wadsrc/static/actors/strife/entityboss.txt | 4 - wadsrc/static/actors/strife/inquisitor.txt | 3 - wadsrc/static/actors/strife/loremaster.txt | 3 - wadsrc/static/actors/strife/macil.txt | 2 - wadsrc/static/actors/strife/merchants.txt | 4 - wadsrc/static/actors/strife/oracle.txt | 1 - wadsrc/static/actors/strife/peasants.txt | 22 -- wadsrc/static/actors/strife/programmer.txt | 2 - wadsrc/static/actors/strife/questitems.txt | 31 -- wadsrc/static/actors/strife/ratbuddy.txt | 1 - wadsrc/static/actors/strife/reaver.txt | 1 - wadsrc/static/actors/strife/rebels.txt | 7 - wadsrc/static/actors/strife/sentinel.txt | 1 - wadsrc/static/actors/strife/sigil.txt | 5 - wadsrc/static/actors/strife/spectral.txt | 12 - wadsrc/static/actors/strife/stalker.txt | 1 - wadsrc/static/actors/strife/strifeammo.txt | 11 - wadsrc/static/actors/strife/strifearmor.txt | 2 - wadsrc/static/actors/strife/strifebishop.txt | 1 - .../static/actors/strife/strifehumanoid.txt | 1 - wadsrc/static/actors/strife/strifeitems.txt | 31 -- wadsrc/static/actors/strife/strifekeys.txt | 28 -- wadsrc/static/actors/strife/strifestuff.txt | 101 ------ wadsrc/static/actors/strife/strifeweapons.txt | 13 - wadsrc/static/actors/strife/templar.txt | 1 - .../static/actors/strife/thingstoblowup.txt | 3 - wadsrc/static/actors/strife/zombie.txt | 2 - .../strifeteaser1/mapinfo/conversationids.txt | 144 ++++++++ .../strifeteaser2/mapinfo/conversationids.txt | 142 ++++++++ wadsrc/static/mapinfo/common.txt | 2 + wadsrc/static/mapinfo/conversationids.txt | 326 ++++++++++++++++++ 46 files changed, 709 insertions(+), 374 deletions(-) create mode 100644 wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt create mode 100644 wadsrc/static/filter/strifeteaser2/mapinfo/conversationids.txt create mode 100644 wadsrc/static/mapinfo/conversationids.txt diff --git a/src/dobjtype.cpp b/src/dobjtype.cpp index 5798648cd..76233d4d5 100644 --- a/src/dobjtype.cpp +++ b/src/dobjtype.cpp @@ -328,6 +328,7 @@ PClass *PClass::CreateDerivedClass (FName name, unsigned int size) info->Class = type; info->GameFilter = GAME_Any; info->SpawnID = 0; + info->ConversationID = 0; info->DoomEdNum = -1; info->OwnedStates = NULL; info->NumOwnedStates = 0; @@ -423,6 +424,7 @@ void PClass::InitializeActorInfo () info->Class = this; info->GameFilter = GAME_Any; info->SpawnID = 0; + info->ConversationID = 0; info->DoomEdNum = -1; info->OwnedStates = NULL; info->NumOwnedStates = 0; diff --git a/src/doomtype.h b/src/doomtype.h index d201ca71d..98e6e7b65 100644 --- a/src/doomtype.h +++ b/src/doomtype.h @@ -46,6 +46,9 @@ #include "zstring.h" #include "vectors.h" +struct PClass; +typedef TMap FClassMap; + // Since this file is included by everything, it seems an appropriate place // to check the NOASM/USEASM macros. diff --git a/src/g_level.h b/src/g_level.h index 27fc41fdb..496c5c0f4 100644 --- a/src/g_level.h +++ b/src/g_level.h @@ -106,6 +106,7 @@ struct FMapInfoParser void ParseIntermission(); void ParseDoomEdNums(); void ParseSpawnNums(); + void ParseConversationIDs(); void ParseAMColors(bool); FName CheckEndSequence(); FName ParseEndGame(); diff --git a/src/g_mapinfo.cpp b/src/g_mapinfo.cpp index 93e365941..4d7b3c7d2 100644 --- a/src/g_mapinfo.cpp +++ b/src/g_mapinfo.cpp @@ -1900,6 +1900,18 @@ void FMapInfoParser::ParseMapInfo (int lump, level_info_t &gamedefaults, level_i sc.ScriptError("spawnnums definitions not supported with old MAPINFO syntax"); } } + else if (sc.Compare("conversationids")) + { + if (format_type != FMT_Old) + { + format_type = FMT_New; + ParseConversationIDs(); + } + else + { + sc.ScriptError("conversationids definitions not supported with old MAPINFO syntax"); + } + } else if (sc.Compare("automap") || sc.Compare("automap_overlay")) { if (format_type != FMT_Old) diff --git a/src/info.cpp b/src/info.cpp index bba646ee5..21eb7896a 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -156,6 +156,15 @@ void FActorInfo::RegisterIDs () { const PClass *cls = PClass::FindClass(Class->TypeName); + // Conversation IDs have never been filtered by game so we cannot start doing that. + if (ConversationID > 0) + { + StrifeTypes[ConversationID] = cls; + if (cls != Class) + { + Printf(TEXTCOLOR_RED"Conversation ID %d refers to hidden class type '%s'\n", SpawnID, cls->TypeName.GetChars()); + } + } if (GameFilter == GAME_Any || (GameFilter & gameinfo.gametype)) { if (SpawnID > 0) @@ -184,7 +193,6 @@ void FActorInfo::RegisterIDs () } } } - // Fill out the list for Chex Quest with Doom's actors } //========================================================================== diff --git a/src/info.h b/src/info.h index f6750df9e..8eed93e48 100644 --- a/src/info.h +++ b/src/info.h @@ -266,7 +266,8 @@ struct FActorInfo FActorInfo *Replacee; int NumOwnedStates; BYTE GameFilter; - BYTE SpawnID; + WORD SpawnID; + WORD ConversationID; SWORD DoomEdNum; FStateLabels *StateList; DmgFactors *DamageFactors; diff --git a/src/p_conversation.cpp b/src/p_conversation.cpp index 09f2d49d6..4fd6f2fa6 100644 --- a/src/p_conversation.cpp +++ b/src/p_conversation.cpp @@ -60,6 +60,7 @@ #include "farchive.h" #include "p_lnspec.h" #include "r_utility.h" +#include "p_local.h" #include "menu/menu.h" // The conversations as they exist inside a SCRIPTxx lump. @@ -105,11 +106,10 @@ void GiveSpawner (player_t *player, const PClass *type); TArray StrifeDialogues; -typedef TMap FStrifeTypeMap; // maps conversation IDs to actor classes typedef TMap FDialogueIDMap; // maps dialogue IDs to dialogue array index (for ACS) typedef TMap FDialogueMap; // maps actor class names to dialogue array index -static FStrifeTypeMap StrifeTypes; +FClassMap StrifeTypes; static FDialogueIDMap DialogueRoots; static FDialogueMap ClassRoots; static int ConversationMenuY; diff --git a/src/p_local.h b/src/p_local.h index 07309a827..d4571421b 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -160,7 +160,8 @@ void P_CheckFakeFloorTriggers (AActor *mo, fixed_t oldz, bool oldz_has_viewheigh // // [RH] P_THINGS // -extern TMap SpawnableThings; +extern FClassMap SpawnableThings; +extern FClassMap StrifeTypes; bool P_Thing_Spawn (int tid, AActor *source, int type, angle_t angle, bool fog, int newtid); bool P_Thing_Projectile (int tid, AActor *source, int type, const char * type_name, angle_t angle, diff --git a/src/p_things.cpp b/src/p_things.cpp index 423ecd042..faf1091d5 100644 --- a/src/p_things.cpp +++ b/src/p_things.cpp @@ -49,18 +49,7 @@ #include "i_system.h" // Set of spawnable things for the Thing_Spawn and Thing_Projectile specials. -TMap SpawnableThings; - -struct MapinfoSpawnItem -{ - FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet. - // These are for error reporting. We must store the file information because it's no longer available when these items get resolved. - FString filename; - int linenum; -}; - -typedef TMap SpawnMap; -static SpawnMap SpawnablesFromMapinfo; +FClassMap SpawnableThings; static FRandom pr_leadtarget ("LeadTarget"); @@ -543,22 +532,32 @@ const PClass *P_GetSpawnableType(int spawnnum) return NULL; } -typedef TMap::Pair SpawnablePair; +struct MapinfoSpawnItem +{ + FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet. + // These are for error reporting. We must store the file information because it's no longer available when these items get resolved. + FString filename; + int linenum; +}; + +typedef TMap SpawnMap; +static SpawnMap SpawnablesFromMapinfo; +static SpawnMap ConversationIDsFromMapinfo; static int STACK_ARGS SpawnableSort(const void *a, const void *b) { - return (*((SpawnablePair **)a))->Key - (*((SpawnablePair **)b))->Key; + return (*((FClassMap::Pair **)a))->Key - (*((FClassMap::Pair **)b))->Key; } -CCMD (dumpspawnables) +static void DumpClassMap(FClassMap &themap) { - TMapIterator it(SpawnableThings); - SpawnablePair *pair, **allpairs; + FClassMap::Iterator it(themap); + FClassMap::Pair *pair, **allpairs; int i = 0; // Sort into numerical order, since their arrangement in the map can // be in an unspecified order. - allpairs = new TMap::Pair *[SpawnableThings.CountUsed()]; + allpairs = new FClassMap::Pair *[themap.CountUsed()]; while (it.NextPair(pair)) { allpairs[i++] = pair; @@ -572,7 +571,18 @@ CCMD (dumpspawnables) delete[] allpairs; } -void FMapInfoParser::ParseSpawnNums() +CCMD(dumpspawnables) +{ + DumpClassMap(SpawnableThings); +} + +CCMD (dumpconversationids) +{ + DumpClassMap(StrifeTypes); +} + + +static void ParseSpawnMap(FScanner &sc, SpawnMap & themap, const char *descript) { TMap defined; int error = 0; @@ -581,7 +591,6 @@ void FMapInfoParser::ParseSpawnNums() editem.filename = sc.ScriptName; - ParseOpenBrace(); while (true) { if (sc.CheckString("}")) return; @@ -594,18 +603,18 @@ void FMapInfoParser::ParseSpawnNums() bool *def = defined.CheckKey(ednum); if (def != NULL) { - sc.ScriptMessage("Spawn Number %d defined more than once", ednum); + sc.ScriptMessage("%s %d defined more than once", descript, ednum); error++; } else if (ednum < 0) { - sc.ScriptMessage("Spawn Number must be positive, got %d", ednum); + sc.ScriptMessage("%s must be positive, got %d", descript, ednum); error++; } defined[ednum] = true; editem.classname = sc.String; - SpawnablesFromMapinfo.Insert(ednum, editem); + themap.Insert(ednum, editem); } else { @@ -614,14 +623,27 @@ void FMapInfoParser::ParseSpawnNums() } if (error > 0) { - sc.ScriptError("%d errors encountered in SpawnNum definition"); + sc.ScriptError("%d errors encountered in %s definition", error, descript); } } -void InitSpawnablesFromMapinfo() +void FMapInfoParser::ParseSpawnNums() { - SpawnableThings.Clear(); - SpawnMap::Iterator it(SpawnablesFromMapinfo); + ParseOpenBrace(); + ParseSpawnMap(sc, SpawnablesFromMapinfo, "Spawn number"); +} + +void FMapInfoParser::ParseConversationIDs() +{ + ParseOpenBrace(); + ParseSpawnMap(sc, ConversationIDsFromMapinfo, "Conversation ID"); +} + + +void InitClassMap(FClassMap &themap, SpawnMap &thedata) +{ + themap.Clear(); + SpawnMap::Iterator it(thedata); SpawnMap::Pair *pair; int error = 0; @@ -638,11 +660,17 @@ void InitSpawnablesFromMapinfo() error++; } } - SpawnableThings.Insert(pair->Key, cls); + themap.Insert(pair->Key, cls); } if (error > 0) { I_Error("%d unknown actor classes found", error); } - SpawnablesFromMapinfo.Clear(); // we do not need this any longer + thedata.Clear(); // we do not need this any longer +} + +void InitSpawnablesFromMapinfo() +{ + InitClassMap(SpawnableThings, SpawnablesFromMapinfo); + InitClassMap(StrifeTypes, ConversationIDsFromMapinfo); } diff --git a/src/thingdef/thingdef_properties.cpp b/src/thingdef/thingdef_properties.cpp index 4ddf951ac..95f1c463c 100644 --- a/src/thingdef/thingdef_properties.cpp +++ b/src/thingdef/thingdef_properties.cpp @@ -404,11 +404,11 @@ DEFINE_INFO_PROPERTY(game, S, Actor) DEFINE_INFO_PROPERTY(spawnid, I, Actor) { PROP_INT_PARM(id, 0); - if (id<0 || id>255) + if (id<0 || id>65535) { - I_Error ("SpawnID must be in the range [0,255]"); + I_Error ("SpawnID must be in the range [0,65535]"); } - else info->SpawnID=(BYTE)id; + else info->SpawnID=(WORD)id; } //========================================================================== @@ -420,20 +420,8 @@ DEFINE_INFO_PROPERTY(conversationid, IiI, Actor) PROP_INT_PARM(id1, 1); PROP_INT_PARM(id2, 2); - // Handling for Strife teaser IDs - only of meaning for the standard items - // as PWADs cannot be loaded with the teasers. - if (PROP_PARM_COUNT > 1) - { - if ((gameinfo.flags & (GI_SHAREWARE|GI_TEASER2)) == (GI_SHAREWARE)) - convid=id1; - - if ((gameinfo.flags & (GI_SHAREWARE|GI_TEASER2)) == (GI_SHAREWARE|GI_TEASER2)) - convid=id2; - - } - - if (convid <= 0) return; // 0 is not usable because the dialogue scripts use it as 'no object'. - SetStrifeType(convid, info->Class); + if (convid <= 0 || convid > 65535) return; // 0 is not usable because the dialogue scripts use it as 'no object'. + else info->ConversationID=(WORD)convid; } //========================================================================== diff --git a/wadsrc/static/actors/strife/acolyte.txt b/wadsrc/static/actors/strife/acolyte.txt index 12d4aab51..68ebbbb8a 100644 --- a/wadsrc/static/actors/strife/acolyte.txt +++ b/wadsrc/static/actors/strife/acolyte.txt @@ -80,7 +80,6 @@ ACTOR Acolyte : StrifeHumanoid ACTOR AcolyteTan : Acolyte { - ConversationID 53, 52, 53 +MISSILEMORE +MISSILEEVENMORE DropItem "ClipOfBullets" } @@ -89,7 +88,6 @@ ACTOR AcolyteTan : Acolyte ACTOR AcolyteRed : Acolyte { - ConversationID 54, 53, 54 +MISSILEMORE +MISSILEEVENMORE Translation 0 } @@ -98,7 +96,6 @@ ACTOR AcolyteRed : Acolyte ACTOR AcolyteRust : Acolyte { - ConversationID 55, 54, 55 +MISSILEMORE +MISSILEEVENMORE Translation 1 } @@ -107,7 +104,6 @@ ACTOR AcolyteRust : Acolyte ACTOR AcolyteGray : Acolyte { - ConversationID 56, 55, 56 +MISSILEMORE +MISSILEEVENMORE Translation 2 } @@ -116,7 +112,6 @@ ACTOR AcolyteGray : Acolyte ACTOR AcolyteDGreen : Acolyte { - ConversationID 57, 56, 57 +MISSILEMORE +MISSILEEVENMORE Translation 3 } @@ -125,7 +120,6 @@ ACTOR AcolyteDGreen : Acolyte ACTOR AcolyteGold : Acolyte { - ConversationID 58, 57, 58 +MISSILEMORE +MISSILEEVENMORE Translation 4 } @@ -135,7 +129,6 @@ ACTOR AcolyteGold : Acolyte ACTOR AcolyteLGreen : Acolyte { Health 60 - ConversationID 59, -1, -1 Translation 5 } @@ -144,7 +137,6 @@ ACTOR AcolyteLGreen : Acolyte ACTOR AcolyteBlue : Acolyte { Health 60 - ConversationID 60, -1, -1 Translation 6 } @@ -152,7 +144,6 @@ ACTOR AcolyteBlue : Acolyte ACTOR AcolyteShadow : Acolyte { - ConversationID 61, 58, 59 +MISSILEMORE DropItem "ClipOfBullets" States @@ -171,7 +162,6 @@ ACTOR AcolyteShadow : Acolyte ACTOR AcolyteToBe : Acolyte { - ConversationID 29, -1, -1 Health 61 Radius 20 Height 56 diff --git a/wadsrc/static/actors/strife/alienspectres.txt b/wadsrc/static/actors/strife/alienspectres.txt index 3f6ffe549..fae75de77 100644 --- a/wadsrc/static/actors/strife/alienspectres.txt +++ b/wadsrc/static/actors/strife/alienspectres.txt @@ -3,7 +3,6 @@ ACTOR AlienSpectre1 : SpectralMonster { - ConversationID 67,-1,-1 Health 1000 Painchance 250 Speed 12 @@ -81,7 +80,6 @@ ACTOR AlienSpectre1 : SpectralMonster ACTOR AlienSpectre2 : AlienSpectre1 { - ConversationID 70 Health 1200 Painchance 50 Radius 24 @@ -101,7 +99,6 @@ ACTOR AlienSpectre2 : AlienSpectre1 ACTOR AlienSpectre3 : AlienSpectre1 { - ConversationID 71,-1,-1 Health 1500 Painchance 50 Radius 24 @@ -142,7 +139,6 @@ ACTOR AlienSpectre3 : AlienSpectre1 ACTOR AlienSpectre4 : AlienSpectre1 { - ConversationID 72,-1,-1 Health 1700 Painchance 50 Radius 24 @@ -162,7 +158,6 @@ ACTOR AlienSpectre4 : AlienSpectre1 ACTOR AlienSpectre5 : AlienSpectre1 { - ConversationID 73,-1,-1 Health 2000 Painchance 50 Radius 24 @@ -181,7 +176,6 @@ ACTOR AlienSpectre5 : AlienSpectre1 ACTOR AlienChunkSmall { - ConversationID 68,-1,-1 +NOBLOCKMAP +NOCLIP States @@ -196,7 +190,6 @@ ACTOR AlienChunkSmall ACTOR AlienChunkLarge { - ConversationID 69,-1,-1 +NOBLOCKMAP +NOCLIP States diff --git a/wadsrc/static/actors/strife/beggars.txt b/wadsrc/static/actors/strife/beggars.txt index e7555a139..48c7ec92a 100644 --- a/wadsrc/static/actors/strife/beggars.txt +++ b/wadsrc/static/actors/strife/beggars.txt @@ -64,29 +64,24 @@ ACTOR Beggar : StrifeHumanoid ACTOR Beggar1 : Beggar { - ConversationID 38, 37, 38 } ACTOR Beggar2 : Beggar { - ConversationID 39, 38, 39 } ACTOR Beggar3 : Beggar { - ConversationID 40, 39, 40 } ACTOR Beggar4 : Beggar { - ConversationID 41, 40, 41 } ACTOR Beggar5 : Beggar { - ConversationID 42, 41, 42 } diff --git a/wadsrc/static/actors/strife/coin.txt b/wadsrc/static/actors/strife/coin.txt index ff55b7b52..e7a8c65bd 100644 --- a/wadsrc/static/actors/strife/coin.txt +++ b/wadsrc/static/actors/strife/coin.txt @@ -3,7 +3,6 @@ ACTOR Coin : Inventory native { - ConversationID 168, 161, 165 +DROPPED +NOTDMATCH +FLOORCLIP @@ -25,7 +24,6 @@ ACTOR Coin : Inventory native ACTOR Gold10 : Coin { - ConversationID 169, 162, 166 Inventory.Amount 10 Tag "$TAG_10GOLD" Inventory.PickupMessage "$TXT_10GOLD" @@ -41,7 +39,6 @@ ACTOR Gold10 : Coin ACTOR Gold25 : Coin { - ConversationID 170, 163, 167 Inventory.Amount 25 Tag "$TAG_25GOLD" Inventory.PickupMessage "$TXT_25GOLD" @@ -57,7 +54,6 @@ ACTOR Gold25 : Coin ACTOR Gold50 : Coin { - ConversationID 171, 164, 168 Inventory.Amount 50 Tag "$TAG_50GOLD" Inventory.PickupMessage "$TXT_50GOLD" @@ -73,7 +69,6 @@ ACTOR Gold50 : Coin ACTOR Gold300 : Coin { - ConversationID 172, -1, -1 Inventory.Amount 300 Tag "$TAG_300GOLD" Inventory.PickupMessage "$TXT_300GOLD" diff --git a/wadsrc/static/actors/strife/crusader.txt b/wadsrc/static/actors/strife/crusader.txt index 2c1a6fd7f..b8d7a564f 100644 --- a/wadsrc/static/actors/strife/crusader.txt +++ b/wadsrc/static/actors/strife/crusader.txt @@ -3,7 +3,6 @@ ACTOR Crusader { - ConversationID 63,-1,-1 Speed 8 Radius 40 Height 56 @@ -111,7 +110,6 @@ ACTOR CrusaderMissile ACTOR DeadCrusader { - ConversationID 230 States { Spawn: diff --git a/wadsrc/static/actors/strife/entityboss.txt b/wadsrc/static/actors/strife/entityboss.txt index 81daf7d0f..10b493ffe 100644 --- a/wadsrc/static/actors/strife/entityboss.txt +++ b/wadsrc/static/actors/strife/entityboss.txt @@ -3,7 +3,6 @@ ACTOR EntityNest { - ConversationID 76,-1,-1 Radius 84 Height 47 +SOLID @@ -21,7 +20,6 @@ ACTOR EntityNest ACTOR EntityPod { - ConversationID 77,-1,-1 Radius 25 Height 91 +SOLID @@ -50,7 +48,6 @@ ACTOR EntityPod ACTOR EntityBoss : SpectralMonster { - ConversationID 74,-1,-1 Health 2500 Painchance 255 Speed 13 @@ -129,7 +126,6 @@ ACTOR EntityBoss : SpectralMonster ACTOR EntitySecond : SpectralMonster { - ConversationID 75,-1,-1 Health 990 Painchance 255 Speed 14 diff --git a/wadsrc/static/actors/strife/inquisitor.txt b/wadsrc/static/actors/strife/inquisitor.txt index f3a766b0d..c25b2e2f7 100644 --- a/wadsrc/static/actors/strife/inquisitor.txt +++ b/wadsrc/static/actors/strife/inquisitor.txt @@ -3,7 +3,6 @@ ACTOR Inquisitor { - ConversationID 93,-1,-1 Health 1000 Speed 12 Radius 40 @@ -86,7 +85,6 @@ ACTOR Inquisitor ACTOR InquisitorShot { - ConversationID 108,-1,-1 ReactionTime 15 Speed 25 Radius 13 @@ -126,7 +124,6 @@ ACTOR InquisitorShot ACTOR InquisitorArm { - ConversationID 94 Speed 25 +NOBLOCKMAP +NOCLIP diff --git a/wadsrc/static/actors/strife/loremaster.txt b/wadsrc/static/actors/strife/loremaster.txt index 03b25c9d3..c231a3112 100644 --- a/wadsrc/static/actors/strife/loremaster.txt +++ b/wadsrc/static/actors/strife/loremaster.txt @@ -3,7 +3,6 @@ ACTOR Loremaster { - ConversationID 66, 63, 64 Health 800 Speed 10 Radius 15 @@ -76,7 +75,6 @@ ACTOR Loremaster ACTOR LoreShot native { - ConversationID 97,-1,-1 Speed 20 Height 14 Radius 10 @@ -104,7 +102,6 @@ ACTOR LoreShot native ACTOR LoreShot2 { - ConversationID 98,-1,-1 +NOBLOCKMAP +NOGRAVITY States diff --git a/wadsrc/static/actors/strife/macil.txt b/wadsrc/static/actors/strife/macil.txt index ae437bd19..24af35ada 100644 --- a/wadsrc/static/actors/strife/macil.txt +++ b/wadsrc/static/actors/strife/macil.txt @@ -3,7 +3,6 @@ ACTOR Macil1 { - ConversationID 49, 48, 49 Health 95 Radius 20 Height 56 @@ -59,7 +58,6 @@ ACTOR Macil1 ACTOR Macil2 : Macil1 { - ConversationID 50, 49, 50 Painchance 200 +COUNTKILL +SPECTRAL diff --git a/wadsrc/static/actors/strife/merchants.txt b/wadsrc/static/actors/strife/merchants.txt index a690fc676..517e96cfe 100644 --- a/wadsrc/static/actors/strife/merchants.txt +++ b/wadsrc/static/actors/strife/merchants.txt @@ -56,7 +56,6 @@ ACTOR Merchant ACTOR WeaponSmith : Merchant { - ConversationID 2 PainSound "smith/pain" Tag "$TAG_WEAPONSMITH" } @@ -67,7 +66,6 @@ ACTOR WeaponSmith : Merchant ACTOR BarKeep : Merchant { Translation 4 - ConversationID 3 PainSound "barkeep/pain" ActiveSound "barkeep/active" Tag "$TAG_BARKEEP" @@ -79,7 +77,6 @@ ACTOR BarKeep : Merchant ACTOR Armorer : Merchant { Translation 5 - ConversationID 4 PainSound "armorer/pain" Tag "$TAG_ARMORER" } @@ -90,7 +87,6 @@ ACTOR Armorer : Merchant ACTOR Medic : Merchant { Translation 6 - ConversationID 5 PainSound "medic/pain" Tag "$TAG_MEDIC" } diff --git a/wadsrc/static/actors/strife/oracle.txt b/wadsrc/static/actors/strife/oracle.txt index ce81ebf05..f6f5df1cc 100644 --- a/wadsrc/static/actors/strife/oracle.txt +++ b/wadsrc/static/actors/strife/oracle.txt @@ -3,7 +3,6 @@ ACTOR Oracle { - ConversationID 65, 62, 63 Health 1 Radius 15 Height 56 diff --git a/wadsrc/static/actors/strife/peasants.txt b/wadsrc/static/actors/strife/peasants.txt index b6c100e7c..4e8a72c90 100644 --- a/wadsrc/static/actors/strife/peasants.txt +++ b/wadsrc/static/actors/strife/peasants.txt @@ -69,136 +69,114 @@ ACTOR Peasant : StrifeHumanoid ACTOR Peasant1 : Peasant { - ConversationID 6 Speed 4 } ACTOR Peasant2 : Peasant { - ConversationID 7 Speed 5 } ACTOR Peasant3 : Peasant { - ConversationID 8 Speed 5 } ACTOR Peasant4 : Peasant { Translation 0 - ConversationID 9 Speed 7 } ACTOR Peasant5 : Peasant { Translation 0 - ConversationID 10 Speed 7 } ACTOR Peasant6 : Peasant { Translation 0 - ConversationID 11 Speed 7 } ACTOR Peasant7 : Peasant { Translation 2 - ConversationID 12 } ACTOR Peasant8 : Peasant { Translation 2 - ConversationID 13 } ACTOR Peasant9 : Peasant { Translation 2 - ConversationID 14 } ACTOR Peasant10 : Peasant { Translation 1 - ConversationID 15 } ACTOR Peasant11 : Peasant { Translation 1 - ConversationID 16 } ACTOR Peasant12 : Peasant { Translation 1 - ConversationID 17 } ACTOR Peasant13 : Peasant { Translation 3 - ConversationID 18 } ACTOR Peasant14 : Peasant { Translation 3 - ConversationID 19 } ACTOR Peasant15 : Peasant { Translation 3 - ConversationID 20 } ACTOR Peasant16 : Peasant { Translation 5 - ConversationID 21 } ACTOR Peasant17 : Peasant { Translation 5 - ConversationID 22 } ACTOR Peasant18 : Peasant { Translation 5 - ConversationID 23 } ACTOR Peasant19 : Peasant { Translation 4 - ConversationID 24 } ACTOR Peasant20 : Peasant { Translation 4 - ConversationID 25 } ACTOR Peasant21 : Peasant { Translation 4 - ConversationID 26 } ACTOR Peasant22 : Peasant { Translation 6 - ConversationID 27 } diff --git a/wadsrc/static/actors/strife/programmer.txt b/wadsrc/static/actors/strife/programmer.txt index f1833ffdc..7df34eb68 100644 --- a/wadsrc/static/actors/strife/programmer.txt +++ b/wadsrc/static/actors/strife/programmer.txt @@ -3,7 +3,6 @@ ACTOR Programmer { - ConversationID 95, -1, -1 Health 1100 PainChance 50 Speed 26 @@ -85,7 +84,6 @@ ACTOR Programmer ACTOR ProgrammerBase { - ConversationID 96,-1,-1 +NOBLOCKMAP +NOCLIP +NOBLOOD diff --git a/wadsrc/static/actors/strife/questitems.txt b/wadsrc/static/actors/strife/questitems.txt index cf6b98b0b..70645789c 100644 --- a/wadsrc/static/actors/strife/questitems.txt +++ b/wadsrc/static/actors/strife/questitems.txt @@ -48,159 +48,128 @@ ACTOR QuestItem : Inventory ACTOR QuestItem1 : QuestItem { - ConversationID 312, 293, 310 } ACTOR QuestItem2 : QuestItem { - ConversationID 313, 294, 311 } ACTOR QuestItem3 : QuestItem { - ConversationID 314, 295, 312 } ACTOR QuestItem4 : QuestItem { - ConversationID 315, 296, 313 Tag "$TAG_QUEST4" } ACTOR QuestItem5 : QuestItem { - ConversationID 316, 297, 314 Tag "$TAG_QUEST5" } ACTOR QuestItem6 : QuestItem { - ConversationID 317, 298, 315 Tag "TAG_QUEST6" } ACTOR QuestItem7 : QuestItem { - ConversationID 318, -1, -1 } ACTOR QuestItem8 : QuestItem { - ConversationID 319, -1, -1 } ACTOR QuestItem9 : QuestItem { - ConversationID 320, -1, -1 } ACTOR QuestItem10 : QuestItem { - ConversationID 321, -1, -1 } ACTOR QuestItem11 : QuestItem { - ConversationID 322, -1, -1 } ACTOR QuestItem12 : QuestItem { - ConversationID 323, -1, -1 } ACTOR QuestItem13 : QuestItem { - ConversationID 324, -1, -1 } ACTOR QuestItem14 : QuestItem { - ConversationID 325, -1, -1 } ACTOR QuestItem15 : QuestItem { - ConversationID 326, -1, -1 } ACTOR QuestItem16 : QuestItem { - ConversationID 327, -1, -1 } ACTOR QuestItem17 : QuestItem { - ConversationID 328, -1, -1 } ACTOR QuestItem18 : QuestItem { - ConversationID 329, -1, -1 } ACTOR QuestItem19 : QuestItem { - ConversationID 330, -1, -1 } ACTOR QuestItem20 : QuestItem { - ConversationID 331, -1, -1 } ACTOR QuestItem21 : QuestItem { - ConversationID 332, -1, -1 } ACTOR QuestItem22 : QuestItem { - ConversationID 333, -1, -1 } ACTOR QuestItem23 : QuestItem { - ConversationID 334, -1, -1 } ACTOR QuestItem24 : QuestItem { - ConversationID 335, -1, -1 } ACTOR QuestItem25 : QuestItem { - ConversationID 336, -1, -1 } ACTOR QuestItem26 : QuestItem { - ConversationID 337, -1, -1 } ACTOR QuestItem27 : QuestItem { - ConversationID 338, -1, -1 } ACTOR QuestItem28 : QuestItem { - ConversationID 339, -1, -1 } ACTOR QuestItem29 : QuestItem { - ConversationID 340, -1, -1 } ACTOR QuestItem30 : QuestItem { - ConversationID 341, -1, -1 } ACTOR QuestItem31 : QuestItem { - ConversationID 342, -1, -1 } diff --git a/wadsrc/static/actors/strife/ratbuddy.txt b/wadsrc/static/actors/strife/ratbuddy.txt index fa7deef89..4e586c0ab 100644 --- a/wadsrc/static/actors/strife/ratbuddy.txt +++ b/wadsrc/static/actors/strife/ratbuddy.txt @@ -1,7 +1,6 @@ ACTOR RatBuddy { - ConversationID 202, 196, 200 Health 5 Speed 13 Radius 10 diff --git a/wadsrc/static/actors/strife/reaver.txt b/wadsrc/static/actors/strife/reaver.txt index 76db1cfda..f881230b4 100644 --- a/wadsrc/static/actors/strife/reaver.txt +++ b/wadsrc/static/actors/strife/reaver.txt @@ -12,7 +12,6 @@ ACTOR Reaver MinMissileChance 150 MaxDropoffHeight 32 Mass 500 - ConversationID 52, -1, -1 SeeSound "reaver/sight" PainSound "reaver/pain" DeathSound "reaver/death" diff --git a/wadsrc/static/actors/strife/rebels.txt b/wadsrc/static/actors/strife/rebels.txt index 60c61eabf..a9615055b 100644 --- a/wadsrc/static/actors/strife/rebels.txt +++ b/wadsrc/static/actors/strife/rebels.txt @@ -66,7 +66,6 @@ ACTOR Rebel : StrifeHumanoid ACTOR Rebel1 : Rebel { - ConversationID 43, 42, 43 DropItem "ClipOfBullets" } @@ -74,42 +73,36 @@ ACTOR Rebel1 : Rebel ACTOR Rebel2 : Rebel { - ConversationID 44, 43, 44 } // Rebel 3 ------------------------------------------------------------------ ACTOR Rebel3 : Rebel { - ConversationID 45, 44, 45 } // Rebel 4 ------------------------------------------------------------------ ACTOR Rebel4 : Rebel { - ConversationID 46, 45, 56 } // Rebel 5 ------------------------------------------------------------------ ACTOR Rebel5 : Rebel { - ConversationID 47, 46, 47 } // Rebel 6 ------------------------------------------------------------------ ACTOR Rebel6 : Rebel { - ConversationID 48, 47, 48 } // Teleporter Beacon -------------------------------------------------------- ACTOR TeleporterBeacon : Inventory native { - ConversationID 166,-1,-1 Health 5 Radius 16 Height 16 diff --git a/wadsrc/static/actors/strife/sentinel.txt b/wadsrc/static/actors/strife/sentinel.txt index 3da2c5436..370601027 100644 --- a/wadsrc/static/actors/strife/sentinel.txt +++ b/wadsrc/static/actors/strife/sentinel.txt @@ -3,7 +3,6 @@ ACTOR Sentinel { - ConversationID 91,-1,-1 Health 100 Painchance 255 Speed 7 diff --git a/wadsrc/static/actors/strife/sigil.txt b/wadsrc/static/actors/strife/sigil.txt index 482b2c908..b3ab5b40f 100644 --- a/wadsrc/static/actors/strife/sigil.txt +++ b/wadsrc/static/actors/strife/sigil.txt @@ -124,7 +124,6 @@ ACTOR Sigil : Weapon native ACTOR Sigil1 : Sigil { - ConversationID 196, 190, 194 Inventory.Icon "I_SGL1" Health 1 } @@ -133,7 +132,6 @@ ACTOR Sigil1 : Sigil ACTOR Sigil2 : Sigil { - ConversationID 197, 191, 195 Inventory.Icon "I_SGL2" Health 2 } @@ -142,7 +140,6 @@ ACTOR Sigil2 : Sigil ACTOR Sigil3 : Sigil { - ConversationID 198, 192, 196 Inventory.Icon "I_SGL3" Health 3 } @@ -151,7 +148,6 @@ ACTOR Sigil3 : Sigil ACTOR Sigil4 : Sigil { - ConversationID 199, 193, 197 Inventory.Icon "I_SGL4" Health 4 } @@ -160,7 +156,6 @@ ACTOR Sigil4 : Sigil ACTOR Sigil5 : Sigil { - ConversationID 200, 194, 198 Inventory.Icon "I_SGL5" Health 5 } diff --git a/wadsrc/static/actors/strife/spectral.txt b/wadsrc/static/actors/strife/spectral.txt index fecd77e1f..94b1c3153 100644 --- a/wadsrc/static/actors/strife/spectral.txt +++ b/wadsrc/static/actors/strife/spectral.txt @@ -77,7 +77,6 @@ ACTOR SpectralLightningDeathShort : SpectralLightningBase ACTOR SpectralLightningBall1 : SpectralLightningBase { - ConversationID 80,-1,-1 Speed 30 Radius 8 Height 16 @@ -96,7 +95,6 @@ ACTOR SpectralLightningBall1 : SpectralLightningBase ACTOR SpectralLightningBall2 : SpectralLightningBall1 { - ConversationID 81,-1,-1 Damage 20 } @@ -104,7 +102,6 @@ ACTOR SpectralLightningBall2 : SpectralLightningBall1 ACTOR SpectralLightningH1 : SpectralLightningBase { - ConversationID 78,-1,-1 Speed 30 Radius 8 Height 16 @@ -128,7 +125,6 @@ ACTOR SpectralLightningH1 : SpectralLightningBase ACTOR SpectralLightningH2 : SpectralLightningH1 { - ConversationID 79,-1,-1 Damage 20 } @@ -136,7 +132,6 @@ ACTOR SpectralLightningH2 : SpectralLightningH1 ACTOR SpectralLightningH3 : SpectralLightningH1 { - ConversationID 82,-1,-1 Damage 10 } @@ -160,7 +155,6 @@ ACTOR SpectralLightningHTail ACTOR SpectralLightningBigBall1 : SpectralLightningDeath2 { - ConversationID 84,-1,-1 Speed 18 Radius 20 Height 40 @@ -184,7 +178,6 @@ ACTOR SpectralLightningBigBall1 : SpectralLightningDeath2 ACTOR SpectralLightningBigBall2 : SpectralLightningBigBall1 { - ConversationID 85,-1,-1 Damage 30 } @@ -192,7 +185,6 @@ ACTOR SpectralLightningBigBall2 : SpectralLightningBigBall1 ACTOR SpectralLightningV1 : SpectralLightningDeathShort { - ConversationID 86,-1,-1 Speed 22 Radius 8 Height 24 @@ -213,7 +205,6 @@ ACTOR SpectralLightningV1 : SpectralLightningDeathShort ACTOR SpectralLightningV2 : SpectralLightningV1 { - ConversationID 87,-1,-1 Damage 50 } @@ -221,7 +212,6 @@ ACTOR SpectralLightningV2 : SpectralLightningV1 ACTOR SpectralLightningSpot : SpectralLightningDeath1 { - ConversationID 88,-1,-1 Speed 18 ReactionTime 70 +NOBLOCKMAP @@ -246,7 +236,6 @@ ACTOR SpectralLightningSpot : SpectralLightningDeath1 ACTOR SpectralLightningBigV1 : SpectralLightningDeath1 { - ConversationID 89,-1,-1 Speed 28 Radius 8 Height 16 @@ -265,7 +254,6 @@ ACTOR SpectralLightningBigV1 : SpectralLightningDeath1 ACTOR SpectralLightningBigV2 : SpectralLightningBigV1 { - ConversationID 90, -1, -1 Damage 60 } diff --git a/wadsrc/static/actors/strife/stalker.txt b/wadsrc/static/actors/strife/stalker.txt index aaddc8dab..e9f2ae107 100644 --- a/wadsrc/static/actors/strife/stalker.txt +++ b/wadsrc/static/actors/strife/stalker.txt @@ -4,7 +4,6 @@ ACTOR Stalker { - ConversationID 92,-1,-1 Health 80 Painchance 40 Speed 16 diff --git a/wadsrc/static/actors/strife/strifeammo.txt b/wadsrc/static/actors/strife/strifeammo.txt index b1548f3dd..dd15b13f6 100644 --- a/wadsrc/static/actors/strife/strifeammo.txt +++ b/wadsrc/static/actors/strife/strifeammo.txt @@ -3,7 +3,6 @@ ACTOR HEGrenadeRounds : Ammo { +FLOORCLIP - ConversationID 177, 170, 174 Inventory.Amount 6 Inventory.MaxAmount 30 Ammo.BackpackAmount 6 @@ -24,7 +23,6 @@ ACTOR HEGrenadeRounds : Ammo ACTOR PhosphorusGrenadeRounds : Ammo { +FLOORCLIP - ConversationID 178, 171, 175 Inventory.Amount 4 Inventory.MaxAmount 16 Ammo.BackpackAmount 4 @@ -44,7 +42,6 @@ ACTOR PhosphorusGrenadeRounds : Ammo ACTOR ClipOfBullets : Ammo { - ConversationID 179, 173, 177 +FLOORCLIP Inventory.Amount 10 Inventory.MaxAmount 250 @@ -65,7 +62,6 @@ ACTOR ClipOfBullets : Ammo ACTOR BoxOfBullets : ClipOfBullets { - ConversationID 180, 174, 178 Inventory.Amount 50 Tag "$TAG_BOXOFBULLETS" Inventory.PickupMessage "$TXT_BOXOFBULLETS" @@ -81,7 +77,6 @@ ACTOR BoxOfBullets : ClipOfBullets ACTOR MiniMissiles : Ammo { - ConversationID 181, 175, 179 +FLOORCLIP Inventory.Amount 4 Inventory.MaxAmount 100 @@ -102,7 +97,6 @@ ACTOR MiniMissiles : Ammo ACTOR CrateOfMissiles : MiniMissiles { - ConversationID 182, 176, 180 Inventory.Amount 20 Tag "$TAG_CRATEOFMISSILES" Inventory.PickupMessage "$TXT_CRATEOFMISSILES" @@ -118,7 +112,6 @@ ACTOR CrateOfMissiles : MiniMissiles ACTOR EnergyPod : Ammo { - ConversationID 183, 177, 181 +FLOORCLIP Inventory.Amount 20 Inventory.MaxAmount 400 @@ -140,7 +133,6 @@ ACTOR EnergyPod : Ammo ACTOR EnergyPack : EnergyPod { - ConversationID 184, 178, 182 Inventory.Amount 100 Tag "$TAG_ENERGYPACK" Inventory.PickupMessage "$TXT_ENERGYPACK" @@ -156,7 +148,6 @@ ACTOR EnergyPack : EnergyPod ACTOR PoisonBolts : Ammo { - ConversationID 185, 179, 183 +FLOORCLIP Inventory.Amount 10 Inventory.MaxAmount 25 @@ -177,7 +168,6 @@ ACTOR PoisonBolts : Ammo ACTOR ElectricBolts : Ammo { - ConversationID 186, 180, 184 +FLOORCLIP Inventory.Amount 20 Inventory.MaxAmount 50 @@ -198,7 +188,6 @@ ACTOR ElectricBolts : Ammo ACTOR AmmoSatchel : BackpackItem { - ConversationID 187, 181, 184 +FLOORCLIP Inventory.Icon "I_BKPK" Tag "$TAG_AMMOSATCHEL" diff --git a/wadsrc/static/actors/strife/strifearmor.txt b/wadsrc/static/actors/strife/strifearmor.txt index 9201bc047..c04d32cc9 100644 --- a/wadsrc/static/actors/strife/strifearmor.txt +++ b/wadsrc/static/actors/strife/strifearmor.txt @@ -1,7 +1,6 @@ ACTOR MetalArmor : BasicArmorPickup { - ConversationID 129, 125, 128 Radius 20 Height 16 +FLOORCLIP @@ -23,7 +22,6 @@ ACTOR MetalArmor : BasicArmorPickup ACTOR LeatherArmor : BasicArmorPickup { - ConversationID 130, 126, 129 Radius 20 Height 16 +FLOORCLIP diff --git a/wadsrc/static/actors/strife/strifebishop.txt b/wadsrc/static/actors/strife/strifebishop.txt index 25f33f5e1..7452e1708 100644 --- a/wadsrc/static/actors/strife/strifebishop.txt +++ b/wadsrc/static/actors/strife/strifebishop.txt @@ -3,7 +3,6 @@ ACTOR StrifeBishop { - ConversationID 64,-1,-1 Health 500 Painchance 128 Speed 8 diff --git a/wadsrc/static/actors/strife/strifehumanoid.txt b/wadsrc/static/actors/strife/strifehumanoid.txt index 375f5bbcf..0a366b38f 100644 --- a/wadsrc/static/actors/strife/strifehumanoid.txt +++ b/wadsrc/static/actors/strife/strifehumanoid.txt @@ -40,7 +40,6 @@ ACTOR StrifeHumanoid ACTOR FireDroplet { - ConversationID 297, -1, -1 +NOBLOCKMAP +NOCLIP States diff --git a/wadsrc/static/actors/strife/strifeitems.txt b/wadsrc/static/actors/strife/strifeitems.txt index 289210ba2..d196705b3 100644 --- a/wadsrc/static/actors/strife/strifeitems.txt +++ b/wadsrc/static/actors/strife/strifeitems.txt @@ -2,7 +2,6 @@ ACTOR MedPatch : HealthPickup { - ConversationID 125, 121, 124 Health 10 +FLOORCLIP +INVENTORY.INVBAR @@ -24,7 +23,6 @@ ACTOR MedPatch : HealthPickup ACTOR MedicalKit : HealthPickup { - ConversationID 126, 122, 125 Health 25 +FLOORCLIP +INVENTORY.INVBAR @@ -46,7 +44,6 @@ ACTOR MedicalKit : HealthPickup ACTOR SurgeryKit : HealthPickup { - ConversationID 127, 123, 126 +FLOORCLIP +INVENTORY.INVBAR Health -100 @@ -67,7 +64,6 @@ ACTOR SurgeryKit : HealthPickup ACTOR StrifeMap : MapRevealer { - ConversationID 164, 160, 163 +FLOORCLIP Inventory.PickupSound "misc/p_pkup" Inventory.PickupMessage "$TXT_STRIFEMAP" @@ -87,7 +83,6 @@ ACTOR BeldinsRing : Inventory +NOTDMATCH +FLOORCLIP +INVENTORY.INVBAR - ConversationID 173, 165, 169 Tag "$TAG_BELDINSRING" Inventory.Icon "I_RING" Inventory.GiveQuest 1 @@ -108,7 +103,6 @@ ACTOR OfferingChalice : Inventory +DROPPED +FLOORCLIP +INVENTORY.INVBAR - ConversationID 174, 166, 170 Radius 10 Height 16 Tag "$TAG_OFFERINGCHALICE" @@ -130,7 +124,6 @@ ACTOR Ear : Inventory { +FLOORCLIP +INVENTORY.INVBAR - ConversationID 175, 167, 171 Tag "$TAG_EAR" Inventory.Icon "I_EARS" Inventory.PickupMessage "$TXT_EAR" @@ -148,7 +141,6 @@ ACTOR Ear : Inventory ACTOR BrokenPowerCoupling : Inventory { - ConversationID 289, -1, -1 Health 40 +DROPPED +FLOORCLIP @@ -173,7 +165,6 @@ ACTOR BrokenPowerCoupling : Inventory ACTOR ShadowArmor : PowerupGiver { - ConversationID 160, 156, 159 +FLOORCLIP +VISIBILITYPULSE +INVENTORY.INVBAR @@ -198,7 +189,6 @@ ACTOR ShadowArmor : PowerupGiver ACTOR EnvironmentalSuit : PowerupGiver { - ConversationID 161, 157, 160 +FLOORCLIP +INVENTORY.INVBAR -INVENTORY.FANCYPICKUPSOUND @@ -221,7 +211,6 @@ ACTOR EnvironmentalSuit : PowerupGiver ACTOR GuardUniform : Inventory { - ConversationID 162, 158, 161 +FLOORCLIP +INVENTORY.INVBAR Tag "$TAG_GUARDUNIFORM" @@ -241,7 +230,6 @@ ACTOR GuardUniform : Inventory ACTOR OfficersUniform : Inventory { - ConversationID 163, 159, 162 +FLOORCLIP +INVENTORY.INVBAR Tag "$TAG_OFFICERSUNIFORM" @@ -260,7 +248,6 @@ ACTOR OfficersUniform : Inventory ACTOR FlameThrowerParts : Inventory { - ConversationID 191, 185, 189 +FLOORCLIP +INVENTORY.INVBAR Inventory.Icon "I_BFLM" @@ -281,7 +268,6 @@ ACTOR FlameThrowerParts : Inventory ACTOR InterrogatorReport : Inventory { - ConversationID 308, 289, 306 +FLOORCLIP Tag "$TAG_REPORT" Inventory.PickupMessage "$TXT_REPORT" @@ -298,7 +284,6 @@ ACTOR InterrogatorReport : Inventory ACTOR Info : Inventory { - ConversationID 300, 282, 299 +FLOORCLIP +INVENTORY.INVBAR Tag "$TAG_INFO" @@ -317,7 +302,6 @@ ACTOR Info : Inventory ACTOR Targeter : PowerupGiver { - ConversationID 167, 169, 173 +FLOORCLIP +INVENTORY.INVBAR -INVENTORY.FANCYPICKUPSOUND @@ -339,7 +323,6 @@ ACTOR Targeter : PowerupGiver ACTOR Communicator : Inventory { - ConversationID 176, 168, 172 +NOTDMATCH Tag "$TAG_COMMUNICATOR" Inventory.Icon "I_COMM" @@ -357,7 +340,6 @@ ACTOR Communicator : Inventory ACTOR DegninOre : Inventory native { - ConversationID 128, 124, 127 Health 10 Radius 16 Height 16 @@ -391,7 +373,6 @@ ACTOR DegninOre : Inventory native ACTOR GunTraining : Inventory { - ConversationID 310,-1,-1 +FLOORCLIP +INVENTORY.INVBAR +INVENTORY.UNDROPPABLE @@ -410,7 +391,6 @@ ACTOR GunTraining : Inventory ACTOR HealthTraining : Inventory native { - ConversationID 309,-1,-1 +FLOORCLIP +INVENTORY.INVBAR +INVENTORY.UNDROPPABLE @@ -431,7 +411,6 @@ ACTOR HealthTraining : Inventory native ACTOR Scanner : PowerupGiver native { - ConversationID 165,-1,-1 +FLOORCLIP +INVENTORY.FANCYPICKUPSOUND Inventory.MaxAmount 1 @@ -452,7 +431,6 @@ ACTOR Scanner : PowerupGiver native ACTOR PrisonPass : Key native { - ConversationID 304, 286, 303 Inventory.Icon "I_TOKN" Tag "$TAG_PRISONPASS" Inventory.PickupMessage "$TXT_PRISONPASS" @@ -483,7 +461,6 @@ ACTOR DummyStrifeItem : Inventory native ACTOR RaiseAlarm : DummyStrifeItem native { - ConversationID 301, 283, 300 Tag "$TAG_ALARM" } @@ -491,28 +468,24 @@ ACTOR RaiseAlarm : DummyStrifeItem native ACTOR OpenDoor222 : DummyStrifeItem native { - ConversationID 302, 284, 301 } // Close door tag 222 ------------------------------------------------------- ACTOR CloseDoor222 : DummyStrifeItem native { - ConversationID 303, 285, 302 } // Open door tag 224 -------------------------------------------------------- ACTOR OpenDoor224 : DummyStrifeItem native { - ConversationID 305, -1, -1 } // Ammo --------------------------------------------------------------------- ACTOR AmmoFillup : DummyStrifeItem native { - ConversationID 298,280,297 Tag "$TAG_AMMOFILLUP" } @@ -520,7 +493,6 @@ ACTOR AmmoFillup : DummyStrifeItem native ACTOR HealthFillup : DummyStrifeItem native { - ConversationID 299,281,298 Tag "$TAG_HEALTHFILLUP" } @@ -528,7 +500,6 @@ ACTOR HealthFillup : DummyStrifeItem native ACTOR UpgradeStamina : DummyStrifeItem native { - ConversationID 306, 287, 307 Inventory.Amount 10 Inventory.MaxAmount 100 } @@ -537,14 +508,12 @@ ACTOR UpgradeStamina : DummyStrifeItem native ACTOR UpgradeAccuracy : DummyStrifeItem native { - ConversationID 307, 288, 308 } // Start a slideshow -------------------------------------------------------- ACTOR SlideshowStarter : DummyStrifeItem native { - ConversationID 343,-1,-1 } diff --git a/wadsrc/static/actors/strife/strifekeys.txt b/wadsrc/static/actors/strife/strifekeys.txt index ca8949417..265d2268f 100644 --- a/wadsrc/static/actors/strife/strifekeys.txt +++ b/wadsrc/static/actors/strife/strifekeys.txt @@ -10,7 +10,6 @@ ACTOR StrifeKey : Key ACTOR BaseKey : StrifeKey { - ConversationID 133, 129, 132 Inventory.Icon "I_FUSL" Tag "$TAG_BASEKEY" Inventory.PickupMessage "$TXT_BASEKEY" @@ -27,7 +26,6 @@ ACTOR BaseKey : StrifeKey ACTOR GovsKey : StrifeKey { - ConversationID 134, 130, 133 Inventory.Icon "I_REBL" Tag "$TAG_GOVSKEY" Inventory.PickupMessage "$TXT_GOVSKEY" @@ -44,7 +42,6 @@ ACTOR GovsKey : StrifeKey ACTOR Passcard : StrifeKey { - ConversationID 135, 131, 134 Inventory.Icon "I_TPAS" Tag "$TAG_PASSCARD" Inventory.PickupMessage "$TXT_PASSCARD" @@ -61,7 +58,6 @@ ACTOR Passcard : StrifeKey ACTOR IDBadge : StrifeKey { - ConversationID 136, 132, 135 Inventory.Icon "I_CRD1" Tag "$TAG_IDBADGE" Inventory.PickupMessage "$TXT_IDBADGE" @@ -78,7 +74,6 @@ ACTOR IDBadge : StrifeKey ACTOR PrisonKey : StrifeKey { - ConversationID 137, 133, 136 Inventory.Icon "I_PRIS" Tag "$TAG_PRISONKEY" Inventory.GiveQuest 11 @@ -96,7 +91,6 @@ ACTOR PrisonKey : StrifeKey ACTOR SeveredHand : StrifeKey { - ConversationID 138, 134, 137 Inventory.Icon "I_HAND" Tag "$TAG_SEVEREDHAND" Inventory.GiveQuest 12 @@ -114,7 +108,6 @@ ACTOR SeveredHand : StrifeKey ACTOR Power1Key : StrifeKey { - ConversationID 139, 135, 138 Inventory.Icon "I_PWR1" Tag "$TAG_POWER1KEY" Inventory.PickupMessage "$TXT_POWER1KEY" @@ -131,7 +124,6 @@ ACTOR Power1Key : StrifeKey ACTOR Power2Key : StrifeKey { - ConversationID 140, 136, 139 Inventory.Icon "I_PWR2" Tag "$TAG_POWER2KEY" Inventory.PickupMessage "$TXT_POWER2KEY" @@ -148,7 +140,6 @@ ACTOR Power2Key : StrifeKey ACTOR Power3Key : StrifeKey { - ConversationID 141, 137, 140 Inventory.Icon "I_PWR3" Tag "$TAG_POWER3KEY" Inventory.PickupMessage "$TXT_POWER3KEY" @@ -165,7 +156,6 @@ ACTOR Power3Key : StrifeKey ACTOR GoldKey : StrifeKey { - ConversationID 142, 138, 141 Inventory.Icon "I_KY1G" Tag "$TAG_GOLDKEY" Inventory.PickupMessage "$TXT_GOLDKEY" @@ -182,7 +172,6 @@ ACTOR GoldKey : StrifeKey ACTOR IDCard : StrifeKey { - ConversationID 143, 139, 142 Inventory.Icon "I_CRD2" Tag "$TAG_IDCARD" Inventory.PickupMessage "$TXT_IDCARD" @@ -199,7 +188,6 @@ ACTOR IDCard : StrifeKey ACTOR SilverKey : StrifeKey { - ConversationID 144, 140, 143 Inventory.Icon "I_KY2S" Tag "$TAG_SILVERKEY" Inventory.PickupMessage "$TXT_SILVERKEY" @@ -216,7 +204,6 @@ ACTOR SilverKey : StrifeKey ACTOR OracleKey : StrifeKey { - ConversationID 145, 141, 144 Inventory.Icon "I_ORAC" Tag "$TAG_ORACLEKEY" Inventory.PickupMessage "$TXT_ORACLEKEY" @@ -233,7 +220,6 @@ ACTOR OracleKey : StrifeKey ACTOR MilitaryID : StrifeKey { - ConversationID 146, 142, 145 Inventory.Icon "I_GYID" Tag "$TAG_MILITARYID" Inventory.PickupMessage "$TXT_MILITARYID" @@ -250,7 +236,6 @@ ACTOR MilitaryID : StrifeKey ACTOR OrderKey : StrifeKey { - ConversationID 147, 143, 146 Inventory.Icon "I_FUBR" Tag "$TAG_ORDERKEY" Inventory.PickupMessage "$TXT_ORDERKEY" @@ -267,7 +252,6 @@ ACTOR OrderKey : StrifeKey ACTOR WarehouseKey : StrifeKey { - ConversationID 148, 144, 147 Inventory.Icon "I_WARE" Tag "$TAG_WAREHOUSEKEY" Inventory.PickupMessage "$TXT_WAREHOUSEKEY" @@ -284,7 +268,6 @@ ACTOR WarehouseKey : StrifeKey ACTOR BrassKey : StrifeKey { - ConversationID 149, 145, 148 Inventory.Icon "I_KY3B" Tag "$TAG_BRASSKEY" Inventory.PickupMessage "$TXT_BRASSKEY" @@ -301,7 +284,6 @@ ACTOR BrassKey : StrifeKey ACTOR RedCrystalKey : StrifeKey { - ConversationID 150, 146, 149 Inventory.Icon "I_RCRY" Tag "$TAG_REDCRYSTALKEY" Inventory.PickupMessage "$TXT_REDCRYSTAL" @@ -318,7 +300,6 @@ ACTOR RedCrystalKey : StrifeKey ACTOR BlueCrystalKey : StrifeKey { - ConversationID 151, 147, 150 Inventory.Icon "I_BCRY" Tag "$TAG_BLUECRYSTALKEY" Inventory.PickupMessage "$TXT_BLUECRYSTAL" @@ -335,7 +316,6 @@ ACTOR BlueCrystalKey : StrifeKey ACTOR ChapelKey : StrifeKey { - ConversationID 152, 148, 151 Inventory.Icon "I_CHAP" Tag "$TAG_CHAPELKEY" Inventory.PickupMessage "$TXT_CHAPELKEY" @@ -352,7 +332,6 @@ ACTOR ChapelKey : StrifeKey ACTOR CatacombKey : StrifeKey { - ConversationID 153, 149, 152 Inventory.Icon "I_TUNL" Tag "$TAG_CATACOMBKEY" Inventory.GiveQuest 28 @@ -370,7 +349,6 @@ ACTOR CatacombKey : StrifeKey ACTOR SecurityKey : StrifeKey { - ConversationID 154, 150, 153 Inventory.Icon "I_SECK" Tag "$TAG_SECURITYKEY" Inventory.PickupMessage "$TXT_SECURITYKEY" @@ -387,7 +365,6 @@ ACTOR SecurityKey : StrifeKey ACTOR CoreKey : StrifeKey { - ConversationID 155, 151, 154 Inventory.Icon "I_GOID" Tag "$TAG_COREKEY" Inventory.PickupMessage "$TXT_COREKEY" @@ -404,7 +381,6 @@ ACTOR CoreKey : StrifeKey ACTOR MaulerKey : StrifeKey { - ConversationID 156, 152, 155 Inventory.Icon "I_BLTK" Tag "$TAG_MAULERKEY" Inventory.PickupMessage "$TXT_MAULERKEY" @@ -421,7 +397,6 @@ ACTOR MaulerKey : StrifeKey ACTOR FactoryKey : StrifeKey { - ConversationID 157, 153, 156 Inventory.Icon "I_PROC" Tag "$TAG_FACTORYKEY" Inventory.PickupMessage "$TXT_FACTORYKEY" @@ -438,7 +413,6 @@ ACTOR FactoryKey : StrifeKey ACTOR MineKey : StrifeKey { - ConversationID 158, 154, 157 Inventory.Icon "I_MINE" Tag "$TAG_MINEKEY" Inventory.PickupMessage "$TXT_MINEKEY" @@ -455,7 +429,6 @@ ACTOR MineKey : StrifeKey ACTOR NewKey5 : StrifeKey { - ConversationID 159, 155, 158 Inventory.Icon "I_BLTK" Tag "$TAG_NEWKEY5" Inventory.PickupMessage "$TXT_NEWKEY5" @@ -472,7 +445,6 @@ ACTOR NewKey5 : StrifeKey ACTOR OraclePass : Inventory { - ConversationID 311, 292, 309 +INVENTORY.INVBAR Inventory.Icon "I_OTOK" Inventory.GiveQuest 18 diff --git a/wadsrc/static/actors/strife/strifestuff.txt b/wadsrc/static/actors/strife/strifestuff.txt index 25ed31d66..8880ec8a1 100644 --- a/wadsrc/static/actors/strife/strifestuff.txt +++ b/wadsrc/static/actors/strife/strifestuff.txt @@ -5,7 +5,6 @@ ACTOR Tank1 Radius 16 Height 192 +SOLID - ConversationID 31, -1, -1 States { Spawn: @@ -23,7 +22,6 @@ ACTOR Tank2 Radius 16 Height 192 +SOLID - ConversationID 32, -1, -1 States { Spawn: @@ -41,7 +39,6 @@ ACTOR Tank3 Radius 16 Height 192 +SOLID - ConversationID 33, -1, -1 States { Spawn: @@ -59,7 +56,6 @@ ACTOR Tank4 Radius 16 Height 56 +SOLID - ConversationID 34, -1, -1 States { Spawn: @@ -77,7 +73,6 @@ ACTOR Tank5 Radius 16 Height 56 +SOLID - ConversationID 35, -1, -1 States { Spawn: @@ -95,7 +90,6 @@ ACTOR Tank6 Radius 16 Height 56 +SOLID - ConversationID 36, -1, -1 States { Spawn: @@ -110,7 +104,6 @@ ACTOR Tank6 ACTOR WaterBottle { - ConversationID 131, -1, -1 States { Spawn: @@ -123,7 +116,6 @@ ACTOR WaterBottle ACTOR Mug { - ConversationID 132, -1, -1 States { Spawn: @@ -141,7 +133,6 @@ ACTOR WoodenBarrel Height 32 +SOLID +SHOOTABLE +NOBLOOD +INCOMBAT - ConversationID 203, -1, -1 DeathSound "woodenbarrel/death" States { @@ -165,7 +156,6 @@ ACTOR ExplosiveBarrel2 Health 30 Radius 10 Height 32 - ConversationID 204, -1, -1 +SOLID +SHOOTABLE +NOBLOOD +OLDRADIUSDMG DeathSound "world/barrelx" +INCOMBAT @@ -194,7 +184,6 @@ ACTOR LightSilverFluorescent Height 16 +NOBLOCKMAP +FIXMAPTHINGPOS - ConversationID 206, -1, -1 States { Spawn: @@ -211,7 +200,6 @@ ACTOR LightBrownFluorescent Height 16 +NOBLOCKMAP +FIXMAPTHINGPOS - ConversationID 207, -1, -1 States { Spawn: @@ -228,7 +216,6 @@ ACTOR LightGoldFluorescent Height 16 +NOBLOCKMAP +FIXMAPTHINGPOS - ConversationID 208, -1, -1 States { Spawn: @@ -244,7 +231,6 @@ ACTOR LightGlobe Radius 16 Height 16 +SOLID - ConversationID 209, -1, -1 States { Spawn: @@ -260,7 +246,6 @@ ACTOR PillarTechno Radius 20 Height 128 +SOLID - ConversationID 210, -1, -1 States { Spawn: @@ -276,7 +261,6 @@ ACTOR PillarAztec Radius 16 Height 128 +SOLID - ConversationID 211, -1, -1 States { Spawn: @@ -292,7 +276,6 @@ ACTOR PillarAztecDamaged Radius 16 Height 80 +SOLID - ConversationID 212, -1, -1 States { Spawn: @@ -308,7 +291,6 @@ ACTOR PillarAztecRuined Radius 16 Height 40 +SOLID - ConversationID 213, -1, -1 States { Spawn: @@ -324,7 +306,6 @@ ACTOR PillarHugeTech Radius 24 Height 192 +SOLID - ConversationID 214, -1, -1 States { Spawn: @@ -340,7 +321,6 @@ ACTOR PillarAlienPower Radius 24 Height 192 +SOLID - ConversationID 215, -1, -1 ActiveSound "ambient/alien2" States { @@ -357,7 +337,6 @@ ACTOR SStalactiteBig Radius 16 Height 54 +SOLID +SPAWNCEILING +NOGRAVITY - ConversationID 216, -1, -1 States { Spawn: @@ -373,7 +352,6 @@ ACTOR SStalactiteSmall Radius 16 Height 40 +SOLID +SPAWNCEILING +NOGRAVITY - ConversationID 217, -1, -1 States { Spawn: @@ -389,7 +367,6 @@ ACTOR SStalagmiteBig Radius 16 Height 40 +SOLID - ConversationID 218, -1, -1 States { Spawn: @@ -405,7 +382,6 @@ ACTOR CavePillarTop Radius 16 Height 128 +SOLID +SPAWNCEILING +NOGRAVITY - ConversationID 219, -1, -1 States { Spawn: @@ -421,7 +397,6 @@ ACTOR CavePillarBottom Radius 16 Height 128 +SOLID - ConversationID 220, -1, -1 States { Spawn: @@ -437,7 +412,6 @@ ACTOR SStalagmiteSmall Radius 16 Height 25 +SOLID - ConversationID 221, -1, -1 States { Spawn: @@ -450,7 +424,6 @@ ACTOR SStalagmiteSmall ACTOR Candle { - ConversationID 222, -1, -1 States { Spawn: @@ -466,7 +439,6 @@ ACTOR StrifeCandelabra Radius 16 Height 40 +SOLID - ConversationID 223, -1, -1 States { Spawn: @@ -480,7 +452,6 @@ ACTOR StrifeCandelabra ACTOR WaterDropOnFloor { +NOBLOCKMAP - ConversationID 224, -1, -1 ActiveSound "world/waterdrip" States { @@ -500,7 +471,6 @@ ACTOR WaterDropOnFloor ACTOR WaterfallSplash { +NOBLOCKMAP - ConversationID 225, -1, -1 ActiveSound "world/waterfall" States { @@ -517,7 +487,6 @@ ACTOR WaterDrip { Height 1 +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY - ConversationID 226, -1, -1 States { Spawn: @@ -532,7 +501,6 @@ ACTOR WaterDrip ACTOR WaterFountain { +NOBLOCKMAP - ConversationID 227, -1, -1 ActiveSound "world/watersplash" States { @@ -550,7 +518,6 @@ ACTOR HeartsInTank Radius 16 Height 56 +SOLID - ConversationID 228, -1, -1 States { Spawn: @@ -566,7 +533,6 @@ ACTOR TeleportSwirl +NOBLOCKMAP RenderStyle Add Alpha 0.25 - ConversationID 229, -1, -1 States { Spawn: @@ -580,7 +546,6 @@ ACTOR TeleportSwirl ACTOR DeadStrifePlayer { - ConversationID 231, -1, -1 States { Spawn: @@ -595,7 +560,6 @@ ACTOR DeadStrifePlayer ACTOR DeadPeasant { - ConversationID 232, -1, -1 States { Spawn: @@ -609,7 +573,6 @@ ACTOR DeadPeasant ACTOR DeadAcolyte { - ConversationID 233, -1, -1 States { Spawn: @@ -622,7 +585,6 @@ ACTOR DeadAcolyte ACTOR DeadReaver { - ConversationID 234, -1, -1 States { Spawn: @@ -635,7 +597,6 @@ ACTOR DeadReaver ACTOR DeadRebel { - ConversationID 235, -1, -1 States { Spawn: @@ -648,7 +609,6 @@ ACTOR DeadRebel ACTOR SacrificedGuy { - ConversationID 236, -1, -1 States { Spawn: @@ -664,7 +624,6 @@ ACTOR PileOfGuts // Strife used a doomednum, which is the same as the Aztec Pillar. Since // the pillar came first in the mobjinfo list, you could not spawn this // in a map. Pity. - ConversationID 237, -1, -1 States { Spawn: @@ -680,7 +639,6 @@ ACTOR StrifeBurningBarrel Radius 16 Height 48 +SOLID - ConversationID 238, -1, -1 States { Spawn: @@ -696,7 +654,6 @@ ACTOR BurningBowl Radius 16 Height 16 +SOLID - ConversationID 239, -1, -1 ActiveSound "world/smallfire" States { @@ -713,7 +670,6 @@ ACTOR BurningBrazier Radius 10 Height 32 +SOLID - ConversationID 240, -1, -1 ActiveSound "world/smallfire" States { @@ -731,7 +687,6 @@ ACTOR SmallTorchLit Height 16 +NOBLOCKMAP +FIXMAPTHINGPOS - ConversationID 241, -1, -1 // It doesn't have any action functions, so how does it use this sound? ActiveSound "world/smallfire" @@ -751,7 +706,6 @@ ACTOR SmallTorchUnlit Height 16 +NOBLOCKMAP +FIXMAPTHINGPOS - ConversationID 242, -1, -1 States { Spawn: @@ -767,7 +721,6 @@ ACTOR CeilingChain Radius 20 Height 93 +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY - ConversationID 243, -1, -1 States { Spawn: @@ -783,7 +736,6 @@ ACTOR CageLight // No, it's not bright even though it's a light. Height 3 +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY - ConversationID 244, -1, -1 States { Spawn: @@ -799,7 +751,6 @@ ACTOR Statue Radius 20 Height 64 +SOLID - ConversationID 245, -1, -1 States { Spawn: @@ -815,7 +766,6 @@ ACTOR StatueRuined Radius 20 Height 56 +SOLID - ConversationID 246, -1, -1 States { Spawn: @@ -831,7 +781,6 @@ ACTOR MediumTorch Radius 4 Height 72 +SOLID - ConversationID 247, -1, -1 States { Spawn: @@ -848,7 +797,6 @@ ACTOR OutsideLamp Radius 3 Height 80 +SOLID - ConversationID 248, -1, -1 States { Spawn: @@ -865,7 +813,6 @@ ACTOR PoleLantern Radius 3 Height 80 +SOLID - ConversationID 249, -1, -1 States { Spawn: @@ -879,7 +826,6 @@ ACTOR PoleLantern ACTOR SRock1 { +NOBLOCKMAP - ConversationID 250, -1, -1 States { Spawn: @@ -893,7 +839,6 @@ ACTOR SRock1 ACTOR SRock2 { +NOBLOCKMAP - ConversationID 251, -1, -1 States { Spawn: @@ -907,7 +852,6 @@ ACTOR SRock2 ACTOR SRock3 { +NOBLOCKMAP - ConversationID 252, -1, -1 States { Spawn: @@ -921,7 +865,6 @@ ACTOR SRock3 ACTOR SRock4 { +NOBLOCKMAP - ConversationID 253, -1, -1 States { Spawn: @@ -936,7 +879,6 @@ ACTOR StickInWater { +NOBLOCKMAP +FLOORCLIP - ConversationID 254, -1, -1 ActiveSound "world/river" States { @@ -951,7 +893,6 @@ ACTOR StickInWater ACTOR Rubble1 { +NOBLOCKMAP +NOCLIP - ConversationID 255, -1, -1 States { Spawn: @@ -965,7 +906,6 @@ ACTOR Rubble1 ACTOR Rubble2 { +NOBLOCKMAP +NOCLIP - ConversationID 256, -1, -1 States { Spawn: @@ -979,7 +919,6 @@ ACTOR Rubble2 ACTOR Rubble3 { +NOBLOCKMAP +NOCLIP - ConversationID 257, -1, -1 States { Spawn: @@ -993,7 +932,6 @@ ACTOR Rubble3 ACTOR Rubble4 { +NOBLOCKMAP +NOCLIP - ConversationID 258, -1, -1 States { Spawn: @@ -1007,7 +945,6 @@ ACTOR Rubble4 ACTOR Rubble5 { +NOBLOCKMAP +NOCLIP - ConversationID 259, -1, -1 States { Spawn: @@ -1021,7 +958,6 @@ ACTOR Rubble5 ACTOR Rubble6 { +NOBLOCKMAP +NOCLIP - ConversationID 260, -1, -1 States { Spawn: @@ -1035,7 +971,6 @@ ACTOR Rubble6 ACTOR Rubble7 { +NOBLOCKMAP +NOCLIP - ConversationID 261, -1, -1 States { Spawn: @@ -1049,7 +984,6 @@ ACTOR Rubble7 ACTOR Rubble8 { +NOBLOCKMAP +NOCLIP - ConversationID 262, -1, -1 States { Spawn: @@ -1065,7 +999,6 @@ ACTOR SurgeryCrab +SOLID +SPAWNCEILING +NOGRAVITY Radius 20 Height 16 - ConversationID 263, -1, -1 States { Spawn: @@ -1081,7 +1014,6 @@ ACTOR LargeTorch Radius 10 Height 72 +SOLID - ConversationID 264, -1, -1 ActiveSound "world/smallfire" States { @@ -1098,7 +1030,6 @@ ACTOR HugeTorch Radius 10 Height 80 +SOLID - ConversationID 265, -1, -1 ActiveSound "world/smallfire" States { @@ -1115,7 +1046,6 @@ ACTOR PalmTree Radius 15 Height 109 +SOLID - ConversationID 266, -1, -1 States { Spawn: @@ -1131,7 +1061,6 @@ ACTOR BigTree2 Radius 15 Height 109 +SOLID - ConversationID 267, -1, -1 States { Spawn: @@ -1147,7 +1076,6 @@ ACTOR PottedTree Radius 15 Height 64 +SOLID - ConversationID 268, -1, -1 States { Spawn: @@ -1163,7 +1091,6 @@ ACTOR TreeStub Radius 15 Height 80 +SOLID - ConversationID 269, -1, -1 States { Spawn: @@ -1179,7 +1106,6 @@ ACTOR ShortBush Radius 15 Height 40 +SOLID - ConversationID 270, -1, -1 States { Spawn: @@ -1195,7 +1121,6 @@ ACTOR TallBush Radius 20 Height 64 +SOLID - ConversationID 271, -1, -1 States { Spawn: @@ -1211,7 +1136,6 @@ ACTOR ChimneyStack Radius 20 Height 64 // This height does not fit the sprite +SOLID - ConversationID 272, -1, -1 States { Spawn: @@ -1227,7 +1151,6 @@ ACTOR BarricadeColumn Radius 16 Height 128 +SOLID - ConversationID 273, -1, -1 States { Spawn: @@ -1243,7 +1166,6 @@ ACTOR Pot Radius 12 Height 24 +SOLID - ConversationID 274, -1, -1 States { Spawn: @@ -1259,7 +1181,6 @@ ACTOR Pitcher Radius 12 Height 32 +SOLID - ConversationID 275, -1, -1 States { Spawn: @@ -1275,7 +1196,6 @@ ACTOR Stool Radius 6 Height 24 +SOLID - ConversationID 276, -1, -1 States { Spawn: @@ -1289,7 +1209,6 @@ ACTOR Stool ACTOR MetalPot { +NOBLOCKMAP - ConversationID 277, -1, -1 States { Spawn: @@ -1303,7 +1222,6 @@ ACTOR MetalPot ACTOR Tub { +NOBLOCKMAP - ConversationID 278, -1, -1 States { Spawn: @@ -1319,7 +1237,6 @@ ACTOR Anvil Radius 16 Height 32 +SOLID - ConversationID 279, -1, -1 States { Spawn: @@ -1335,7 +1252,6 @@ ACTOR TechLampSilver Radius 11 Height 64 +SOLID - ConversationID 280, -1, -1 States { Spawn: @@ -1351,7 +1267,6 @@ ACTOR TechLampBrass Radius 8 Height 64 +SOLID - ConversationID 281, -1, -1 States { Spawn: @@ -1367,7 +1282,6 @@ ACTOR Tray Radius 24 Height 40 +SOLID - ConversationID 282, -1, -1 States { Spawn: @@ -1383,7 +1297,6 @@ ACTOR AmmoFiller Radius 12 Height 24 +SOLID - ConversationID 283, -1, -1 States { Spawn: @@ -1399,7 +1312,6 @@ ACTOR SigilBanner Radius 24 Height 96 +NOBLOCKMAP // I take it this was once solid, yes? - ConversationID 284, -1, -1 States { Spawn: @@ -1413,7 +1325,6 @@ ACTOR SigilBanner ACTOR RebelBoots { +NOBLOCKMAP - ConversationID 285, -1, -1 States { Spawn: @@ -1427,7 +1338,6 @@ ACTOR RebelBoots ACTOR RebelHelmet { +NOBLOCKMAP - ConversationID 286, -1, -1 States { Spawn: @@ -1441,7 +1351,6 @@ ACTOR RebelHelmet ACTOR RebelShirt { +NOBLOCKMAP - ConversationID 287, -1, -1 States { Spawn: @@ -1457,7 +1366,6 @@ ACTOR AlienBubbleColumn Radius 16 Height 128 +SOLID - ConversationID 290, -1, -1 ActiveSound "ambient/alien5" States { @@ -1474,7 +1382,6 @@ ACTOR AlienFloorBubble Radius 16 Height 72 +SOLID - ConversationID 291, -1, -1 ActiveSound "ambient/alien6" States { @@ -1491,7 +1398,6 @@ ACTOR AlienCeilingBubble Radius 16 Height 72 +SOLID +SPAWNCEILING +NOGRAVITY - ConversationID 292, -1, -1 ActiveSound "ambient/alien4" States { @@ -1508,7 +1414,6 @@ ACTOR AlienAspClimber Radius 16 Height 128 +SOLID - ConversationID 293, -1, -1 ActiveSound "ambient/alien3" States { @@ -1525,7 +1430,6 @@ ACTOR AlienSpiderLight Radius 32 Height 56 +SOLID - ConversationID 294, -1, -1 ActiveSound "ambient/alien1" States { @@ -1546,7 +1450,6 @@ ACTOR TargetPractice Mass 9999999 +SOLID +SHOOTABLE +NOBLOOD +INCOMBAT +NODAMAGE - ConversationID 205, -1, -1 PainSound "misc/metalhit" States { @@ -1587,7 +1490,6 @@ ACTOR ForceFieldGuard native ACTOR KneelingGuy { - ConversationID 37,-1,-1 Health 51 Painchance 255 Radius 6 @@ -1635,7 +1537,6 @@ ACTOR KneelingGuy ACTOR KlaxonWarningLight { - ConversationID 121,-1,-1 ReactionTime 60 Radius 5 +NOBLOCKMAP +AMBUSH @@ -1659,7 +1560,6 @@ ACTOR KlaxonWarningLight ACTOR CeilingTurret { - ConversationID 122,-1,-1 Health 125 Speed 0 Painchance 0 @@ -1702,7 +1602,6 @@ ACTOR CeilingTurret ACTOR PowerCoupling native { - ConversationID 288,-1,-1 Health 40 Radius 17 Height 64 diff --git a/wadsrc/static/actors/strife/strifeweapons.txt b/wadsrc/static/actors/strife/strifeweapons.txt index 785ebfaae..bbd837e69 100644 --- a/wadsrc/static/actors/strife/strifeweapons.txt +++ b/wadsrc/static/actors/strife/strifeweapons.txt @@ -99,7 +99,6 @@ ACTOR StrifeZap1 ACTOR ElectricBolt : StrifeZap1 { - ConversationID 102,-1,-1 Speed 30 Radius 10 Height 10 @@ -124,7 +123,6 @@ ACTOR ElectricBolt : StrifeZap1 ACTOR PoisonBolt native { - ConversationID 102,-1,-1 Speed 30 Radius 10 Height 10 @@ -152,7 +150,6 @@ ACTOR PoisonBolt native ACTOR StrifeCrossbow : StrifeWeapon { +FLOORCLIP - ConversationID 194, 188, 192 Weapon.SelectionOrder 1200 +WEAPON.NOALERT Weapon.AmmoUse1 1 @@ -237,7 +234,6 @@ ACTOR StrifeCrossbow2 : StrifeCrossbow actor AssaultGun : StrifeWeapon { - ConversationID 188, 182, 186 +FLOORCLIP Weapon.SelectionOrder 600 Weapon.AmmoUse1 1 @@ -275,7 +271,6 @@ actor AssaultGun : StrifeWeapon ACTOR AssaultGunStanding : WeaponGiver { - ConversationID 189, 183, 187 DropItem "AssaultGun" Inventory.PickupMessage "$TXT_ASSAULTGUN" States @@ -292,7 +287,6 @@ ACTOR AssaultGunStanding : WeaponGiver ACTOR MiniMissileLauncher : StrifeWeapon { - ConversationID 192, 186, 190 +FLOORCLIP Weapon.SelectionOrder 1800 Weapon.AmmoUse1 1 @@ -335,7 +329,6 @@ ACTOR MiniMissileLauncher : StrifeWeapon ACTOR RocketTrail { - ConversationID 51,-1,-1 +NOBLOCKMAP +NOGRAVITY RenderStyle Translucent @@ -365,7 +358,6 @@ ACTOR MiniMissilePuff : StrifePuff ACTOR MiniMissile { - ConversationID 99,-1,-1 Speed 20 Radius 10 Height 14 @@ -396,7 +388,6 @@ ACTOR MiniMissile ACTOR FlameThrower : StrifeWeapon { - ConversationID 190, 184, 188 +FLOORCLIP Weapon.SelectionOrder 2100 Weapon.Kickback 0 @@ -474,7 +465,6 @@ ACTOR FlameMissile ACTOR Mauler : StrifeWeapon { - ConversationID 193, 187, 191 +FLOORCLIP Weapon.SelectionOrder 300 Weapon.AmmoUse1 20 @@ -633,7 +623,6 @@ ACTOR MaulerTorpedoWave ACTOR HEGrenade { - ConversationID 106,-1,-1 Speed 15 Radius 13 Height 13 @@ -670,7 +659,6 @@ ACTOR HEGrenade ACTOR PhosphorousGrenade { - ConversationID 107,-1,-1 Speed 15 Radius 13 Height 13 @@ -742,7 +730,6 @@ ACTOR PhosphorousFire native ACTOR StrifeGrenadeLauncher : StrifeWeapon { - ConversationID 195, 189, 193 +FLOORCLIP Weapon.SelectionOrder 2400 Weapon.AmmoUse1 1 diff --git a/wadsrc/static/actors/strife/templar.txt b/wadsrc/static/actors/strife/templar.txt index e11321e82..95e9394cc 100644 --- a/wadsrc/static/actors/strife/templar.txt +++ b/wadsrc/static/actors/strife/templar.txt @@ -1,7 +1,6 @@ ACTOR Templar { - ConversationID 62, 61, 62 Health 300 Painchance 100 Speed 8 diff --git a/wadsrc/static/actors/strife/thingstoblowup.txt b/wadsrc/static/actors/strife/thingstoblowup.txt index 2860cea11..91019ce14 100644 --- a/wadsrc/static/actors/strife/thingstoblowup.txt +++ b/wadsrc/static/actors/strife/thingstoblowup.txt @@ -23,7 +23,6 @@ ACTOR Bang4Cloud ACTOR Piston { - ConversationID 123,-1,-1 Health 100 Speed 16 Radius 20 @@ -59,7 +58,6 @@ ACTOR Piston ACTOR Computer { - ConversationID 124,-1,-1 Health 80 Speed 27 Radius 26 @@ -98,7 +96,6 @@ ACTOR Computer ACTOR PowerCrystal { - ConversationID 201,-1,-1 Health 50 Speed 14 Radius 20 diff --git a/wadsrc/static/actors/strife/zombie.txt b/wadsrc/static/actors/strife/zombie.txt index 064cf4ffa..6a5b0cbfc 100644 --- a/wadsrc/static/actors/strife/zombie.txt +++ b/wadsrc/static/actors/strife/zombie.txt @@ -17,7 +17,6 @@ ACTOR Zombie : StrifeHumanoid MaxStepHeight 16 MaxDropOffHeight 32 Translation 0 - ConversationID 28, -1, -1 DeathSound "zombie/death" CrushPainSound "misc/pcrush" States @@ -48,7 +47,6 @@ ACTOR ZombieSpawner +SHOOTABLE +NOSECTOR RenderStyle None - ConversationID 30, -1, -1 ActiveSound "zombie/spawner" // Does Strife use this somewhere else? States { diff --git a/wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt b/wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt new file mode 100644 index 000000000..268702d52 --- /dev/null +++ b/wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt @@ -0,0 +1,144 @@ +conversationids +{ + 2 WeaponSmith + 3 BarKeep + 4 Armorer + 5 Medic + 6 Peasant1 + 7 Peasant2 + 8 Peasant3 + 9 Peasant4 + 10 Peasant5 + 11 Peasant6 + 12 Peasant7 + 13 Peasant8 + 14 Peasant9 + 15 Peasant10 + 16 Peasant11 + 17 Peasant12 + 18 Peasant13 + 19 Peasant14 + 20 Peasant15 + 21 Peasant16 + 22 Peasant17 + 23 Peasant18 + 24 Peasant19 + 25 Peasant20 + 26 Peasant21 + 27 Peasant22 + 37 Beggar1 + 38 Beggar2 + 39 Beggar3 + 40 Beggar4 + 41 Beggar5 + 42 Rebel1 + 43 Rebel2 + 44 Rebel3 + 45 Rebel4 + 46 Rebel5 + 47 Rebel6 + 48 Macil1 + 49 Macil2 + 52 AcolyteTan + 53 AcolyteRed + 54 AcolyteRust + 55 AcolyteGray + 56 AcolyteDGreen + 57 AcolyteGold + 58 AcolyteShadow + 61 Templar + 62 Oracle + 63 Loremaster + 70 AlienSpectre2 + 94 InquisitorArm + 121 MedPatch + 122 MedicalKit + 123 SurgeryKit + 124 DegninOre + 125 MetalArmor + 126 LeatherArmor + 129 BaseKey + 130 GovsKey + 131 Passcard + 132 IDBadge + 133 PrisonKey + 134 SeveredHand + 135 Power1Key + 136 Power2Key + 137 Power3Key + 138 GoldKey + 139 IDCard + 140 SilverKey + 141 OracleKey + 142 MilitaryID + 143 OrderKey + 144 WarehouseKey + 145 BrassKey + 146 RedCrystalKey + 147 BlueCrystalKey + 148 ChapelKey + 149 CatacombKey + 150 SecurityKey + 151 CoreKey + 152 MaulerKey + 153 FactoryKey + 154 MineKey + 155 NewKey5 + 156 ShadowArmor + 157 EnvironmentalSuit + 158 GuardUniform + 159 OfficersUniform + 160 StrifeMap + 161 Coin + 162 Gold10 + 163 Gold25 + 164 Gold50 + 165 BeldinsRing + 166 OfferingChalice + 167 Ear + 168 Communicator + 169 Targeter + 170 HEGrenadeRounds + 171 PhosphorusGrenadeRounds + 173 ClipOfBullets + 174 BoxOfBullets + 175 MiniMissiles + 176 CrateOfMissiles + 177 EnergyPod + 178 EnergyPack + 179 PoisonBolts + 180 ElectricBolts + 181 AmmoSatchel + 182 AssaultGun + 183 AssaultGunStanding + 184 FlameThrower + 185 FlameThrowerParts + 186 MiniMissileLauncher + 187 Mauler + 188 StrifeCrossbow + 189 StrifeGrenadeLauncher + 190 Sigil1 + 191 Sigil2 + 192 Sigil3 + 193 Sigil4 + 194 Sigil5 + 196 RatBuddy + 230 DeadCrusader + 280 AmmoFillup + 281 HealthFillup + 282 info + 283 RaiseAlarm + 284 OpenDoor222 + 285 CloseDoor222 + 286 PrisonPass + 287 UpgradeStamina + 288 UpgradeAccuracy + 289 InterrogatorReport + 292 OraclePass + 293 QuestItem1 + 294 QuestItem2 + 295 QuestItem3 + 296 QuestItem4 + 297 QuestItem5 + 298 QuestItem6 +} diff --git a/wadsrc/static/filter/strifeteaser2/mapinfo/conversationids.txt b/wadsrc/static/filter/strifeteaser2/mapinfo/conversationids.txt new file mode 100644 index 000000000..2dae7daea --- /dev/null +++ b/wadsrc/static/filter/strifeteaser2/mapinfo/conversationids.txt @@ -0,0 +1,142 @@ +conversationids +{ + 2 = WeaponSmith + 3 = BarKeep + 4 = Armorer + 5 = Medic + 6 = Peasant1 + 7 = Peasant2 + 8 = Peasant3 + 9 = Peasant4 + 10 = Peasant5 + 11 = Peasant6 + 12 = Peasant7 + 13 = Peasant8 + 14 = Peasant9 + 15 = Peasant10 + 16 = Peasant11 + 17 = Peasant12 + 18 = Peasant13 + 19 = Peasant14 + 20 = Peasant15 + 21 = Peasant16 + 22 = Peasant17 + 23 = Peasant18 + 24 = Peasant19 + 25 = Peasant20 + 26 = Peasant21 + 27 = Peasant22 + 38 = Beggar1 + 39 = Beggar2 + 40 = Beggar3 + 41 = Beggar4 + 42 = Beggar5 + 43 = Rebel1 + 44 = Rebel2 + 45 = Rebel3 + 47 = Rebel5 + 48 = Rebel6 + 49 = Macil1 + 50 = Macil2 + 53 = AcolyteTan + 54 = AcolyteRed + 55 = AcolyteRust + 56 = Rebel4 + 57 = AcolyteDGreen + 58 = AcolyteGold + 59 = AcolyteShadow + 62 = Templar + 63 = Oracle + 64 = Loremaster + 70 = AlienSpectre2 + 94 = InquisitorArm + 124 = MedPatch + 125 = MedicalKit + 126 = SurgeryKit + 127 = DegninOre + 128 = MetalArmor + 129 = LeatherArmor + 132 = BaseKey + 133 = GovsKey + 134 = Passcard + 135 = IDBadge + 136 = PrisonKey + 137 = SeveredHand + 138 = Power1Key + 139 = Power2Key + 140 = Power3Key + 141 = GoldKey + 142 = IDCard + 143 = SilverKey + 144 = OracleKey + 145 = MilitaryID + 146 = OrderKey + 147 = WarehouseKey + 148 = BrassKey + 149 = RedCrystalKey + 150 = BlueCrystalKey + 151 = ChapelKey + 152 = CatacombKey + 153 = SecurityKey + 154 = CoreKey + 155 = MaulerKey + 156 = FactoryKey + 157 = MineKey + 158 = NewKey5 + 159 = ShadowArmor + 160 = EnvironmentalSuit + 161 = GuardUniform + 162 = OfficersUniform + 163 = StrifeMap + 165 = Coin + 166 = Gold10 + 167 = Gold25 + 168 = Gold50 + 169 = BeldinsRing + 170 = OfferingChalice + 171 = Ear + 172 = Communicator + 173 = Targeter + 174 = HEGrenadeRounds + 175 = PhosphorusGrenadeRounds + 177 = ClipOfBullets + 178 = BoxOfBullets + 179 = MiniMissiles + 180 = CrateOfMissiles + 181 = EnergyPod + 182 = EnergyPack + 183 = PoisonBolts + 184 = AmmoSatchel + 186 = AssaultGun + 187 = AssaultGunStanding + 188 = FlameThrower + 189 = FlameThrowerParts + 190 = MiniMissileLauncher + 191 = Mauler + 192 = StrifeCrossbow + 193 = StrifeGrenadeLauncher + 194 = Sigil1 + 195 = Sigil2 + 196 = Sigil3 + 197 = Sigil4 + 198 = Sigil5 + 200 = RatBuddy + 230 = DeadCrusader + 297 = AmmoFillup + 298 = HealthFillup + 299 = info + 300 = RaiseAlarm + 301 = OpenDoor222 + 302 = CloseDoor222 + 303 = PrisonPass + 306 = InterrogatorReport + 307 = UpgradeStamina + 308 = UpgradeAccuracy + 309 = OraclePass + 310 = QuestItem1 + 311 = QuestItem2 + 312 = QuestItem3 + 313 = QuestItem4 + 314 = QuestItem5 + 315 = QuestItem6 +} \ No newline at end of file diff --git a/wadsrc/static/mapinfo/common.txt b/wadsrc/static/mapinfo/common.txt index 807c677be..eece14c84 100644 --- a/wadsrc/static/mapinfo/common.txt +++ b/wadsrc/static/mapinfo/common.txt @@ -1,3 +1,5 @@ +include "mapinfo/conversationids.txt" + Gameinfo { CheatKey = "maparrows/key.txt" diff --git a/wadsrc/static/mapinfo/conversationids.txt b/wadsrc/static/mapinfo/conversationids.txt new file mode 100644 index 000000000..f1e6cd171 --- /dev/null +++ b/wadsrc/static/mapinfo/conversationids.txt @@ -0,0 +1,326 @@ +conversationids +{ + // no conversation IDs were ever defined for other Games than Strife so this is all there is. + 2 = WeaponSmith + 3 = BarKeep + 4 = Armorer + 5 = Medic + 6 = Peasant1 + 7 = Peasant2 + 8 = Peasant3 + 9 = Peasant4 + 10 = Peasant5 + 11 = Peasant6 + 12 = Peasant7 + 13 = Peasant8 + 14 = Peasant9 + 15 = Peasant10 + 16 = Peasant11 + 17 = Peasant12 + 18 = Peasant13 + 19 = Peasant14 + 20 = Peasant15 + 21 = Peasant16 + 22 = Peasant17 + 23 = Peasant18 + 24 = Peasant19 + 25 = Peasant20 + 26 = Peasant21 + 27 = Peasant22 + 28 = Zombie + 29 = AcolyteToBe + 30 = ZombieSpawner + 31 = Tank1 + 32 = Tank2 + 33 = Tank3 + 34 = Tank4 + 35 = Tank5 + 36 = Tank6 + 37 = KneelingGuy + 38 = Beggar1 + 39 = Beggar2 + 40 = Beggar3 + 41 = Beggar4 + 42 = Beggar5 + 43 = Rebel1 + 44 = Rebel2 + 45 = Rebel3 + 46 = Rebel4 + 47 = Rebel5 + 48 = Rebel6 + 49 = Macil1 + 50 = Macil2 + 51 = RocketTrail + 52 = Reaver + 53 = AcolyteTan + 54 = AcolyteRed + 55 = AcolyteRust + 56 = AcolyteGray + 57 = AcolyteDGreen + 58 = AcolyteGold + 59 = AcolyteLGreen + 60 = AcolyteBlue + 61 = AcolyteShadow + 62 = Templar + 63 = Crusader + 64 = StrifeBishop + 65 = Oracle + 66 = Loremaster + 67 = AlienSpectre1 + 68 = AlienChunkSmall + 69 = AlienChunkLarge + 70 = AlienSpectre2 + 71 = AlienSpectre3 + 72 = AlienSpectre4 + 73 = AlienSpectre5 + 74 = EntityBoss + 75 = EntitySecond + 76 = EntityNest + 77 = EntityPod + 78 = SpectralLightningH1 + 79 = SpectralLightningH2 + 80 = SpectralLightningBall1 + 81 = SpectralLightningBall2 + 82 = SpectralLightningH3 + 84 = SpectralLightningBigBall1 + 85 = SpectralLightningBigBall2 + 86 = SpectralLightningV1 + 87 = SpectralLightningV2 + 88 = SpectralLightningSpot + 89 = SpectralLightningBigV1 + 90 = SpectralLightningBigV2 + 91 = Sentinel + 92 = Stalker + 93 = Inquisitor + 94 = InquisitorArm + 95 = Programmer + 96 = ProgrammerBase + 97 = LoreShot + 98 = LoreShot2 + 99 = MiniMissile + 102 = PoisonBolt + 106 = HEGrenade + 107 = PhosphorousGrenade + 108 = InquisitorShot + 121 = KlaxonWarningLight + 122 = CeilingTurret + 123 = Piston + 124 = Computer + 125 = MedPatch + 126 = MedicalKit + 127 = SurgeryKit + 128 = DegninOre + 129 = MetalArmor + 130 = LeatherArmor + 131 = WaterBottle + 132 = Mug + 133 = BaseKey + 134 = GovsKey + 135 = Passcard + 136 = IDBadge + 137 = PrisonKey + 138 = SeveredHand + 139 = Power1Key + 140 = Power2Key + 141 = Power3Key + 142 = GoldKey + 143 = IDCard + 144 = SilverKey + 145 = OracleKey + 146 = MilitaryID + 147 = OrderKey + 148 = WarehouseKey + 149 = BrassKey + 150 = RedCrystalKey + 151 = BlueCrystalKey + 152 = ChapelKey + 153 = CatacombKey + 154 = SecurityKey + 155 = CoreKey + 156 = MaulerKey + 157 = FactoryKey + 158 = MineKey + 159 = NewKey5 + 160 = ShadowArmor + 161 = EnvironmentalSuit + 162 = GuardUniform + 163 = OfficersUniform + 164 = StrifeMap + 165 = Scanner + 166 = TeleporterBeacon + 167 = Targeter + 168 = Coin + 169 = Gold10 + 170 = Gold25 + 171 = Gold50 + 172 = Gold300 + 173 = BeldinsRing + 174 = OfferingChalice + 175 = Ear + 176 = Communicator + 177 = HEGrenadeRounds + 178 = PhosphorusGrenadeRounds + 179 = ClipOfBullets + 180 = BoxOfBullets + 181 = MiniMissiles + 182 = CrateOfMissiles + 183 = EnergyPod + 184 = EnergyPack + 185 = PoisonBolts + 186 = ElectricBolts + 187 = AmmoSatchel + 188 = AssaultGun + 189 = AssaultGunStanding + 190 = FlameThrower + 191 = FlameThrowerParts + 192 = MiniMissileLauncher + 193 = Mauler + 194 = StrifeCrossbow + 195 = StrifeGrenadeLauncher + 196 = Sigil1 + 197 = Sigil2 + 198 = Sigil3 + 199 = Sigil4 + 200 = Sigil5 + 201 = PowerCrystal + 202 = RatBuddy + 203 = WoodenBarrel + 204 = ExplosiveBarrel2 + 205 = TargetPractice + 206 = LightSilverFluorescent + 207 = LightBrownFluorescent + 208 = LightGoldFluorescent + 209 = LightGlobe + 210 = PillarTechno + 211 = PillarAztec + 212 = PillarAztecDamaged + 213 = PillarAztecRuined + 214 = PillarHugeTech + 215 = PillarAlienPower + 216 = SStalactiteBig + 217 = SStalactiteSmall + 218 = SStalagmiteBig + 219 = CavePillarTop + 220 = CavePillarBottom + 221 = SStalagmiteSmall + 222 = Candle + 223 = StrifeCandelabra + 224 = WaterDropOnFloor + 225 = WaterfallSplash + 226 = WaterDrip + 227 = WaterFountain + 228 = HeartsInTank + 229 = TeleportSwirl + 230 = DeadCrusader + 231 = DeadStrifePlayer + 232 = DeadPeasant + 233 = DeadAcolyte + 234 = DeadReaver + 235 = DeadRebel + 236 = SacrificedGuy + 237 = PileOfGuts + 238 = StrifeBurningBarrel + 239 = BurningBowl + 240 = BurningBrazier + 241 = SmallTorchLit + 242 = SmallTorchUnlit + 243 = CeilingChain + 244 = CageLight + 245 = Statue + 246 = StatueRuined + 247 = MediumTorch + 248 = OutsideLamp + 249 = PoleLantern + 250 = SRock1 + 251 = SRock2 + 252 = SRock3 + 253 = SRock4 + 254 = StickInWater + 255 = Rubble1 + 256 = Rubble2 + 257 = Rubble3 + 258 = Rubble4 + 259 = Rubble5 + 260 = Rubble6 + 261 = Rubble7 + 262 = Rubble8 + 263 = SurgeryCrab + 264 = LargeTorch + 265 = HugeTorch + 266 = PalmTree + 267 = BigTree2 + 268 = PottedTree + 269 = TreeStub + 270 = ShortBush + 271 = TallBush + 272 = ChimneyStack + 273 = BarricadeColumn + 274 = Pot + 275 = Pitcher + 276 = Stool + 277 = MetalPot + 278 = Tub + 279 = Anvil + 280 = TechLampSilver + 281 = TechLampBrass + 282 = Tray + 283 = AmmoFiller + 284 = SigilBanner + 285 = RebelBoots + 286 = RebelHelmet + 287 = RebelShirt + 288 = PowerCoupling + 289 = BrokenPowerCoupling + 290 = AlienBubbleColumn + 291 = AlienFloorBubble + 292 = AlienCeilingBubble + 293 = AlienAspClimber + 294 = AlienSpiderLight + 297 = FireDroplet + 298 = AmmoFillup + 299 = HealthFillup + 300 = info + 301 = RaiseAlarm + 302 = OpenDoor222 + 303 = CloseDoor222 + 304 = PrisonPass + 305 = OpenDoor224 + 306 = UpgradeStamina + 307 = UpgradeAccuracy + 308 = InterrogatorReport + 309 = HealthTraining + 310 = GunTraining + 311 = OraclePass + 312 = QuestItem1 + 313 = QuestItem2 + 314 = QuestItem3 + 315 = QuestItem4 + 316 = QuestItem5 + 317 = QuestItem6 + 318 = QuestItem7 + 319 = QuestItem8 + 320 = QuestItem9 + 321 = QuestItem10 + 322 = QuestItem11 + 323 = QuestItem12 + 324 = QuestItem13 + 325 = QuestItem14 + 326 = QuestItem15 + 327 = QuestItem16 + 328 = QuestItem17 + 329 = QuestItem18 + 330 = QuestItem19 + 331 = QuestItem20 + 332 = QuestItem21 + 333 = QuestItem22 + 334 = QuestItem23 + 335 = QuestItem24 + 336 = QuestItem25 + 337 = QuestItem26 + 338 = QuestItem27 + 339 = QuestItem28 + 340 = QuestItem29 + 341 = QuestItem30 + 342 = QuestItem31 + 343 = SlideshowStarter +} \ No newline at end of file From 1fddd1859e6b6aca3e7e8cb603f798a8329385f1 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 5 Apr 2015 00:38:29 +0200 Subject: [PATCH 070/144] - fixed: FResourceFile::FilterLumps must use a proper copy of the filename to pass to LumpNameSetup instead of a pointer to the file name's stringbuffer, because that function will overwrite the variable it is taken from. --- src/resourcefiles/resourcefile.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index ebeb40d96..b4280adf6 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -98,8 +98,7 @@ void FResourceLump::LumpNameSetup(const char *iname) base = base.Left(base.LastIndexOf('.')); uppercopy(Name, base); Name[8] = 0; - FString temp = iname; // Note: iname can point to inside FullName's string buffer so we cannot do the assignment directly. - FullName = temp; + FullName = iname; // Map some directories to WAD namespaces. // Note that some of these namespaces don't exist in WADS. @@ -382,7 +381,7 @@ int FResourceFile::FilterLumps(FString filtername, void *lumps, size_t lumpsize, { FResourceLump *lump = (FResourceLump *)lump_p; assert(lump->FullName.CompareNoCase(filter, (int)filter.Len()) == 0); - lump->LumpNameSetup(&lump->FullName[filter.Len()]); + lump->LumpNameSetup(lump->FullName.Mid(filter.Len())); } // Move filtered lumps to the end of the lump list. From bbbbb7ac9d513c11c44ca5aa78303fa8bd1cfdd7 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 4 Apr 2015 17:05:38 -0500 Subject: [PATCH 071/144] Reorder FMapThing to remove padding --- src/doomdata.h | 4 ++-- src/p_buildmap.cpp | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/doomdata.h b/src/doomdata.h index b51dd5d20..71e581e26 100644 --- a/src/doomdata.h +++ b/src/doomdata.h @@ -347,10 +347,10 @@ struct FMapThing fixed_t y; fixed_t z; short angle; - FDoomEdEntry *info; - short EdNum; WORD SkillFilter; WORD ClassFilter; + short EdNum; + FDoomEdEntry *info; DWORD flags; int special; int args[5]; diff --git a/src/p_buildmap.cpp b/src/p_buildmap.cpp index c6fffd87c..ddfa0e2ec 100644 --- a/src/p_buildmap.cpp +++ b/src/p_buildmap.cpp @@ -781,14 +781,14 @@ vertex_t *FindVertex (fixed_t x, fixed_t y) static void CreateStartSpot (fixed_t *pos, FMapThing *start) { short angle = LittleShort(*(WORD *)(&pos[3])); - FMapThing mt = - { - 0, (LittleLong(pos[0])<<12), ((-LittleLong(pos[1]))<<12), 0,// tid, x, y, z - 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 - }; + FMapThing mt = { 0, }; + + mt.x = LittleLong(pos[0])<<12; + mt.y = (-LittleLong(pos[1]))<<12; + mt.angle = short(Scale((2048-angle)&2047, 360, 2048)); + mt.info = DoomEdMap.CheckKey(1); + mt.EdNum = 1; + mt.flags = 7|MTF_SINGLE|224; *start = mt; } From 2103fe2a14aed2a1fd61cc3fd936f19229e7652b Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 4 Apr 2015 17:14:17 -0500 Subject: [PATCH 072/144] Make FResourceLump::LumpNameSetup's argument an FString --- src/resourcefiles/resourcefile.cpp | 7 +++---- src/resourcefiles/resourcefile.h | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index b4280adf6..6b4c8c29b 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -90,11 +90,10 @@ FResourceLump::~FResourceLump() // //========================================================================== -void FResourceLump::LumpNameSetup(const char *iname) +void FResourceLump::LumpNameSetup(FString iname) { - const char *lname = strrchr(iname,'/'); - lname = (lname == NULL) ? iname : lname + 1; - FString base = lname; + long slash = iname.LastIndexOf('/'); + FString base = (slash >= 0) ? iname.Mid(slash + 1) : iname; base = base.Left(base.LastIndexOf('.')); uppercopy(Name, base); Name[8] = 0; diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index 9927b1eae..c62981ca7 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -44,7 +44,7 @@ struct FResourceLump virtual FileReader *NewReader(); virtual int GetFileOffset() { return -1; } virtual int GetIndexNum() const { return 0; } - void LumpNameSetup(const char *iname); + void LumpNameSetup(FString iname); void CheckEmbedded(); void *CacheLump(); From 4315423200af3ba414b9057e1755048af6a85a14 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 4 Apr 2015 17:38:45 -0500 Subject: [PATCH 073/144] Rename ns_invalid to ns_hidden - Also use ns_hidden by name in LumpNameSetup(). --- src/resourcefiles/resourcefile.cpp | 6 +++--- src/w_wad.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index 6b4c8c29b..bb3776e83 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -115,12 +115,12 @@ void FResourceLump::LumpNameSetup(FString iname) !strncmp(iname, "sounds/", 7) ? ns_sounds : !strncmp(iname, "music/", 6) ? ns_music : !strchr(iname, '/') ? ns_global : - -1; + ns_hidden; // Anything that is not in one of these subdirectories or the main directory // should not be accessible through the standard WAD functions but only through // the ones which look for the full name. - if (Namespace == -1) + if (Namespace == ns_hidden) { memset(Name, 0, 8); } @@ -428,7 +428,7 @@ void FResourceFile::JunkLeftoverFilters(void *lumps, size_t lumpsize, DWORD max) FResourceLump *lump = (FResourceLump *)p; lump->FullName = 0; lump->Name[0] = '\0'; - lump->Namespace = ns_invalid; + lump->Namespace = ns_hidden; } } } diff --git a/src/w_wad.h b/src/w_wad.h index 262a332c6..63912373e 100644 --- a/src/w_wad.h +++ b/src/w_wad.h @@ -52,7 +52,7 @@ struct wadlump_t // [RH] Namespaces from BOOM. typedef enum { - ns_invalid = -1, + ns_hidden = -1, ns_global = 0, ns_sprites, From 6da887c34fcbc55cfd0115cfe3ebcc3001bf0c4a Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 4 Apr 2015 17:47:36 -0500 Subject: [PATCH 074/144] Use Truncate to chop off extension in LumpNameSetup. - Left() always creates a new string. Truncate() can reuse the old one if it only has one reference. --- src/resourcefiles/resourcefile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index bb3776e83..caeb1090f 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -94,7 +94,7 @@ void FResourceLump::LumpNameSetup(FString iname) { long slash = iname.LastIndexOf('/'); FString base = (slash >= 0) ? iname.Mid(slash + 1) : iname; - base = base.Left(base.LastIndexOf('.')); + base.Truncate(base.LastIndexOf('.')); uppercopy(Name, base); Name[8] = 0; FullName = iname; From e451faa1ccaa66feb05c2425cc3c5b2a12ca9d3d Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 4 Apr 2015 18:02:49 -0500 Subject: [PATCH 075/144] Fixed: FString::ReallocBuffer could write to unallocated memory - Previously, calling ReallocBuffer with a smaller buffer size than the current one could overwrite unallocated memory. This required that the string it was called on had more than one reference and therefore required creating a new copy. The entire original string would be copied, whether it fit in the new buffer or not. --- src/zstring.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zstring.cpp b/src/zstring.cpp index 14d19f46f..510ff19d7 100644 --- a/src/zstring.cpp +++ b/src/zstring.cpp @@ -1096,7 +1096,7 @@ void FString::ReallocBuffer (size_t newlen) { // If more than one reference, we must use a new copy FStringData *old = Data(); AllocBuffer (newlen); - StrCopy (Chars, old->Chars(), old->Len); + StrCopy (Chars, old->Chars(), newlen < old->Len ? newlen : old->Len); old->Release(); } else From 89054f5d60908440b9e5592cf00dbb2ef9304a34 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 4 Apr 2015 18:39:22 -0500 Subject: [PATCH 076/144] Use filtering and LOADACS to autoload strfhelp.o - No more special case for STRFHELP in the executable! --- src/p_acs.cpp | 6 ------ wadsrc/static/{ => filter/strife}/acs/strfhelp.o | Bin wadsrc/static/filter/strife/loadacs.txt | 1 + 3 files changed, 1 insertion(+), 6 deletions(-) rename wadsrc/static/{ => filter/strife}/acs/strfhelp.o (100%) create mode 100644 wadsrc/static/filter/strife/loadacs.txt diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 8894bc936..5556507b7 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -1409,12 +1409,6 @@ void DPlaneWatcher::Tick () // own behavior is loaded (if it has one). void FBehavior::StaticLoadDefaultModules () { - // When playing Strife, STRFHELP is always loaded. - if (gameinfo.gametype == GAME_Strife) - { - StaticLoadModule (Wads.CheckNumForName ("STRFHELP", ns_acslibrary)); - } - // Scan each LOADACS lump and load the specified modules in order int lump, lastlump = 0; diff --git a/wadsrc/static/acs/strfhelp.o b/wadsrc/static/filter/strife/acs/strfhelp.o similarity index 100% rename from wadsrc/static/acs/strfhelp.o rename to wadsrc/static/filter/strife/acs/strfhelp.o diff --git a/wadsrc/static/filter/strife/loadacs.txt b/wadsrc/static/filter/strife/loadacs.txt new file mode 100644 index 000000000..eb41c01ae --- /dev/null +++ b/wadsrc/static/filter/strife/loadacs.txt @@ -0,0 +1 @@ +strfhelp From 82f7b439c889500ad2e8bececb8cebe595886381 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sun, 5 Apr 2015 10:59:07 +0300 Subject: [PATCH 077/144] Improved text pasting on OS X Support for UTF-8 and UTF-16 encodings should cover all cases of text pasting from clipboard --- src/posix/i_system.cpp | 44 ++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/posix/i_system.cpp b/src/posix/i_system.cpp index b3de61419..f87cf76ae 100644 --- a/src/posix/i_system.cpp +++ b/src/posix/i_system.cpp @@ -603,6 +603,15 @@ int I_FindAttr (findstate_t *fileinfo) #ifdef __APPLE__ static PasteboardRef s_clipboard; + +static CFDataRef GetPasteboardData(const PasteboardItemID itemID, const CFStringRef flavorType) +{ + CFDataRef data = NULL; + + const OSStatus result = PasteboardCopyItemFlavorData(s_clipboard, itemID, flavorType, &data); + + return noErr == result ? data : NULL; +} #endif // __APPLE__ // Clipboard support requires GTK+ @@ -688,35 +697,36 @@ FString I_GetFromClipboard (bool use_primary_selection) return FString(); } - CFArrayRef flavorTypeArray; - - if (0 != PasteboardCopyItemFlavors(s_clipboard, itemID, &flavorTypeArray)) + if (CFDataRef data = GetPasteboardData(itemID, kUTTypeUTF8PlainText)) { - return FString(); + result = reinterpret_cast(CFDataGetBytePtr(data)); } - - const CFIndex flavorCount = CFArrayGetCount(flavorTypeArray); - - for (CFIndex flavorIndex = 0; flavorIndex < flavorCount; ++flavorIndex) + else if (CFDataRef data = GetPasteboardData(itemID, kUTTypeUTF16PlainText)) { - const CFStringRef flavorType = static_cast( - CFArrayGetValueAtIndex(flavorTypeArray, flavorIndex)); +#ifdef __LITTLE_ENDIAN__ + static const CFStringEncoding ENCODING = kCFStringEncodingUTF16LE; +#else // __BIG_ENDIAN__ + static const CFStringEncoding ENCODING = kCFStringEncodingUTF16BE; +#endif // __LITTLE_ENDIAN__ - if (UTTypeConformsTo(flavorType, CFSTR("public.utf8-plain-text"))) + if (const CFStringRef utf16 = CFStringCreateFromExternalRepresentation(kCFAllocatorDefault, data, ENCODING)) { - CFDataRef flavorData; + const CFRange range = { 0, CFStringGetLength(utf16) }; + CFIndex bufferLength = 0; - if (0 == PasteboardCopyItemFlavorData(s_clipboard, itemID, flavorType, &flavorData)) + if (CFStringGetBytes(utf16, range, kCFStringEncodingUTF8, '?', false, NULL, 0, &bufferLength) > 0) { - result += reinterpret_cast(CFDataGetBytePtr(flavorData)); + UInt8* const buffer = reinterpret_cast(result.LockNewBuffer(bufferLength)); + + CFStringGetBytes(utf16, range, kCFStringEncodingUTF8, '?', false, buffer, bufferLength, NULL); + + result.UnlockBuffer(); } - CFRelease(flavorData); + CFRelease(utf16); } } - CFRelease(flavorTypeArray); - return result; #endif return ""; From ebd8f2410347477e774515a53ca402c64e765daa Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sun, 5 Apr 2015 11:39:49 +0300 Subject: [PATCH 078/144] Fixed compilation with OS X SDK 10.4 --- src/posix/cocoa/i_common.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/posix/cocoa/i_common.h b/src/posix/cocoa/i_common.h index 081466e87..545540b2f 100644 --- a/src/posix/cocoa/i_common.h +++ b/src/posix/cocoa/i_common.h @@ -128,6 +128,8 @@ enum kVK_UpArrow = 0x7E }; +static const NSOpenGLPixelFormatAttribute NSOpenGLPFAAllowOfflineRenderers = NSOpenGLPixelFormatAttribute(96); + #endif // prior to 10.5 From 7b8931292318c145ce34ec53d4ee8f6a3291274e Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sun, 5 Apr 2015 11:52:57 +0300 Subject: [PATCH 079/144] Fixed potential issue with read beyond buffer boundaries --- src/posix/i_system.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/posix/i_system.cpp b/src/posix/i_system.cpp index f87cf76ae..0a1b2f69a 100644 --- a/src/posix/i_system.cpp +++ b/src/posix/i_system.cpp @@ -699,7 +699,12 @@ FString I_GetFromClipboard (bool use_primary_selection) if (CFDataRef data = GetPasteboardData(itemID, kUTTypeUTF8PlainText)) { - result = reinterpret_cast(CFDataGetBytePtr(data)); + const CFIndex bufferLength = CFDataGetLength(data); + char* const buffer = result.LockNewBuffer(bufferLength); + + memcpy(buffer, CFDataGetBytePtr(data), bufferLength); + + result.UnlockBuffer(); } else if (CFDataRef data = GetPasteboardData(itemID, kUTTypeUTF16PlainText)) { From a91997d12c41805421dd446fdd6a045b898857d9 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 5 Apr 2015 22:07:24 +0200 Subject: [PATCH 080/144] - fixed: Don't try to load autoload sections for empty section names. --- src/d_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index ab2459788..930b0f629 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2031,7 +2031,7 @@ static void AddAutoloadFiles(const char *group, const char *autoname) D_AddConfigWads (allwads, file); // Add group-specific wads - if (group != NULL) + if (group != NULL && group[0] != 0) { file = group; file += ".Autoload"; @@ -2039,7 +2039,7 @@ static void AddAutoloadFiles(const char *group, const char *autoname) } // Add IWAD-specific wads - if (autoname != NULL) + if (autoname != NULL && autoname[0] != 0) { file = autoname; file += ".Autoload"; From 62d036a63e12cdafb74ff617a5bd58444892284e Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sun, 5 Apr 2015 20:24:49 -0500 Subject: [PATCH 081/144] Added gametype-based filter - For when IWADs are too specific, filter by the base gametype too. - Minor small edits to the sndinfo.txt files so that zipdir will notice the changes, since it doesn't check path names when checking for file differences. --- src/resourcefiles/resourcefile.cpp | 35 ++++++++++++++++++ src/resourcefiles/resourcefile.h | 1 + .../{doom => game-doomchex}/sndinfo.txt | 1 + .../{heretic => game-heretic}/sndinfo.txt | 1 + .../filter/{hexen => game-hexen}/sndinfo.txt | 1 + .../{strife => game-strife}/acs/strfhelp.o | Bin .../{strife => game-strife}/loadacs.txt | 0 .../{strife => game-strife}/sndinfo.txt | 1 + 8 files changed, 40 insertions(+) rename wadsrc/static/filter/{doom => game-doomchex}/sndinfo.txt (99%) rename wadsrc/static/filter/{heretic => game-heretic}/sndinfo.txt (99%) rename wadsrc/static/filter/{hexen => game-hexen}/sndinfo.txt (99%) rename wadsrc/static/filter/{strife => game-strife}/acs/strfhelp.o (100%) rename wadsrc/static/filter/{strife => game-strife}/loadacs.txt (100%) rename wadsrc/static/filter/{strife => game-strife}/sndinfo.txt (99%) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index caeb1090f..d5ad659af 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -344,6 +344,7 @@ void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize) // 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 -= FilterLumpsByGameType(gameinfo.gametype, lumps, lumpsize, max); max -= FilterLumps(gameinfo.ConfigName, lumps, lumpsize, max); max -= FilterLumps(LumpFilterGroup, lumps, lumpsize, max); max -= FilterLumps(LumpFilterIWAD, lumps, lumpsize, max); @@ -406,6 +407,40 @@ int FResourceFile::FilterLumps(FString filtername, void *lumps, size_t lumpsize, return end - start; } +//========================================================================== +// +// FResourceFile :: FilterLumpsByGameType +// +// Matches any lumps that match "filter/game-/*". Includes +// inclusive gametypes like Raven. +// +//========================================================================== + +int FResourceFile::FilterLumpsByGameType(int type, void *lumps, size_t lumpsize, DWORD max) +{ + static const struct { int match; const char *name; } blanket[] = + { + { GAME_Raven, "game-Raven" }, + { GAME_DoomStrifeChex, "game-DoomStrifeChex" }, + { GAME_DoomChex, "game-DoomChex" }, + }; + if (type == 0) + { + return 0; + } + int count = 0; + for (int i = 0; i < countof(blanket); ++i) + { + if (type & blanket[i].match) + { + count += FilterLumps(blanket[i].name, lumps, lumpsize, max); + } + } + FString filter = "game-"; + filter += GameNames[type]; + return count + FilterLumps(filter, lumps, lumpsize, max); +} + //========================================================================== // // FResourceFile :: JunkLeftoverFilters diff --git a/src/resourcefiles/resourcefile.h b/src/resourcefiles/resourcefile.h index c62981ca7..e84967a24 100644 --- a/src/resourcefiles/resourcefile.h +++ b/src/resourcefiles/resourcefile.h @@ -72,6 +72,7 @@ private: DWORD FirstLump; int FilterLumps(FString filtername, void *lumps, size_t lumpsize, DWORD max); + int FilterLumpsByGameType(int gametype, 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); diff --git a/wadsrc/static/filter/doom/sndinfo.txt b/wadsrc/static/filter/game-doomchex/sndinfo.txt similarity index 99% rename from wadsrc/static/filter/doom/sndinfo.txt rename to wadsrc/static/filter/game-doomchex/sndinfo.txt index 6028b11f0..c103f493c 100644 --- a/wadsrc/static/filter/doom/sndinfo.txt +++ b/wadsrc/static/filter/game-doomchex/sndinfo.txt @@ -1,3 +1,4 @@ + /****************************************************************************/ /* */ /* DOOM SOUNDS */ diff --git a/wadsrc/static/filter/heretic/sndinfo.txt b/wadsrc/static/filter/game-heretic/sndinfo.txt similarity index 99% rename from wadsrc/static/filter/heretic/sndinfo.txt rename to wadsrc/static/filter/game-heretic/sndinfo.txt index cb3fe1e73..b9f1fd7c3 100644 --- a/wadsrc/static/filter/heretic/sndinfo.txt +++ b/wadsrc/static/filter/game-heretic/sndinfo.txt @@ -1,3 +1,4 @@ + /****************************************************************************/ /* */ /* HERETIC SOUNDS */ diff --git a/wadsrc/static/filter/hexen/sndinfo.txt b/wadsrc/static/filter/game-hexen/sndinfo.txt similarity index 99% rename from wadsrc/static/filter/hexen/sndinfo.txt rename to wadsrc/static/filter/game-hexen/sndinfo.txt index 85d7a75dd..a1169dcb9 100644 --- a/wadsrc/static/filter/hexen/sndinfo.txt +++ b/wadsrc/static/filter/game-hexen/sndinfo.txt @@ -1,3 +1,4 @@ + /****************************************************************************/ /* */ /* HEXEN SOUNDS */ diff --git a/wadsrc/static/filter/strife/acs/strfhelp.o b/wadsrc/static/filter/game-strife/acs/strfhelp.o similarity index 100% rename from wadsrc/static/filter/strife/acs/strfhelp.o rename to wadsrc/static/filter/game-strife/acs/strfhelp.o diff --git a/wadsrc/static/filter/strife/loadacs.txt b/wadsrc/static/filter/game-strife/loadacs.txt similarity index 100% rename from wadsrc/static/filter/strife/loadacs.txt rename to wadsrc/static/filter/game-strife/loadacs.txt diff --git a/wadsrc/static/filter/strife/sndinfo.txt b/wadsrc/static/filter/game-strife/sndinfo.txt similarity index 99% rename from wadsrc/static/filter/strife/sndinfo.txt rename to wadsrc/static/filter/game-strife/sndinfo.txt index 877bba50a..22f9b8356 100644 --- a/wadsrc/static/filter/strife/sndinfo.txt +++ b/wadsrc/static/filter/game-strife/sndinfo.txt @@ -1,3 +1,4 @@ + /****************************************************************************/ /* */ /* STRIFE SOUNDS */ From c36222d2ef6c61e5d1693130d6311ff90df41ac6 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sun, 5 Apr 2015 21:40:53 -0500 Subject: [PATCH 082/144] Externalized default key bindings --- src/c_bind.cpp | 208 +++--------------- src/c_bind.h | 7 - src/d_main.cpp | 2 + src/gameconfigfile.cpp | 70 +++--- src/gameconfigfile.h | 1 + wadsrc/static/defbinds.txt | 103 +++++++++ .../static/filter/game-heretic/defbinds.txt | 3 + wadsrc/static/filter/game-hexen/defbinds.txt | 12 + wadsrc/static/filter/game-strife/defbinds.txt | 11 + 9 files changed, 191 insertions(+), 226 deletions(-) create mode 100644 wadsrc/static/defbinds.txt create mode 100644 wadsrc/static/filter/game-heretic/defbinds.txt create mode 100644 wadsrc/static/filter/game-hexen/defbinds.txt create mode 100644 wadsrc/static/filter/game-strife/defbinds.txt diff --git a/src/c_bind.cpp b/src/c_bind.cpp index 1a62469bc..0231820dc 100644 --- a/src/c_bind.cpp +++ b/src/c_bind.cpp @@ -43,158 +43,11 @@ #include "configfile.h" #include "i_system.h" #include "d_event.h" +#include "w_wad.h" #include #include -/* Default keybindings for Doom (and all other games) - */ -static const FBinding DefBindings[] = -{ - { "`", "toggleconsole" }, - { "1", "slot 1" }, - { "2", "slot 2" }, - { "3", "slot 3" }, - { "4", "slot 4" }, - { "5", "slot 5" }, - { "6", "slot 6" }, - { "7", "slot 7" }, - { "8", "slot 8" }, - { "9", "slot 9" }, - { "0", "slot 0" }, - { "[", "invprev" }, - { "]", "invnext" }, - { "mwheelleft", "invprev" }, - { "mwheelright", "invnext" }, - { "enter", "invuse" }, - { "-", "sizedown" }, - { "=", "sizeup" }, - { "ctrl", "+attack" }, - { "alt", "+strafe" }, - { "shift", "+speed" }, - { "space", "+use" }, - { "rightarrow", "+right" }, - { "leftarrow", "+left" }, - { "uparrow", "+forward" }, - { "downarrow", "+back" }, - { ",", "+moveleft" }, - { ".", "+moveright" }, - { "mouse1", "+attack" }, - { "mouse2", "+strafe" }, - { "mouse3", "+forward" }, - { "mouse4", "+speed" }, - { "capslock", "toggle cl_run" }, - { "f1", "menu_help" }, - { "f2", "menu_save" }, - { "f3", "menu_load" }, - { "f4", "menu_options" }, - { "f5", "menu_display" }, - { "f6", "quicksave" }, - { "f7", "menu_endgame" }, - { "f8", "togglemessages" }, - { "f9", "quickload" }, - { "f11", "bumpgamma" }, - { "f10", "menu_quit" }, - { "tab", "togglemap" }, - { "pause", "pause" }, - { "sysrq", "screenshot" }, - { "t", "messagemode" }, - { "\\", "+showscores" }, - { "f12", "spynext" }, - { "mwheeldown", "weapnext" }, - { "mwheelup", "weapprev" }, - - // Generic joystick buttons - { "joy1", "+attack" }, - { "joy2", "+strafe" }, - { "joy3", "+speed" }, - { "joy4", "+use" }, - - // Xbox 360 / PS2 controllers - { "pad_a", "+use" }, - { "pad_y", "+jump" }, - { "rtrigger", "+attack" }, - { "ltrigger", "+altattack" }, - { "lshoulder", "weapprev" }, - { "rshoulder", "weapnext" }, - { "dpadleft", "invprev" }, - { "dpadright", "invnext" }, - { "dpaddown", "invuse" }, - { "dpadup", "togglemap" }, - { "pad_start", "pause" }, - { "pad_back", "menu_main" }, - { "lthumb", "crouch" }, - { NULL, NULL } -}; - -static const FBinding DefRavenBindings[] = -{ - { "pgup", "+moveup" }, - { "ins", "+movedown" }, - { "home", "land" }, - { "pgdn", "+lookup" }, - { "del", "+lookdown" }, - { "end", "centerview" }, - { NULL, NULL } -}; - -static const FBinding DefHereticBindings[] = -{ - { "backspace", "use ArtiTomeOfPower" }, - { NULL, NULL } -}; - -static const FBinding DefHexenBindings[] = -{ - { "/", "+jump" }, - { "backspace", "invuseall" }, - { "\\", "use ArtiHealth" }, - { "0", "useflechette" }, - { "9", "use ArtiBlastRadius" }, - { "8", "use ArtiTeleport" }, - { "7", "use ArtiTeleportOther" }, - { "6", "use ArtiPork" }, - { "5", "use ArtiInvulnerability2" }, - { "scroll", "+showscores" }, - { NULL, NULL } -}; - -static const FBinding DefStrifeBindings[] = -{ - { "a", "+jump" }, - { "w", "showpop 1" }, - { "backspace", "invdrop" }, - { "z", "showpop 3" }, - { "k", "showpop 2" }, - { "q", "invquery" }, - { NULL, NULL } - // not done - // h - use health -}; - -static const FBinding DefAutomapBindings[] = -{ - { "f", "am_togglefollow" }, - { "g", "am_togglegrid" }, - { "p", "am_toggletexture" }, - { "m", "am_setmark" }, - { "c", "am_clearmarks" }, - { "0", "am_gobig" }, - { "rightarrow", "+am_panright" }, - { "leftarrow", "+am_panleft" }, - { "uparrow", "+am_panup" }, - { "downarrow", "+am_pandown" }, - { "-", "+am_zoomout" }, - { "=", "+am_zoomin" }, - { "kp-", "+am_zoomout" }, - { "kp+", "+am_zoomin" }, - { "mwheelup", "am_zoom 1.2" }, - { "mwheeldown", "am_zoom -1.2" }, - { NULL, NULL } -}; - - - const char *KeyNames[NUM_KEYS] = { // This array is dependant on the particular keyboard input @@ -452,21 +305,6 @@ void FKeyBindings::DoBind (const char *key, const char *bind) // //============================================================================= -void FKeyBindings::SetBinds(const FBinding *binds) -{ - while (binds->Key) - { - DoBind (binds->Key, binds->Bind); - binds++; - } -} - -//============================================================================= -// -// -// -//============================================================================= - void FKeyBindings::UnbindAll () { for (int i = 0; i < NUM_KEYS; ++i) @@ -785,29 +623,37 @@ CCMD (rebind) void C_BindDefaults () { - Bindings.SetBinds (DefBindings); + int lump, lastlump = 0; - if (gameinfo.gametype & (GAME_Raven|GAME_Strife)) + while ((lump = Wads.FindLump("DEFBINDS", &lastlump)) != -1) { - Bindings.SetBinds (DefRavenBindings); - } + FScanner sc(lump); - if (gameinfo.gametype == GAME_Heretic) - { - Bindings.SetBinds (DefHereticBindings); - } + while (sc.GetString()) + { + FKeyBindings *dest = &Bindings; + int key; - if (gameinfo.gametype == GAME_Hexen) - { - Bindings.SetBinds (DefHexenBindings); + // bind destination is optional and is the same as the console command + if (sc.Compare("bind")) + { + sc.MustGetString(); + } + else if (sc.Compare("doublebind")) + { + dest = &DoubleBindings; + sc.MustGetString(); + } + else if (sc.Compare("mapbind")) + { + dest = &AutomapBindings; + sc.MustGetString(); + } + key = GetConfigKeyFromName(sc.String); + sc.MustGetString(); + dest->SetBind(key, sc.String); + } } - - if (gameinfo.gametype == GAME_Strife) - { - Bindings.SetBinds (DefStrifeBindings); - } - - AutomapBindings.SetBinds(DefAutomapBindings); } CCMD(binddefaults) diff --git a/src/c_bind.h b/src/c_bind.h index 4c9edb2bb..394d313c9 100644 --- a/src/c_bind.h +++ b/src/c_bind.h @@ -42,19 +42,12 @@ class FCommandLine; void C_NameKeys (char *str, int first, int second); -struct FBinding -{ - const char *Key; - const char *Bind; -}; - class FKeyBindings { FString Binds[NUM_KEYS]; public: void PerformBind(FCommandLine &argv, const char *msg); - void SetBinds(const FBinding *binds); bool DoKey(event_t *ev); void ArchiveBindings(FConfigFile *F, const char *matchcmd = NULL); int GetKeysForCommand (const char *cmd, int *first, int *second); diff --git a/src/d_main.cpp b/src/d_main.cpp index 930b0f629..5dc5c7a78 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2324,6 +2324,8 @@ void D_DoomMain (void) allwads.ShrinkToFit(); SetMapxxFlag(); + GameConfig->DoKeySetup(gameinfo.ConfigName); + // Now that wads are loaded, define mod-specific cvars. ParseCVarInfo(); diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index deb870774..6cfd6456b 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -244,9 +244,6 @@ void FGameConfigFile::MigrateStub (const char *pathname, FConfigFile *config, vo void FGameConfigFile::MigrateOldConfig () { - // Set default key bindings. These will be overridden - // by the bindings in the config file if it exists. - C_SetDefaultBindings (); } void FGameConfigFile::DoGlobalSetup () @@ -400,41 +397,6 @@ void FGameConfigFile::DoGameSetup (const char *gamename) ReadCVars (0); } - if (!bMigrating) - { - C_SetDefaultBindings (); - } - - strncpy (subsection, "Bindings", sublen); - if (SetSection (section)) - { - Bindings.UnbindAll(); - while (NextInSection (key, value)) - { - Bindings.DoBind (key, value); - } - } - - strncpy (subsection, "DoubleBindings", sublen); - if (SetSection (section)) - { - DoubleBindings.UnbindAll(); - while (NextInSection (key, value)) - { - DoubleBindings.DoBind (key, value); - } - } - - strncpy (subsection, "AutomapBindings", sublen); - if (SetSection (section)) - { - AutomapBindings.UnbindAll(); - while (NextInSection (key, value)) - { - AutomapBindings.DoBind (key, value); - } - } - strncpy (subsection, "ConsoleAliases", sublen); if (SetSection (section)) { @@ -455,6 +417,38 @@ void FGameConfigFile::DoGameSetup (const char *gamename) OkayToWrite = true; } +// Moved from DoGameSetup so that it can happen after wads are loaded +void FGameConfigFile::DoKeySetup(const char *gamename) +{ + static const struct { const char *label; FKeyBindings *bindings; } binders[] = + { + { "Bindings", &Bindings }, + { "DoubleBindings", &DoubleBindings }, + { "AutomapBindings", &AutomapBindings }, + }; + const char *key, *value; + + sublen = countof(section) - 1 - mysnprintf(section, countof(section), "%s.", gamename); + subsection = section + countof(section) - sublen - 1; + section[countof(section) - 1] = '\0'; + + C_SetDefaultBindings (); + + for (int i = 0; i < countof(binders); ++i) + { + strncpy(subsection, binders[i].label, sublen); + if (SetSection(section)) + { + FKeyBindings *bindings = binders[i].bindings; + bindings->UnbindAll(); + while (NextInSection(key, value)) + { + bindings->DoBind(key, value); + } + } + } +} + // Like DoGameSetup(), but for mod-specific cvars. // Called after CVARINFO has been parsed. void FGameConfigFile::DoModSetup(const char *gamename) diff --git a/src/gameconfigfile.h b/src/gameconfigfile.h index 74376b583..55867eaf8 100644 --- a/src/gameconfigfile.h +++ b/src/gameconfigfile.h @@ -47,6 +47,7 @@ public: void DoGlobalSetup (); void DoGameSetup (const char *gamename); + void DoKeySetup (const char *gamename); void DoModSetup (const char *gamename); void ArchiveGlobalData (); void ArchiveGameData (const char *gamename); diff --git a/wadsrc/static/defbinds.txt b/wadsrc/static/defbinds.txt new file mode 100644 index 000000000..420d22432 --- /dev/null +++ b/wadsrc/static/defbinds.txt @@ -0,0 +1,103 @@ +/* Default keybindings for all games */ + +` toggleconsole +1 "slot 1" +2 "slot 2" +3 "slot 3" +4 "slot 4" +5 "slot 5" +6 "slot 6" +7 "slot 7" +8 "slot 8" +9 "slot 9" +0 "slot 0" +[ invprev +] invnext +mwheelleft invprev +mwheelright invnext +enter invuse +- sizedown += sizeup +ctrl +attack +alt +strafe +shift +speed +space +use +rightarrow +right +leftarrow +left +uparrow +forward +downarrow +back +, +moveleft +. +moveright +mouse1 +attack +mouse2 +strafe +mouse3 +forward +mouse4 +speed +capslock "toggle cl_run" +f1 menu_help +f2 menu_save +f3 menu_load +f4 menu_options +f5 menu_display +f6 quicksave +f7 menu_endgame +f8 togglemessages +f9 quickload +f11 bumpgamma +f10 menu_quit +tab togglemap +pause pause +sysrq screenshot +t messagemode +\ +showscores +f12 spynext +mwheeldown weapnext +mwheelup weapprev + +// Originally just for Heretic, Hexen, and Strife. +// I can't see why they shouldn't be for Doom or Chex either. +pgup +moveup +ins +movedown +home land +pgdn +lookup +del +lookdown +end centerview + +// Generic joystick buttons +joy1 +attack +joy2 +strafe +joy3 +speed +joy4 +use + +// Xbox 360 / PS2 controllers +pad_a +use +pad_y +jump +rtrigger +attack +ltrigger +altattack +lshoulder weapprev +rshoulder weapnext +dpadleft invprev +dpadright invnext +dpaddown invuse +dpadup togglemap +pad_start pause +pad_back menu_main +lthumb crouch + + +/* Default automap bindings */ +mapbind f am_togglefollow +mapbind g am_togglegrid +mapbind p am_toggletexture +mapbind m am_setmark +mapbind c am_clearmarks +mapbind 0 am_gobig +mapbind rightarrow +am_panright +mapbind leftarrow +am_panleft +mapbind uparrow +am_panup +mapbind downarrow +am_pandown +mapbind - +am_zoomout +mapbind = +am_zoomin +mapbind kp- +am_zoomout +mapbind kp+ +am_zoomin +mapbind mwheelup "am_zoom 1.2" +mapbind mwheeldown "am_zoom -1.2" diff --git a/wadsrc/static/filter/game-heretic/defbinds.txt b/wadsrc/static/filter/game-heretic/defbinds.txt new file mode 100644 index 000000000..ed820a378 --- /dev/null +++ b/wadsrc/static/filter/game-heretic/defbinds.txt @@ -0,0 +1,3 @@ +/* Default keybindings for Heretic */ + +backspace "use ArtiTomeOfPower" \ No newline at end of file diff --git a/wadsrc/static/filter/game-hexen/defbinds.txt b/wadsrc/static/filter/game-hexen/defbinds.txt new file mode 100644 index 000000000..58167f57e --- /dev/null +++ b/wadsrc/static/filter/game-hexen/defbinds.txt @@ -0,0 +1,12 @@ +/* Default keybindings for Hexen */ + +/ +jump +backspace invuseall +\ "use ArtiHealth" +0 useflechette +9 "use ArtiBlastRadius" +8 "use ArtiTeleport" +7 "use ArtiTeleportOther" +6 "use ArtiPork" +5 "use ArtiInvulnerability2" +scroll +showscores \ No newline at end of file diff --git a/wadsrc/static/filter/game-strife/defbinds.txt b/wadsrc/static/filter/game-strife/defbinds.txt new file mode 100644 index 000000000..9370896a0 --- /dev/null +++ b/wadsrc/static/filter/game-strife/defbinds.txt @@ -0,0 +1,11 @@ +/* Default keybindings for Strife */ + +a +jump +w "showpop 1" +backspace invdrop +z "showpop 3" +k "showpop 2" +q invquery + +; not done +; h - use health From b300cfaf62e60aef1b48548c406f46bbb4edaecd Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sun, 5 Apr 2015 21:56:00 -0500 Subject: [PATCH 083/144] Remove old pre-INI config migration code - As if any of this matters now. It's not the 90s anymore. --- src/configfile.cpp | 16 ++-------- src/configfile.h | 5 ++- src/gameconfigfile.cpp | 69 +++++++----------------------------------- src/gameconfigfile.h | 4 --- 4 files changed, 16 insertions(+), 78 deletions(-) diff --git a/src/configfile.cpp b/src/configfile.cpp index 177c019fb..8792175f4 100644 --- a/src/configfile.cpp +++ b/src/configfile.cpp @@ -66,15 +66,13 @@ FConfigFile::FConfigFile () // //==================================================================== -FConfigFile::FConfigFile (const char *pathname, - void (*nosechandler)(const char *pathname, FConfigFile *config, void *userdata), - void *userdata) +FConfigFile::FConfigFile (const char *pathname) { Sections = CurrentSection = NULL; LastSectionPtr = &Sections; CurrentEntry = NULL; ChangePathName (pathname); - LoadConfigFile (nosechandler, userdata); + LoadConfigFile (); OkayToWrite = true; FileExisted = true; } @@ -591,7 +589,7 @@ FConfigFile::FConfigEntry *FConfigFile::NewConfigEntry ( // //==================================================================== -void FConfigFile::LoadConfigFile (void (*nosechandler)(const char *pathname, FConfigFile *config, void *userdata), void *userdata) +void FConfigFile::LoadConfigFile () { FILE *file = fopen (PathName, "r"); bool succ; @@ -605,14 +603,6 @@ void FConfigFile::LoadConfigFile (void (*nosechandler)(const char *pathname, FCo succ = ReadConfig (file); fclose (file); FileExisted = succ; - - if (!succ) - { // First valid line did not define a section - if (nosechandler != NULL) - { - nosechandler (PathName, this, userdata); - } - } } //==================================================================== diff --git a/src/configfile.h b/src/configfile.h index 25c366f01..34ab9d56b 100644 --- a/src/configfile.h +++ b/src/configfile.h @@ -41,8 +41,7 @@ class FConfigFile { public: FConfigFile (); - FConfigFile (const char *pathname, - void (*nosechandler)(const char *pathname, FConfigFile *config, void *userdata)=0, void *userdata=NULL); + FConfigFile (const char *pathname); FConfigFile (const FConfigFile &other); virtual ~FConfigFile (); @@ -70,7 +69,7 @@ public: const char *GetPathName () const { return PathName.GetChars(); } void ChangePathName (const char *path); - void LoadConfigFile (void (*nosechandler)(const char *pathname, FConfigFile *config, void *userdata), void *userdata); + void LoadConfigFile (); bool WriteConfigFile () const; protected: diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index 6cfd6456b..7e0ddc6a1 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -83,16 +83,10 @@ FGameConfigFile::FGameConfigFile () FString pathname; OkayToWrite = false; // Do not allow saving of the config before DoGameSetup() - bMigrating = false; bModSetup = false; pathname = GetConfigPath (true); ChangePathName (pathname); - LoadConfigFile (MigrateStub, NULL); - - if (!HaveSections ()) - { // Config file not found; try the old one - MigrateOldConfig (); - } + LoadConfigFile (); // If zdoom.ini was read from the program directory, switch // to the user directory now. If it was read from the user @@ -237,15 +231,6 @@ void FGameConfigFile::WriteCommentHeader (FILE *file) const fprintf (file, "# This file was generated by " GAMENAME " %s on %s\n", GetVersionString(), myasctime()); } -void FGameConfigFile::MigrateStub (const char *pathname, FConfigFile *config, void *userdata) -{ - static_cast(config)->bMigrating = true; -} - -void FGameConfigFile::MigrateOldConfig () -{ -} - void FGameConfigFile::DoGlobalSetup () { if (SetSection ("GlobalSettings.Unknown")) @@ -358,10 +343,6 @@ void FGameConfigFile::DoGameSetup (const char *gamename) const char *key; const char *value; - if (bMigrating) - { - MigrateOldConfig (); - } sublen = countof(section) - 1 - mysnprintf (section, countof(section), "%s.", gamename); subsection = section + countof(section) - sublen - 1; section[countof(section) - 1] = '\0'; @@ -622,41 +603,20 @@ void FGameConfigFile::AddAutoexec (DArgs *list, const char *game) mysnprintf (section, countof(section), "%s.AutoExec", game); - if (bMigrating) + // If .AutoExec section does not exist, create it + // with a default autoexec.cfg file present. + CreateStandardAutoExec(section, false); + // Run any files listed in the .AutoExec section + if (!SectionIsEmpty()) { - FBaseCVar *autoexec = FindCVar ("autoexec", NULL); - - if (autoexec != NULL) + while (NextInSection (key, value)) { - UCVarValue val; - char *path; - - val = autoexec->GetGenericRep (CVAR_String); - path = copystring (val.String); - delete autoexec; - SetSection (section, true); - SetValueForKey ("Path", path); - list->AppendArg (path); - delete[] path; - } - } - else - { - // If .AutoExec section does not exist, create it - // with a default autoexec.cfg file present. - CreateStandardAutoExec(section, false); - // Run any files listed in the .AutoExec section - if (!SectionIsEmpty()) - { - while (NextInSection (key, value)) + if (stricmp (key, "Path") == 0 && *value != '\0') { - if (stricmp (key, "Path") == 0 && *value != '\0') + FString expanded_path = ExpandEnvVars(value); + if (FileExists(expanded_path)) { - FString expanded_path = ExpandEnvVars(value); - if (FileExists(expanded_path)) - { - list->AppendArg (ExpandEnvVars(value)); - } + list->AppendArg (ExpandEnvVars(value)); } } } @@ -667,13 +627,6 @@ void FGameConfigFile::SetRavenDefaults (bool isHexen) { UCVarValue val; - if (bMigrating) - { - con_centernotify.ResetToDefault (); - msg0color.ResetToDefault (); - color.ResetToDefault (); - } - val.Bool = false; wi_percents.SetGenericRepDefault (val, CVAR_Bool); val.Bool = true; diff --git a/src/gameconfigfile.h b/src/gameconfigfile.h index 55867eaf8..57956f7cd 100644 --- a/src/gameconfigfile.h +++ b/src/gameconfigfile.h @@ -60,13 +60,9 @@ protected: void CreateStandardAutoExec (const char *section, bool start); private: - static void MigrateStub (const char *pathname, FConfigFile *config, void *userdata); - - void MigrateOldConfig (); void SetRavenDefaults (bool isHexen); void ReadCVars (DWORD flags); - bool bMigrating; bool bModSetup; char section[64]; From cac634567bb368d3b19e797175443574ece1dbb4 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 10:51:28 +0200 Subject: [PATCH 084/144] - use a proper FString to hold the name of config sections instead of a buffer tacked onto the actual structure. This is necessary if we want to be able to rename a section. --- src/configfile.cpp | 16 ++++++---------- src/configfile.h | 3 ++- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/configfile.cpp b/src/configfile.cpp index 8792175f4..9a1f7bd4d 100644 --- a/src/configfile.cpp +++ b/src/configfile.cpp @@ -138,7 +138,7 @@ FConfigFile &FConfigFile::operator = (const FConfigFile &other) while (fromsection != NULL) { fromentry = fromsection->RootEntry; - tosection = NewConfigSection (fromsection->Name); + tosection = NewConfigSection (fromsection->SectionName); while (fromentry != NULL) { NewConfigEntry (tosection, fromentry->Key, fromentry->Value); @@ -309,7 +309,7 @@ const char *FConfigFile::GetCurrentSection () const { if (CurrentSection != NULL) { - return CurrentSection->Name; + return CurrentSection->SectionName.GetChars(); } return NULL; } @@ -506,7 +506,7 @@ FConfigFile::FConfigSection *FConfigFile::FindSection (const char *name) const { FConfigSection *section = Sections; - while (section != NULL && stricmp (section->Name, name) != 0) + while (section != NULL && section->SectionName.CompareNoCase(name) != 0) { section = section->Next; } @@ -540,19 +540,15 @@ FConfigFile::FConfigEntry *FConfigFile::FindEntry ( FConfigFile::FConfigSection *FConfigFile::NewConfigSection (const char *name) { FConfigSection *section; - char *memblock; section = FindSection (name); if (section == NULL) { - size_t namelen = strlen (name); - memblock = new char[sizeof(*section)+namelen]; - section = ::new(memblock) FConfigSection; + section = new FConfigSection; section->RootEntry = NULL; section->LastEntryPtr = §ion->RootEntry; section->Next = NULL; - memcpy (section->Name, name, namelen); - section->Name[namelen] = 0; + section->SectionName = name; *LastSectionPtr = section; LastSectionPtr = §ion->Next; } @@ -777,7 +773,7 @@ bool FConfigFile::WriteConfigFile () const { fputs (section->Note.GetChars(), file); } - fprintf (file, "[%s]\n", section->Name); + fprintf (file, "[%s]\n", section->SectionName.GetChars()); while (entry != NULL) { if (strpbrk(entry->Value, "\r\n") == NULL) diff --git a/src/configfile.h b/src/configfile.h index 34ab9d56b..31943ccb6 100644 --- a/src/configfile.h +++ b/src/configfile.h @@ -93,11 +93,12 @@ private: }; struct FConfigSection { + FString SectionName; FConfigEntry *RootEntry; FConfigEntry **LastEntryPtr; FConfigSection *Next; FString Note; - char Name[1]; // + length of name + //char Name[1]; // + length of name }; FConfigSection *Sections; From 3114a26bc8aa7984b92db3da9ac311cd8e7b0567 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 11:21:28 +0200 Subject: [PATCH 085/144] - allow renaming of config sections and added migration code to rename the old autoload sections to the more flexible naming system that's planned. --- src/configfile.cpp | 16 ++++++++++++++++ src/configfile.h | 1 + src/gameconfigfile.cpp | 20 ++++++++++++++++++++ src/version.h | 2 +- 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/configfile.cpp b/src/configfile.cpp index 9a1f7bd4d..e64005fc4 100644 --- a/src/configfile.cpp +++ b/src/configfile.cpp @@ -513,6 +513,22 @@ FConfigFile::FConfigSection *FConfigFile::FindSection (const char *name) const return section; } +//==================================================================== +// +// FConfigFile :: RenameSection +// +//==================================================================== + +void FConfigFile::RenameSection (const char *oldname, const char *newname) const +{ + FConfigSection *section = FindSection(oldname); + + if (section != NULL) + { + section->SectionName = newname; + } +} + //==================================================================== // // FConfigFile :: FindEntry diff --git a/src/configfile.h b/src/configfile.h index 31943ccb6..e125351dc 100644 --- a/src/configfile.h +++ b/src/configfile.h @@ -78,6 +78,7 @@ protected: virtual char *ReadLine (char *string, int n, void *file) const; bool ReadConfig (void *file); static const char *GenerateEndTag(const char *value); + void RenameSection(const char *oldname, const char *newname) const; bool OkayToWrite; bool FileExisted; diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index 7e0ddc6a1..9121e79d6 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -334,6 +334,26 @@ void FGameConfigFile::DoGlobalSetup () SetValueForKey ("5", "use ArtiInvulnerability2"); } } + if (last < 211) + { + //RenameSection("Hacx2.Autoload", "hacx.2_0.Autoload"); + //RenameSection("Hacx12.Autoload", "hacx.1_2.Autoload"); + //RenameSection("Hexen1.Autoload", "hexen.hexen.Autoload"); + RenameSection("Chex3.Autoload", "chex.3.Autoload"); + RenameSection("Chex1.Autoload", "chex.1.Autoload"); + RenameSection("HexenDK.Autoload", "hexen.deathkings.Autoload"); + RenameSection("HereticSR.Autoload", "heretic.shadow.Autoload"); + RenameSection("FreeDM.Autoload", "doom.freedoom.freedm.Autoload"); + RenameSection("Freedoom2.Autoload", "doom.freedoom.phase2.Autoload"); + RenameSection("Freedoom1.Autoload", "doom.freedoom.phase1.Autoload"); + RenameSection("DoomBFG.Autoload", "doom.doom1.bfg.Autoload"); + RenameSection("DoomU.Autoload", "doom.doom1.ultimate.Autoload"); + RenameSection("Doom1.Autoload", "doom.doom1.registered.Autoload"); + RenameSection("TNT.Autoload", "doom.doom2.tnt.Autoload"); + RenameSection("Plutonia.Autoload", "doom.doom2.plutonia.Autoload"); + RenameSection("Doom2BFG.Autoload", "doom.doom2.bfg.Autoload"); + RenameSection("Doom2.Autoload", "doom.doom2.commercial.Autoload"); + } } } } diff --git a/src/version.h b/src/version.h index cbbb8bd21..f45f58b2f 100644 --- a/src/version.h +++ b/src/version.h @@ -56,7 +56,7 @@ const char *GetVersionString(); // Version stored in the ini's [LastRun] section. // Bump it if you made some configuration change that you want to // be able to migrate in FGameConfigFile::DoGlobalSetup(). -#define LASTRUNVERSION "210" +#define LASTRUNVERSION "211" // Protocol version used in demos. // Bump it if you change existing DEM_ commands or add new ones. From 3241b1d3db2d9ce75f303bbf15af3eb3cb79b12b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 11:31:08 +0200 Subject: [PATCH 086/144] - add new config section names to iwadinfo.txt --- wadsrc/static/iwadinfo.txt | 53 +++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/wadsrc/static/iwadinfo.txt b/wadsrc/static/iwadinfo.txt index 0fcdd9b87..ceceafd2b 100644 --- a/wadsrc/static/iwadinfo.txt +++ b/wadsrc/static/iwadinfo.txt @@ -3,6 +3,7 @@ IWad { Name = "The Adventures of Square" + Autoname = "square.square" Game = "Doom" Config = "Square" MustContain = "SQU-IWAD", "E1A1" @@ -12,6 +13,7 @@ IWad IWad { Name = "The Adventures of Square (Square-ware)" + Autoname = "square.squareware" Game = "Doom" Config = "Square" MustContain = "SQU-SWE1", "E1A1" @@ -21,6 +23,7 @@ IWad IWad { Name = "Harmony" + Autoname = "harmony" Game = "Doom" Config = "Harmony" Mapinfo = "mapinfo/hacxharm.txt" @@ -33,7 +36,7 @@ IWad Name = "Hacx 2.0" Game = "Doom" Config = "Hacx" - Autoname = "Hacx2" + Autoname = "hacx.2_0" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-E" BannerColors = "ff ff ff", "00 88 22" @@ -44,7 +47,7 @@ IWad Name = "Hacx: Twitch'n Kill" Game = "Doom" Config = "Hacx" - Autoname = "Hacx12" + Autoname = "hacx.1_2" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-R" BannerColors = "00 00 a8", "a8 a8 a8" @@ -53,6 +56,7 @@ IWad IWad { Name = "Action Doom 2: Urban Brawl" + Autoname = "urbanbrawl" Game = "Doom" Config = "UrbanBrawl" Mapinfo = "mapinfo/urbanbrawl.txt" @@ -63,7 +67,7 @@ IWad IWad { Name = "Chex(R) Quest 3" - Autoname = "Chex3" + Autoname = "chex.3" Game = "Chex" Config = "Chex" Mapinfo = "mapinfo/chex.txt" @@ -75,7 +79,7 @@ IWad IWad { Name = "Chex(R) Quest" - Autoname = "Chex1" + Autoname = "chex.1" Game = "Chex" Config = "Chex" Mapinfo = "mapinfo/chex.txt" @@ -86,6 +90,7 @@ IWad IWad { Name = "Strife: Quest for the Sigil" + Autoname = "strife" Game = "Strife" Config = "Strife" Mapinfo = "mapinfo/strife.txt" @@ -99,7 +104,7 @@ IWad Name = "Strife: Teaser (New Version)" Game = "Strife" Config = "Strife" - Autoname = "Strifeteaser2" + Autoname = "strifeteaser2" Mapinfo = "mapinfo/strife.txt" Compatibility = "Shareware", "Teaser2" MustContain = "MAP33", "ENDSTRF", "INVCURS" @@ -111,7 +116,7 @@ IWad Name = "Strife: Teaser (Old Version)" Game = "Strife" Config = "Strife" - Autoname = "Strifeteaser1" + Autoname = "strifeteaser1" Mapinfo = "mapinfo/strife.txt" Compatibility = "Shareware" MustContain = "MAP33", "ENDSTRF" @@ -123,7 +128,7 @@ IWad Name = "Hexen: Beyond Heretic" Game = "Hexen" Config = "Hexen" - Autoname = "Hexen1" + Autoname = "hexen.hexen" Mapinfo = "mapinfo/hexen.txt" Compatibility = "Poly1" MustContain = "TITLE", "MAP01", "MAP40", "WINNOWR" @@ -133,7 +138,7 @@ IWad IWad { Name = "Hexen: Deathkings of the Dark Citadel" - Autoname = "HexenDK" + Autoname = "hexen.deathkings" Game = "Hexen" Config = "Hexen" Mapinfo = "mapinfo/hexen.txt" @@ -157,7 +162,7 @@ IWad IWad { Name = "Blasphemer" - Autoname = "Blasphemer" + Autoname = "blasphemer" Game = "Heretic" Config = "Heretic" Mapinfo = "mapinfo/heretic.txt" @@ -168,7 +173,7 @@ IWad IWad { Name = "Heretic: Shadow of the Serpent Riders" - Autoname = "HereticSR" + Autoname = "heretic.shadow" Game = "Heretic" Config = "Heretic" Mapinfo = "mapinfo/heretic.txt" @@ -182,7 +187,7 @@ IWad Name = "Heretic" Game = "Heretic" Config = "Heretic" - Autoname = "Heretic1" + Autoname = "heretic.heretic" Mapinfo = "mapinfo/heretic.txt" MustContain = "E1M1", "E2M1", "TITLE", "MUS_E1M1" BannerColors = "fc fc 00", "a8 00 00" @@ -202,8 +207,7 @@ IWad IWad { Name = "FreeDM" - Autoname = "FreeDM" - Group = "Freedoom" + Autoname = "doom.freedoom.freedm" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/doom2.txt" @@ -214,8 +218,7 @@ IWad IWad { Name = "Freedoom: Phase 2" - Autoname = "Freedoom2" - Group = "Freedoom" + Autoname = "doom.freedoom.phase2" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/doom2.txt" @@ -226,8 +229,7 @@ IWad IWad { Name = "Freedoom: Phase 1" - Autoname = "Freedoom1" - Group = "Freedoom" + Autoname = "doom.freedoom.phase1" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/doom1.txt" @@ -238,8 +240,7 @@ IWad IWad { Name = "Freedoom: Demo Version" - Autoname = "Freedoom1" - Group = "Freedoom" + Autoname = "doom.freedoom.demo" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/doom1.txt" @@ -250,7 +251,7 @@ IWad IWad { Name = "DOOM: BFG Edition" - Autoname = "DoomBFG" + Autoname = "doom.doom1.bfg" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/ultdoom.txt" @@ -265,7 +266,7 @@ IWad IWad { Name = "The Ultimate DOOM" - Autoname = "DoomU" + Autoname = "doom.doom1.ultimate" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/ultdoom.txt" @@ -279,7 +280,7 @@ IWad IWad { Name = "DOOM Registered" - Autoname = "Doom1" + Autoname = "doom.doom1.registered" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/doom1.txt" @@ -304,7 +305,7 @@ IWad IWad { Name = "Final Doom: TNT - Evilution" - Autoname = "TNT" + Autoname = "doom.doom2.tnt" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/tnt.txt" @@ -316,7 +317,7 @@ IWad IWad { Name = "Final Doom: Plutonia Experiment" - Autoname = "Plutonia" + Autoname = "doom.doom2.plutonia" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/plutonia.txt" @@ -328,7 +329,7 @@ IWad IWad { Name = "DOOM 2: BFG Edition" - Autoname = "Doom2BFG" + Autoname = "doom.doom2.bfg" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/doom2bfg.txt" @@ -342,7 +343,7 @@ IWad IWad { Name = "DOOM 2: Hell on Earth" - Autoname = "Doom2" + Autoname = "doom.doom2.commercial" Game = "Doom" Config = "Doom" Mapinfo = "mapinfo/doom2.txt" From 258822ef3bab753113eec96c6196f0fd2dc69a7b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 11:57:12 +0200 Subject: [PATCH 087/144] - redid autoload handler and resource file filtering to use the newly defined method with multi-part names. As a result the old 'Group' property could be removed and all other means to get a section name were disabled. As an example, if the code gets 'doom.doom2.commercial' it will use the following sections in this order: global.autoload doom.autoload doom.doom2.autoload doom.doom2.commercial.autoload. --- src/d_iwad.cpp | 6 ------ src/d_main.cpp | 28 ++++++++-------------------- src/d_main.h | 1 - src/doomstat.cpp | 2 +- src/doomstat.h | 2 +- src/gameconfigfile.cpp | 5 ++--- src/resourcefiles/resourcefile.cpp | 13 ++++++++++--- 7 files changed, 22 insertions(+), 35 deletions(-) diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 4a46a93cd..e09baa26d 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -138,12 +138,6 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize) sc.MustGetString(); iwad->Autoname = sc.String; } - else if (sc.Compare("Group")) - { - sc.MustGetStringName("="); - sc.MustGetString(); - iwad->Group = sc.String; - } else if (sc.Compare("Config")) { sc.MustGetStringName("="); diff --git a/src/d_main.cpp b/src/d_main.cpp index 5dc5c7a78..78d12e651 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1990,10 +1990,9 @@ static void D_DoomInit() // //========================================================================== -static void AddAutoloadFiles(const char *group, const char *autoname) +static void AddAutoloadFiles(const char *autoname) { - LumpFilterGroup = group; - LumpFilterIWAD = autoname; + LumpFilterIWAD.Format("%s.", autoname); // The '.' is appened to simplify parsing the string if (!(gameinfo.flags & GI_SHAREWARE) && !Args->CheckParm("-noautoload")) { @@ -2025,25 +2024,14 @@ static void AddAutoloadFiles(const char *group, const char *autoname) // Add common (global) wads D_AddConfigWads (allwads, "Global.Autoload"); - // Add game-specific wads - file = gameinfo.ConfigName; - file += ".Autoload"; - D_AddConfigWads (allwads, file); + long len; + int lastpos = -1; - // Add group-specific wads - if (group != NULL && group[0] != 0) - { - file = group; - file += ".Autoload"; - D_AddConfigWads(allwads, file); - } - - // Add IWAD-specific wads - if (autoname != NULL && autoname[0] != 0) + while ((len = LumpFilterIWAD.IndexOf('.', lastpos+1)) > 0) { - file = autoname; - file += ".Autoload"; + file = LumpFilterIWAD.Left(len) + ".Autoload"; D_AddConfigWads(allwads, file); + lastpos = len; } } } @@ -2294,7 +2282,7 @@ void D_DoomMain (void) FBaseCVar::DisableCallbacks(); GameConfig->DoGameSetup (gameinfo.ConfigName); - AddAutoloadFiles(iwad_info->Group, iwad_info->Autoname); + AddAutoloadFiles(iwad_info->Autoname); // Run automatically executed files execFiles = new DArgs; diff --git a/src/d_main.h b/src/d_main.h index dd2ffc409..e4641c41d 100644 --- a/src/d_main.h +++ b/src/d_main.h @@ -75,7 +75,6 @@ struct FIWADInfo { FString Name; // Title banner text for this IWAD FString Autoname; // Name of autoload ini section for this IWAD - FString Group; // Groupname for this IWAD FString Configname; // Name of config section for this IWAD FString Required; // Requires another IWAD DWORD FgColor; // Foreground color for title banner diff --git a/src/doomstat.cpp b/src/doomstat.cpp index 697ef3afe..2ec72db9d 100644 --- a/src/doomstat.cpp +++ b/src/doomstat.cpp @@ -69,4 +69,4 @@ int SinglePlayerClass[MAXPLAYERS]; bool ToggleFullscreen; int BorderTopRefresh; -FString LumpFilterGroup, LumpFilterIWAD; +FString LumpFilterIWAD; diff --git a/src/doomstat.h b/src/doomstat.h index d7f3796ac..835ef73fb 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -251,6 +251,6 @@ 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; +extern FString LumpFilterIWAD; #endif diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index 9121e79d6..e17a3e127 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -163,6 +163,7 @@ FGameConfigFile::FGameConfigFile () // Create auto-load sections, so users know what's available. // Note that this totem pole is the reverse of the order that // they will appear in the file. +#if 0 CreateSectionAtStart("Harmony.Autoload"); CreateSectionAtStart("UrbanBrawl.Autoload"); CreateSectionAtStart("Chex3.Autoload"); @@ -185,6 +186,7 @@ FGameConfigFile::FGameConfigFile () CreateSectionAtStart("DoomU.Autoload"); CreateSectionAtStart("Doom1.Autoload"); CreateSectionAtStart("Doom.Autoload"); +#endif CreateSectionAtStart("Global.Autoload"); // The same goes for auto-exec files. @@ -336,9 +338,6 @@ void FGameConfigFile::DoGlobalSetup () } if (last < 211) { - //RenameSection("Hacx2.Autoload", "hacx.2_0.Autoload"); - //RenameSection("Hacx12.Autoload", "hacx.1_2.Autoload"); - //RenameSection("Hexen1.Autoload", "hexen.hexen.Autoload"); RenameSection("Chex3.Autoload", "chex.3.Autoload"); RenameSection("Chex1.Autoload", "chex.1.Autoload"); RenameSection("HexenDK.Autoload", "hexen.deathkings.Autoload"); diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index d5ad659af..e5c12b0ef 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -345,9 +345,16 @@ void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize) // each one so that we don't risk refiltering already filtered lumps. DWORD max = NumLumps; max -= FilterLumpsByGameType(gameinfo.gametype, lumps, lumpsize, max); - max -= FilterLumps(gameinfo.ConfigName, lumps, lumpsize, max); - max -= FilterLumps(LumpFilterGroup, lumps, lumpsize, max); - max -= FilterLumps(LumpFilterIWAD, lumps, lumpsize, max); + + long len; + int lastpos = -1; + FString file; + + while ((len = LumpFilterIWAD.IndexOf('.', lastpos+1)) > 0) + { + max -= FilterLumps(LumpFilterIWAD.Left(len), lumps, lumpsize, max); + lastpos = len; + } JunkLeftoverFilters(lumps, lumpsize, max); } From dfda74ffe3496997caef6732fd302bb52eb683ac Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 13:52:08 +0200 Subject: [PATCH 088/144] - automatically create autoload section based on IWADINFO. This has an important implication: Previously the config was loaded before IWADINFO so in order to allow the config to access the data this had to be switched around. This means that zdoom.pk3 will not be looked for in the global IWAD search paths anymore, but since it shouldn't be there to begin with it should be an acceptable compromise. --- src/d_iwad.cpp | 1 - src/d_main.cpp | 24 +++++++++++------ src/d_main.h | 16 +++++++++--- src/gameconfigfile.cpp | 58 ++++++++++++++++++++++++------------------ src/gameconfigfile.h | 3 ++- src/m_misc.cpp | 4 +-- src/m_misc.h | 3 ++- 7 files changed, 68 insertions(+), 41 deletions(-) diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index e09baa26d..7574347bc 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -387,7 +387,6 @@ int FIWadManager::IdentifyVersion (TArray &wadfiles, const char *iwad, bool iwadparmfound = false; FString custwad; - ParseIWadInfos(zdoom_wad); wads.Resize(mIWadNames.Size()); foundwads.Resize(mIWads.Size()); memset(&foundwads[0], 0, foundwads.Size() * sizeof(foundwads[0])); diff --git a/src/d_main.cpp b/src/d_main.cpp index 78d12e651..5f4f09d4d 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1978,10 +1978,6 @@ static void D_DoomInit() } FRandom::StaticClearRandom (); - - Printf ("M_LoadDefaults: Load system defaults.\n"); - M_LoadDefaults (); // load before initing other systems - } //========================================================================== @@ -2203,7 +2199,8 @@ void D_DoomMain (void) DArgs *execFiles; TArray pwads; FString *args; - int argcount; + int argcount; + FIWadManager *iwad_man; // +logfile gets checked too late to catch the full startup log in the logfile so do some extra check for it here. FString logfile = Args->TakeValue("+logfile"); @@ -2233,8 +2230,6 @@ void D_DoomMain (void) } D_DoomInit(); - PClass::StaticInit (); - atterm(FinalGC); // [RH] Make sure zdoom.pk3 is always loaded, // as it contains magic stuff we need. @@ -2246,6 +2241,14 @@ void D_DoomMain (void) } FString basewad = wad; + iwad_man = new FIWadManager; + iwad_man->ParseIWadInfos(basewad); + + Printf ("M_LoadDefaults: Load system defaults.\n"); + M_LoadDefaults (iwad_man); // load before initing other systems + + PClass::StaticInit (); + atterm(FinalGC); // reinit from here @@ -2267,7 +2270,11 @@ void D_DoomMain (void) // restart is initiated without a defined IWAD assume for now that it's not going to change. if (iwad.IsEmpty()) iwad = lastIWAD; - FIWadManager *iwad_man = new FIWadManager; + if (iwad_man == NULL) + { + iwad_man = new FIWadManager; + iwad_man->ParseIWadInfos(basewad); + } const FIWADInfo *iwad_info = iwad_man->FindIWAD(allwads, iwad, basewad); gameinfo.gametype = iwad_info->gametype; gameinfo.flags = iwad_info->flags; @@ -2486,6 +2493,7 @@ void D_DoomMain (void) FBaseCVar::EnableNoSet (); delete iwad_man; // now we won't need this anymore + iwad_man = NULL; // [RH] Run any saved commands from the command line or autoexec.cfg now. gamestate = GS_FULLCONSOLE; diff --git a/src/d_main.h b/src/d_main.h index e4641c41d..afca8bc3b 100644 --- a/src/d_main.h +++ b/src/d_main.h @@ -115,15 +115,13 @@ extern FStartupInfo DoomStartupInfo; // //========================================================================== -struct FIWadManager +class FIWadManager { -private: TArray mIWads; TArray mIWadNames; TArray mLumpsFound; void ParseIWadInfo(const char *fn, const char *data, int datasize); - void ParseIWadInfos(const char *fn); void ClearChecks(); void CheckLumpName(const char *name); int GetIWadInfo(); @@ -131,7 +129,19 @@ private: int CheckIWAD (const char *doomwaddir, WadStuff *wads); int IdentifyVersion (TArray &wadfiles, const char *iwad, const char *zdoom_wad); public: + void ParseIWadInfos(const char *fn); const FIWADInfo *FindIWAD(TArray &wadfiles, const char *iwad, const char *basewad); + const FString *GetAutoname(unsigned int num) const + { + if (num < mIWads.Size()) return &mIWads[num].Autoname; + else return NULL; + } + int GetIWadFlags(unsigned int num) const + { + if (num < mIWads.Size()) return mIWads[num].flags; + else return false; + } + }; diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index e17a3e127..112bcbe1b 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -61,6 +61,7 @@ extern HWND Window; #include "doomstat.h" #include "i_system.h" #include "gi.h" +#include "d_main.h" EXTERN_CVAR (Bool, con_centernotify) EXTERN_CVAR (Int, msg0color) @@ -75,7 +76,7 @@ EXTERN_CVAR (Color, am_cdwallcolor) EXTERN_CVAR (Float, spc_amp) EXTERN_CVAR (Bool, wi_percents) -FGameConfigFile::FGameConfigFile () +FGameConfigFile::FGameConfigFile (FIWadManager *iwad_man) { #ifdef __APPLE__ FString user_docs, user_app_support, local_app_support; @@ -163,30 +164,36 @@ FGameConfigFile::FGameConfigFile () // Create auto-load sections, so users know what's available. // Note that this totem pole is the reverse of the order that // they will appear in the file. -#if 0 - CreateSectionAtStart("Harmony.Autoload"); - CreateSectionAtStart("UrbanBrawl.Autoload"); - CreateSectionAtStart("Chex3.Autoload"); - CreateSectionAtStart("Chex1.Autoload"); - CreateSectionAtStart("Chex.Autoload"); - CreateSectionAtStart("Strife.Autoload"); - CreateSectionAtStart("HexenDK.Autoload"); - CreateSectionAtStart("Hexen.Autoload"); - CreateSectionAtStart("HereticSR.Autoload"); - CreateSectionAtStart("Heretic.Autoload"); - CreateSectionAtStart("FreeDM.Autoload"); - CreateSectionAtStart("Freedoom2.Autoload"); - CreateSectionAtStart("Freedoom1.Autoload"); - CreateSectionAtStart("Freedoom.Autoload"); - CreateSectionAtStart("Plutonia.Autoload"); - CreateSectionAtStart("TNT.Autoload"); - CreateSectionAtStart("Doom2BFG.Autoload"); - CreateSectionAtStart("Doom2.Autoload"); - CreateSectionAtStart("DoomBFG.Autoload"); - CreateSectionAtStart("DoomU.Autoload"); - CreateSectionAtStart("Doom1.Autoload"); - CreateSectionAtStart("Doom.Autoload"); -#endif + + double last = 0; + if (SetSection ("LastRun")) + { + const char *lastver = GetValueForKey ("Version"); + if (lastver != NULL) last = atof(lastver); + } + + // don't create the autoload section if we are about to migrate an old config because it'd mess up the upcoming migration step. + // This will be taken care of once the game runs again with the migrated config file. + if (last >= 211) + { + const FString *pAuto; + for (int num = 0; (pAuto = iwad_man->GetAutoname(num)) != NULL; num++) + { + if (!(iwad_man->GetIWadFlags(num) & GI_SHAREWARE)) // we do not want autoload sections for shareware IWADs (which may have an autoname for resource filtering) + { + FString workname = *pAuto; + + while (workname.IsNotEmpty()) + { + FString section = workname + ".Autoload"; + CreateSectionAtStart(section.GetChars()); + long dotpos = workname.LastIndexOf('.'); + if (dotpos < 0) break; + workname.Truncate(dotpos); + } + } + } + } CreateSectionAtStart("Global.Autoload"); // The same goes for auto-exec files. @@ -345,6 +352,7 @@ void FGameConfigFile::DoGlobalSetup () RenameSection("FreeDM.Autoload", "doom.freedoom.freedm.Autoload"); RenameSection("Freedoom2.Autoload", "doom.freedoom.phase2.Autoload"); RenameSection("Freedoom1.Autoload", "doom.freedoom.phase1.Autoload"); + RenameSection("Freedoom.Autoload", "doom.freedoom.Autoload"); RenameSection("DoomBFG.Autoload", "doom.doom1.bfg.Autoload"); RenameSection("DoomU.Autoload", "doom.doom1.ultimate.Autoload"); RenameSection("Doom1.Autoload", "doom.doom1.registered.Autoload"); diff --git a/src/gameconfigfile.h b/src/gameconfigfile.h index 57956f7cd..5862bb79e 100644 --- a/src/gameconfigfile.h +++ b/src/gameconfigfile.h @@ -38,11 +38,12 @@ #include "configfile.h" class DArgs; +class FIWadManager; class FGameConfigFile : public FConfigFile { public: - FGameConfigFile (); + FGameConfigFile (FIWadManager *iwad_man); ~FGameConfigFile (); void DoGlobalSetup (); diff --git a/src/m_misc.cpp b/src/m_misc.cpp index 7f4fa482d..1369bdb52 100644 --- a/src/m_misc.cpp +++ b/src/m_misc.cpp @@ -410,9 +410,9 @@ CCMD (writeini) // M_LoadDefaults // -void M_LoadDefaults () +void M_LoadDefaults (FIWadManager *iwad_man) { - GameConfig = new FGameConfigFile; + GameConfig = new FGameConfigFile(iwad_man); GameConfig->DoGlobalSetup (); atterm (M_SaveDefaultsFinal); } diff --git a/src/m_misc.h b/src/m_misc.h index 9599306de..ea146c690 100644 --- a/src/m_misc.h +++ b/src/m_misc.h @@ -28,6 +28,7 @@ class FConfigFile; class FGameConfigFile; +class FIWadManager; extern FGameConfigFile *GameConfig; @@ -40,7 +41,7 @@ void M_FindResponseFile (void); // Pass a NULL to get the original behavior. void M_ScreenShot (const char *filename); -void M_LoadDefaults (); +void M_LoadDefaults (FIWadManager *iwad_man); bool M_SaveDefaults (const char *filename); void M_SaveCustomKeys (FConfigFile *config, char *section, char *subsection, size_t sublen); From a013703e1ce8a41dafb148c02b2ee3d3b20673b2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 16:44:03 +0200 Subject: [PATCH 089/144] - add a NULL pointer check for the config to BaseFileSearch. --- src/d_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 5f4f09d4d..1244cc88f 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1657,7 +1657,7 @@ static const char *BaseFileSearch (const char *file, const char *ext, bool lookf return wad; } - if (GameConfig->SetSection ("FileSearch.Directories")) + if (GameConfig != NULL && GameConfig->SetSection ("FileSearch.Directories")) { const char *key; const char *value; From 7d2ab461d9820c5f42d1d9ddaad564bcab1789c6 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 20:59:43 +0200 Subject: [PATCH 090/144] - don't use 'countof' to iterate through a static array that's defined inside a function. Some GCC versions apparently do not like that. --- src/gameconfigfile.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index 112bcbe1b..a168579a0 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -433,6 +433,7 @@ void FGameConfigFile::DoKeySetup(const char *gamename) { "Bindings", &Bindings }, { "DoubleBindings", &DoubleBindings }, { "AutomapBindings", &AutomapBindings }, + NULL, NULL }; const char *key, *value; @@ -442,7 +443,7 @@ void FGameConfigFile::DoKeySetup(const char *gamename) C_SetDefaultBindings (); - for (int i = 0; i < countof(binders); ++i) + for (int i = 0; binders[i].label != NULL; ++i) { strncpy(subsection, binders[i].label, sublen); if (SetSection(section)) From 4971e7def1462461579ae30750c679365536e564 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 21:40:14 +0200 Subject: [PATCH 091/144] - another GCC countof fix... --- src/resourcefiles/resourcefile.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/resourcefiles/resourcefile.cpp b/src/resourcefiles/resourcefile.cpp index e5c12b0ef..11d60795e 100644 --- a/src/resourcefiles/resourcefile.cpp +++ b/src/resourcefiles/resourcefile.cpp @@ -430,13 +430,14 @@ int FResourceFile::FilterLumpsByGameType(int type, void *lumps, size_t lumpsize, { GAME_Raven, "game-Raven" }, { GAME_DoomStrifeChex, "game-DoomStrifeChex" }, { GAME_DoomChex, "game-DoomChex" }, + { GAME_Any, NULL } }; if (type == 0) { return 0; } int count = 0; - for (int i = 0; i < countof(blanket); ++i) + for (int i = 0; blanket[i].name != NULL; ++i) { if (type & blanket[i].match) { From 2cc6e74b31b503232bc95b427e9454e05c7dcb4c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 21:43:55 +0200 Subject: [PATCH 092/144] - renamed Hacx's autoload sections to remove minor version numbers. --- wadsrc/static/iwadinfo.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wadsrc/static/iwadinfo.txt b/wadsrc/static/iwadinfo.txt index ceceafd2b..a92bc554d 100644 --- a/wadsrc/static/iwadinfo.txt +++ b/wadsrc/static/iwadinfo.txt @@ -36,7 +36,7 @@ IWad Name = "Hacx 2.0" Game = "Doom" Config = "Hacx" - Autoname = "hacx.2_0" + Autoname = "hacx.2" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-E" BannerColors = "ff ff ff", "00 88 22" @@ -47,7 +47,7 @@ IWad Name = "Hacx: Twitch'n Kill" Game = "Doom" Config = "Hacx" - Autoname = "hacx.1_2" + Autoname = "hacx.1" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-R" BannerColors = "00 00 a8", "a8 a8 a8" From c584e9ec9525799af10cd81fbb35e03f565f290b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 6 Apr 2015 23:23:50 +0200 Subject: [PATCH 093/144] - fixed destructor call of FConfigSection in FConfigFile. --- src/configfile.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/configfile.cpp b/src/configfile.cpp index e64005fc4..b8db74eb3 100644 --- a/src/configfile.cpp +++ b/src/configfile.cpp @@ -116,8 +116,7 @@ FConfigFile::~FConfigFile () delete[] (char *)entry; entry = nextentry; } - section->~FConfigSection(); - delete[] (char *)section; + delete section; section = nextsection; } } From cf7c04b6053800e86f187f72367269c9fec34625 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 7 Apr 2015 08:41:45 +0200 Subject: [PATCH 094/144] - more autoload name changing: hacx.1/2 -> hacx.hacx1/2 and chex.1/3 -> chex.chex1/3 --- wadsrc/static/iwadinfo.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wadsrc/static/iwadinfo.txt b/wadsrc/static/iwadinfo.txt index a92bc554d..a274a1f2f 100644 --- a/wadsrc/static/iwadinfo.txt +++ b/wadsrc/static/iwadinfo.txt @@ -36,7 +36,7 @@ IWad Name = "Hacx 2.0" Game = "Doom" Config = "Hacx" - Autoname = "hacx.2" + Autoname = "hacx.hacx2" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-E" BannerColors = "ff ff ff", "00 88 22" @@ -47,7 +47,7 @@ IWad Name = "Hacx: Twitch'n Kill" Game = "Doom" Config = "Hacx" - Autoname = "hacx.1" + Autoname = "hacx.hacx1" Mapinfo = "mapinfo/hacxharm.txt" MustContain = "MAP01", "HACX-R" BannerColors = "00 00 a8", "a8 a8 a8" @@ -67,7 +67,7 @@ IWad IWad { Name = "Chex(R) Quest 3" - Autoname = "chex.3" + Autoname = "chex.chex3" Game = "Chex" Config = "Chex" Mapinfo = "mapinfo/chex.txt" @@ -79,7 +79,7 @@ IWad IWad { Name = "Chex(R) Quest" - Autoname = "chex.1" + Autoname = "chex.chex1" Game = "Chex" Config = "Chex" Mapinfo = "mapinfo/chex.txt" From e75bdf86dbc419434f9cf833245a75a06a4ec831 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 7 Apr 2015 08:46:42 +0200 Subject: [PATCH 095/144] - move section renaming code into FGameConfigFile's constructor so renaming of the old and creation of the new autoload sections can be done in one step, not two. --- src/gameconfigfile.cpp | 63 +++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index a168579a0..3f83da408 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -172,25 +172,38 @@ FGameConfigFile::FGameConfigFile (FIWadManager *iwad_man) if (lastver != NULL) last = atof(lastver); } - // don't create the autoload section if we are about to migrate an old config because it'd mess up the upcoming migration step. - // This will be taken care of once the game runs again with the migrated config file. - if (last >= 211) + if (last < 211) { - const FString *pAuto; - for (int num = 0; (pAuto = iwad_man->GetAutoname(num)) != NULL; num++) + RenameSection("Chex3.Autoload", "chex.chex3.Autoload"); + RenameSection("Chex1.Autoload", "chex.chex1.Autoload"); + RenameSection("HexenDK.Autoload", "hexen.deathkings.Autoload"); + RenameSection("HereticSR.Autoload", "heretic.shadow.Autoload"); + RenameSection("FreeDM.Autoload", "doom.freedoom.freedm.Autoload"); + RenameSection("Freedoom2.Autoload", "doom.freedoom.phase2.Autoload"); + RenameSection("Freedoom1.Autoload", "doom.freedoom.phase1.Autoload"); + RenameSection("Freedoom.Autoload", "doom.freedoom.Autoload"); + RenameSection("DoomBFG.Autoload", "doom.doom1.bfg.Autoload"); + RenameSection("DoomU.Autoload", "doom.doom1.ultimate.Autoload"); + RenameSection("Doom1.Autoload", "doom.doom1.registered.Autoload"); + RenameSection("TNT.Autoload", "doom.doom2.tnt.Autoload"); + RenameSection("Plutonia.Autoload", "doom.doom2.plutonia.Autoload"); + RenameSection("Doom2BFG.Autoload", "doom.doom2.bfg.Autoload"); + RenameSection("Doom2.Autoload", "doom.doom2.commercial.Autoload"); + } + const FString *pAuto; + for (int num = 0; (pAuto = iwad_man->GetAutoname(num)) != NULL; num++) + { + if (!(iwad_man->GetIWadFlags(num) & GI_SHAREWARE)) // we do not want autoload sections for shareware IWADs (which may have an autoname for resource filtering) { - if (!(iwad_man->GetIWadFlags(num) & GI_SHAREWARE)) // we do not want autoload sections for shareware IWADs (which may have an autoname for resource filtering) - { - FString workname = *pAuto; + FString workname = *pAuto; - while (workname.IsNotEmpty()) - { - FString section = workname + ".Autoload"; - CreateSectionAtStart(section.GetChars()); - long dotpos = workname.LastIndexOf('.'); - if (dotpos < 0) break; - workname.Truncate(dotpos); - } + while (workname.IsNotEmpty()) + { + FString section = workname + ".Autoload"; + CreateSectionAtStart(section.GetChars()); + long dotpos = workname.LastIndexOf('.'); + if (dotpos < 0) break; + workname.Truncate(dotpos); } } } @@ -343,24 +356,6 @@ void FGameConfigFile::DoGlobalSetup () SetValueForKey ("5", "use ArtiInvulnerability2"); } } - if (last < 211) - { - RenameSection("Chex3.Autoload", "chex.3.Autoload"); - RenameSection("Chex1.Autoload", "chex.1.Autoload"); - RenameSection("HexenDK.Autoload", "hexen.deathkings.Autoload"); - RenameSection("HereticSR.Autoload", "heretic.shadow.Autoload"); - RenameSection("FreeDM.Autoload", "doom.freedoom.freedm.Autoload"); - RenameSection("Freedoom2.Autoload", "doom.freedoom.phase2.Autoload"); - RenameSection("Freedoom1.Autoload", "doom.freedoom.phase1.Autoload"); - RenameSection("Freedoom.Autoload", "doom.freedoom.Autoload"); - RenameSection("DoomBFG.Autoload", "doom.doom1.bfg.Autoload"); - RenameSection("DoomU.Autoload", "doom.doom1.ultimate.Autoload"); - RenameSection("Doom1.Autoload", "doom.doom1.registered.Autoload"); - RenameSection("TNT.Autoload", "doom.doom2.tnt.Autoload"); - RenameSection("Plutonia.Autoload", "doom.doom2.plutonia.Autoload"); - RenameSection("Doom2BFG.Autoload", "doom.doom2.bfg.Autoload"); - RenameSection("Doom2.Autoload", "doom.doom2.commercial.Autoload"); - } } } } From 6f5dbdefb05587dbe07e9b044f5af9b5ec93d221 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 7 Apr 2015 08:51:21 +0200 Subject: [PATCH 096/144] - fixed: args of non-actor mapthings were ignored. --- src/p_mobj.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 76afec801..e3317e1a2 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4617,7 +4617,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) } // copy args to mapthing so that we have them in one place for the rest of this function - if (mentry->Special >= 0) + if (mentry->Type != NULL && mentry->Special >= 0) { mthing->special = mentry->Special; memcpy(mthing->args, mentry->Args, sizeof(mthing->args)); From dd91141b357d10adc35e9a1959c15ee1dc197d67 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 7 Apr 2015 09:11:46 +0200 Subject: [PATCH 097/144] - updated the blurb that's being put above the IWAD specific autoload sections. --- src/gameconfigfile.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index 3f83da408..c4f970db9 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -239,9 +239,10 @@ FGameConfigFile::FGameConfigFile (FIWadManager *iwad_man) "# Wad files to automatically load depending on the game and IWAD you are\n" "# playing. You may have have files that are loaded for all similar IWADs\n" "# (the game) and files that are only loaded for particular IWADs. For example,\n" - "# any files listed under Doom.Autoload will be loaded for any version of Doom,\n" - "# but files listed under Doom2.Autoload will only load when you are\n" - "# playing Doom 2.\n\n"); + "# any files listed under 'doom.Autoload' will be loaded for any version of Doom,\n" + "# but files listed under 'doom.doom2.Autoload' will only load when you are\n" + "# playing a Doom 2 based game (doom2.wad, tnt.wad or plutonia.wad), and files listed under\n" + "# 'doom.doom2.commercial.Autoload' only when playing doom2.wad.\n\n"); } FGameConfigFile::~FGameConfigFile () From 268e7df992f8cb15029e21bfa67094b550e08de2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 7 Apr 2015 14:09:55 +0200 Subject: [PATCH 098/144] - fixed: We must not allow the engine to start without a default MAPINFO definition. Both 'Adventures of Square' IWADs were missing an entry for base MAPINFO and as a result did not define the common editor numbers. To prevent this, a new mindefaults MAPINFO was added to zdoom.pk3 which now gets loaded if IWADINFO does not specify a game-specific file. This minimum setting sets all gamedefaults to a reasonable base value and defines all other things that are required to be defined. --- src/d_iwad.cpp | 5 +++ wadsrc/static/iwadinfo.txt | 2 + wadsrc/static/mapinfo/mindefaults.txt | 59 +++++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 wadsrc/static/mapinfo/mindefaults.txt diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 7574347bc..3fc365e8c 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -219,6 +219,11 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize) sc.ScriptError("Unknown keyword '%s'", sc.String); } } + if (iwad->MapInfo.IsEmpty()) + { + // We must at least load the minimum defaults to allow the engine to run. + iwad->MapInfo = "mapinfo/mindefaults.txt"; + } } else if (sc.Compare("NAMES")) { diff --git a/wadsrc/static/iwadinfo.txt b/wadsrc/static/iwadinfo.txt index a274a1f2f..6c958ddfa 100644 --- a/wadsrc/static/iwadinfo.txt +++ b/wadsrc/static/iwadinfo.txt @@ -6,6 +6,7 @@ IWad Autoname = "square.square" Game = "Doom" Config = "Square" + Mapinfo = "mapinfo/mindefaults.txt" MustContain = "SQU-IWAD", "E1A1" BannerColors = "ff ff ff", "80 00 80" } @@ -16,6 +17,7 @@ IWad Autoname = "square.squareware" Game = "Doom" Config = "Square" + Mapinfo = "mapinfo/mindefaults.txt" MustContain = "SQU-SWE1", "E1A1" BannerColors = "ff ff ff", "80 00 80" } diff --git a/wadsrc/static/mapinfo/mindefaults.txt b/wadsrc/static/mapinfo/mindefaults.txt new file mode 100644 index 000000000..cbb3fa06b --- /dev/null +++ b/wadsrc/static/mapinfo/mindefaults.txt @@ -0,0 +1,59 @@ +// defines the minimum needed entries to let an unknown IWAD run + +gameinfo +{ + titlepage = "-NOFLAT-" + titletime = 999 + infopage = "-NOFLAT-" + titlemusic = "" + advisorytime = 0 + chatsound = "" + finalemusic = "" + finaleflat = "-NOFLAT-" + finalepage = "-NOFLAT-" + quitsound = "" + borderflat = "-NOFLAT-" + border = DoomBorder + telefogheight = 0 + defkickback = 100 + skyflatname = "F_SKY1" + translator = "xlat/doom.txt" + defaultbloodcolor = "68 00 00" + defaultbloodparticlecolor = "ff 00 00" + backpacktype = "Backpack" + armoricons = "AICNA0", 0.75, "AICNC0" + statusbar = "sbarinfo/doom.txt" + intermissionmusic = "" + intermissioncounter = true + dimcolor = "6f 00 6b" + dimamount = 0.8 + definventorymaxamount = 25 + defaultrespawntime = 12 + defaultdropstyle = 1 + endoom = "ENDOOM" + player5start = 4001 + pickupcolor = "c0 c0 c0" + quitmessages = "Do you want to quit?" + + menufontcolor_title = "purple" + menufontcolor_label = "default" + menufontcolor_value = "gray" + menufontcolor_action = "gray" + menufontcolor_header = "blue" + menufontcolor_highlight = "lightblue" + menufontcolor_selection = "purple" + menubackbutton = "M_BACK_D" + playerclasses = "DoomPlayer" + pausesign = "-NOFLAT-" + gibfactor = 1 + cursorpic = "doomcurs" + textscreenx = 10 + textscreeny = 10 + defaultendsequence = "Inter_Cast" + maparrow = "maparrows/arrow.txt", "maparrows/ddtarrow.txt" + statscreen_mapnamefont = "BigFont" + statscreen_finishedpatch = "WIF" + statscreen_enteringpatch = "WIENTER" +} + +include "mapinfo/common.txt" From c5a4221b587bf7d5a9f7cfc42c1a6ead720c2722 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 7 Apr 2015 16:27:57 +0200 Subject: [PATCH 099/144] - fixed handling of args for non-actor mapthings again. As it turns out there was insufficient information in the data to properly decide this case so a new flag was added to make it all more reliable. --- src/g_doomedmap.cpp | 9 ++++++--- src/info.h | 3 ++- src/p_mobj.cpp | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/g_doomedmap.cpp b/src/g_doomedmap.cpp index 131ddd076..c9deb7256 100644 --- a/src/g_doomedmap.cpp +++ b/src/g_doomedmap.cpp @@ -80,7 +80,8 @@ const char *SpecialMapthingNames[] = { struct MapinfoEdMapItem { FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet. - int special; + short special; + bool argsdefined; int args[5]; // These are for error reporting. We must store the file information because it's no longer available when these items get resolved. FString filename; @@ -180,14 +181,15 @@ void FMapInfoParser::ParseDoomEdNums() editem.special = -1; } memset(editem.args, 0, sizeof(editem.args)); + editem.argsdefined = false; int minargs = 0; int maxargs = 5; FString specialname; if (sc.CheckString(",")) { - // todo: parse a special or args - if (editem.special < 0) editem.special = 0; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing. + editem.argsdefined = true; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing. + if (editem.special < 0) editem.special = 0; if (!sc.CheckNumber()) { sc.MustGetString(); @@ -264,6 +266,7 @@ void InitActorNumsFromMapinfo() FDoomEdEntry ent; ent.Type = cls; ent.Special = pair->Value.special; + ent.ArgsDefined = pair->Value.argsdefined; memcpy(ent.Args, pair->Value.args, sizeof(ent.Args)); DoomEdMap.Insert(pair->Key, ent); } diff --git a/src/info.h b/src/info.h index 8eed93e48..bdbb69940 100644 --- a/src/info.h +++ b/src/info.h @@ -282,7 +282,8 @@ struct FActorInfo struct FDoomEdEntry { const PClass *Type; - int Special; + short Special; + bool ArgsDefined; int Args[5]; }; diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index e3317e1a2..2571413c8 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4617,9 +4617,9 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) } // copy args to mapthing so that we have them in one place for the rest of this function - if (mentry->Type != NULL && mentry->Special >= 0) + if (mentry->ArgsDefined) { - mthing->special = mentry->Special; + if (mentry->Type!= NULL) mthing->special = mentry->Special; memcpy(mthing->args, mentry->Args, sizeof(mthing->args)); } From e4cadc90a5aa9eff55fe4bc4a3b5a0d1d046fb3c Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Tue, 7 Apr 2015 11:08:28 -0500 Subject: [PATCH 100/144] Fix grammar: then -> than --- src/d_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 1244cc88f..da901bb68 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2310,7 +2310,7 @@ void D_DoomMain (void) if (hashfile) { - Printf("Notice: File hashing is incredibly verbose. Expect loading files to take much longer then usual.\n"); + Printf("Notice: File hashing is incredibly verbose. Expect loading files to take much longer than usual.\n"); } Printf ("W_Init: Init WADfiles.\n"); From 6428b399d6a931471f3d7bf1620599cb0e4193d1 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Tue, 7 Apr 2015 12:37:33 -0500 Subject: [PATCH 101/144] Try to sanitize the exec+pullin mess - Old mess: * Execute autoexec files right away. * Execute -exec files right away. * Execute command line commands right away. - If, during any of the above, an unknown command or a set of an unknown variable is encountered, store it for later. - Pullin commands are directly executed and add to the list of files to load. * Do a little setup, including parsing CVARINFOs. * Retry saved commands in case CVARINFO added a cvar they refer to. - New, less messy, mess: * Parse autoexec files into an array. * Parse -exec files. * Parse command line commands. - During all of the above, exec commands are also parsed into the array immediately rather than being saved for execution later. - Pullin commands are parsed into a different array. The pullin command doesn't actually do anything directly anymore. * Add all the pullin files to the list of files to load. * Do a little setup, including parsing CVARINFOs. * Execute every command that was parsed in the preceding steps. --- src/c_cmds.cpp | 7 +- src/c_dispatch.cpp | 241 +++++++++++++++++++++------------------------ src/c_dispatch.h | 63 +++++++----- src/d_main.cpp | 32 ++++-- 4 files changed, 178 insertions(+), 165 deletions(-) diff --git a/src/c_cmds.cpp b/src/c_cmds.cpp index 74968404d..a40f1f1a2 100644 --- a/src/c_cmds.cpp +++ b/src/c_cmds.cpp @@ -450,11 +450,10 @@ CCMD (exec) for (int i = 1; i < argv.argc(); ++i) { - switch (C_ExecFile (argv[i], gamestate == GS_STARTUP)) + if (!C_ExecFile(argv[i])) { - case 1: Printf ("Could not open \"%s\"\n", argv[1]); break; - case 2: Printf ("Error parsing \"%s\"\n", argv[1]); break; - default: break; + Printf ("Could not exec \"%s\"\n", argv[i]); + break; } } } diff --git a/src/c_dispatch.cpp b/src/c_dispatch.cpp index 6a526a661..d72993cb7 100644 --- a/src/c_dispatch.cpp +++ b/src/c_dispatch.cpp @@ -185,9 +185,6 @@ static const char *KeyConfCommands[] = "clearplayerclasses" }; -static TArray StoredStartupSets; -static bool RunningStoredStartups; - // CODE -------------------------------------------------------------------- IMPLEMENT_CLASS (DWaitingCommand) @@ -540,18 +537,6 @@ void ResetButtonStates () } } -void C_ExecStoredSets() -{ - assert(!RunningStoredStartups); - RunningStoredStartups = true; - for (unsigned i = 0; i < StoredStartupSets.Size(); ++i) - { - C_DoCommand(StoredStartupSets[i]); - } - StoredStartupSets.Clear(); - RunningStoredStartups = false; -} - void C_DoCommand (const char *cmd, int keynum) { FConsoleCommand *com; @@ -627,22 +612,7 @@ void C_DoCommand (const char *cmd, int keynum) if ( (com = FindNameInHashTable (Commands, beg, len)) ) { - if (gamestate == GS_STARTUP && !RunningStoredStartups && - len == 3 && strnicmp(beg, "set", 3) == 0) - { - // Save setting of unknown cvars for later, in case a loaded wad has a - // CVARINFO that defines it. - FCommandLine args(beg); - if (args.argc() > 1 && FindCVar(args[1], NULL) == NULL) - { - StoredStartupSets.Push(beg); - } - else - { - com->Run(args, players[consoleplayer].mo, keynum); - } - } - else if (gamestate != GS_STARTUP || ParsingKeyConf || + if (gamestate != GS_STARTUP || ParsingKeyConf || (len == 3 && strnicmp (beg, "set", 3) == 0) || (len == 7 && strnicmp (beg, "logfile", 7) == 0) || (len == 9 && strnicmp (beg, "unbindall", 9) == 0) || @@ -687,15 +657,7 @@ void C_DoCommand (const char *cmd, int keynum) } else { // We don't know how to handle this command - if (gamestate == GS_STARTUP && !RunningStoredStartups) - { - // Save it for later, in case a CVARINFO defines it. - StoredStartupSets.Push(beg); - } - else - { - Printf ("Unknown command \"%.*s\"\n", (int)len, beg); - } + Printf ("Unknown command \"%.*s\"\n", (int)len, beg); } } } @@ -1368,7 +1330,7 @@ CCMD (key) // Execute any console commands specified on the command line. // These all begin with '+' as opposed to '-'. -void C_ExecCmdLineParams () +FExecList *C_ParseCmdLineParams(FExecList *exec) { for (int currArg = 1; currArg < Args->NumArgs(); ) { @@ -1389,10 +1351,15 @@ void C_ExecCmdLineParams () cmdString = BuildString (cmdlen, Args->GetArgList (argstart)); if (!cmdString.IsEmpty()) { - C_DoCommand (&cmdString[1]); + if (exec == NULL) + { + exec = new FExecList; + } + exec->AddCommand(&cmdString[1]); } } } + return exec; } bool FConsoleCommand::IsAlias () @@ -1469,28 +1436,60 @@ void FConsoleAlias::SafeDelete () } } -static BYTE PullinBad = 2; -static const char *PullinFile; -extern TArray allwads; +void FExecList::AddCommand(const char *cmd, const char *file) +{ + // Pullins are special and need to be separated from general commands. + // They also turned out to be a really bad idea, since they make things + // more complicated. :( + if (file != NULL && strnicmp(cmd, "pullin", 6) == 0 && isspace(cmd[6])) + { + FCommandLine line(cmd); + C_SearchForPullins(this, file, line); + } + // Recursive exec: Parse this file now. + else if (strnicmp(cmd, "exec", 4) == 0 && isspace(cmd[4])) + { + FCommandLine argv(cmd); + for (int i = 1; i < argv.argc(); ++i) + { + C_ParseExecFile(argv[i], this); + } + } + else + { + Commands.Push(cmd); + } +} -int C_ExecFile (const char *file, bool usePullin) +void FExecList::ExecCommands() const +{ + for (unsigned i = 0; i < Commands.Size(); ++i) + { + AddCommandString(Commands[i].LockBuffer()); + Commands[i].UnlockBuffer(); + } +} + +void FExecList::AddPullins(TArray &wads) const +{ + for (unsigned i = 0; i < Pullins.Size(); ++i) + { + D_AddFile(wads, Pullins[i]); + } +} + +FExecList *C_ParseExecFile(const char *file, FExecList *exec) { FILE *f; char cmd[4096]; int retval = 0; - BYTE pullinSaved = PullinBad; - const char *fileSaved = PullinFile; - if ( (f = fopen (file, "r")) ) { - PullinBad = 1-usePullin; - PullinFile = file; - - while (fgets (cmd, 4095, f)) + while (fgets(cmd, countof(cmd)-1, f)) { // Comments begin with // - char *stop = cmd + strlen (cmd) - 1; + char *stop = cmd + strlen(cmd) - 1; char *comment = cmd; int inQuote = 0; @@ -1517,88 +1516,78 @@ int C_ExecFile (const char *file, bool usePullin) { // Comment in middle of line *comment = 0; } - - AddCommandString (cmd); + if (exec == NULL) + { + exec = new FExecList; + } + exec->AddCommand(cmd, file); } - if (!feof (f)) + if (!feof(f)) { - retval = 2; + Printf("Error parsing \"%s\"\n", file); } - fclose (f); + fclose(f); } else { - retval = 1; + Printf ("Could not open \"%s\"\n", file); + } + return exec; +} + +bool C_ExecFile (const char *file) +{ + FExecList *exec = C_ParseExecFile(file, NULL); + if (exec != NULL) + { + exec->ExecCommands(); + if (exec->Pullins.Size() > 0) + { + Printf(TEXTCOLOR_BOLD "Notice: Pullin files were ignored.\n"); + } + delete exec; + } + return exec != NULL; +} + +void C_SearchForPullins(FExecList *exec, const char *file, FCommandLine &argv) +{ + const char *lastSlash; + + assert(exec != NULL); + assert(file != NULL); +#ifdef __unix__ + lastSlash = strrchr(file, '/'); +#else + const char *lastSlash1, *lastSlash2; + + lastSlash1 = strrchr(file, '/'); + lastSlash2 = strrchr(file, '\\'); + lastSlash = MAX(lastSlash1, lastSlash2); +#endif + + for (int i = 1; i < argv.argc(); ++i) + { + // Try looking for the wad in the same directory as the .cfg + // before looking for it in the current directory. + if (lastSlash != NULL) + { + FString path(file, (lastSlash - file) + 1); + path += argv[i]; + if (FileExists(path)) + { + exec->Pullins.Push(path); + continue; + } + } + exec->Pullins.Push(argv[i]); } - PullinBad = pullinSaved; - PullinFile = fileSaved; - return retval; } CCMD (pullin) { - if (PullinBad == 2) - { - Printf ("This command is only valid from .cfg\n" - "files and only when used at startup.\n"); - } - else if (argv.argc() > 1) - { - const char *lastSlash; - -#ifdef __unix__ - lastSlash = strrchr (PullinFile, '/'); -#else - const char *lastSlash1, *lastSlash2; - - lastSlash1 = strrchr (PullinFile, '/'); - lastSlash2 = strrchr (PullinFile, '\\'); - lastSlash = MAX (lastSlash1, lastSlash2); -#endif - - if (PullinBad) - { - Printf ("Not loading:"); - } - for (int i = 1; i < argv.argc(); ++i) - { - if (PullinBad) - { - Printf (" %s", argv[i]); - } - else - { - // Try looking for the wad in the same directory as the .cfg - // before looking for it in the current directory. - char *path = argv[i]; - - if (lastSlash != NULL) - { - size_t pathlen = lastSlash - PullinFile + strlen (argv[i]) + 2; - path = new char[pathlen]; - strncpy (path, PullinFile, (lastSlash - PullinFile) + 1); - strcpy (path + (lastSlash - PullinFile) + 1, argv[i]); - if (!FileExists (path)) - { - delete[] path; - path = argv[i]; - } - else - { - FixPathSeperator (path); - } - } - D_AddFile (allwads, path); - if (path != argv[i]) - { - delete[] path; - } - } - } - if (PullinBad) - { - Printf ("\n"); - } - } + // Actual handling for pullin is now completely special-cased above + Printf (TEXTCOLOR_BOLD "Pullin" TEXTCOLOR_NORMAL " is only valid from .cfg\n" + "files and only when used at startup.\n"); } diff --git a/src/c_dispatch.h b/src/c_dispatch.h index b494005c7..f9aeb0dc3 100644 --- a/src/c_dispatch.h +++ b/src/c_dispatch.h @@ -39,31 +39,6 @@ class FConfigFile; class APlayerPawn; -extern bool CheckCheatmode (bool printmsg = true); - -void C_ExecCmdLineParams (); -void C_ExecStoredSets(); - -// Add commands to the console as if they were typed in. Can handle wait -// and semicolon-separated commands. This function may modify the source -// string, but the string will be restored to its original state before -// returning. Therefore, commands passed must not be in read-only memory. -void AddCommandString (char *text, int keynum=0); - -// Process a single console command. Does not handle wait. -void C_DoCommand (const char *cmd, int keynum=0); - -int C_ExecFile (const char *cmd, bool usePullin); - -// Write out alias commands to a file for all current aliases. -void C_ArchiveAliases (FConfigFile *f); - -void C_SetAlias (const char *name, const char *cmd); -void C_ClearAliases (); - -// build a single string out of multiple strings -FString BuildString (int argc, FString *argv); - // Class that can parse command lines class FCommandLine { @@ -83,6 +58,44 @@ private: bool noescapes; }; +// Contains the contents of an exec'ed file +struct FExecList +{ + TArray Commands; + TArray Pullins; + + void AddCommand(const char *cmd, const char *file = NULL); + void ExecCommands() const; + void AddPullins(TArray &wads) const; +}; + + +extern bool CheckCheatmode (bool printmsg = true); + +FExecList *C_ParseCmdLineParams(FExecList *exec); + +// Add commands to the console as if they were typed in. Can handle wait +// and semicolon-separated commands. This function may modify the source +// string, but the string will be restored to its original state before +// returning. Therefore, commands passed must not be in read-only memory. +void AddCommandString (char *text, int keynum=0); + +// Process a single console command. Does not handle wait. +void C_DoCommand (const char *cmd, int keynum=0); + +FExecList *C_ParseExecFile(const char *file, FExecList *source); +void C_SearchForPullins(FExecList *exec, const char *file, class FCommandLine &args); +bool C_ExecFile(const char *file); + +// Write out alias commands to a file for all current aliases. +void C_ArchiveAliases (FConfigFile *f); + +void C_SetAlias (const char *name, const char *cmd); +void C_ClearAliases (); + +// build a single string out of multiple strings +FString BuildString (int argc, FString *argv); + typedef void (*CCmdRun) (FCommandLine &argv, APlayerPawn *instigator, int key); class FConsoleCommand diff --git a/src/d_main.cpp b/src/d_main.cpp index da901bb68..9b46d42c2 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1723,12 +1723,13 @@ bool ConsiderPatches (const char *arg) // //========================================================================== -void D_MultiExec (DArgs *list, bool usePullin) +FExecList *D_MultiExec (DArgs *list, FExecList *exec) { for (int i = 0; i < list->NumArgs(); ++i) { - C_ExecFile (list->GetArg (i), usePullin); + exec = C_ParseExecFile(list->GetArg(i), exec); } + return exec; } static void GetCmdLineFiles(TArray &wadfiles) @@ -2291,18 +2292,24 @@ void D_DoomMain (void) AddAutoloadFiles(iwad_info->Autoname); - // Run automatically executed files + // Process automatically executed files + FExecList *exec; execFiles = new DArgs; - GameConfig->AddAutoexec (execFiles, gameinfo.ConfigName); - D_MultiExec (execFiles, true); + GameConfig->AddAutoexec(execFiles, gameinfo.ConfigName); + exec = D_MultiExec(execFiles, NULL); - // Run .cfg files at the start of the command line. + // Process .cfg files at the start of the command line. execFiles = Args->GatherFiles ("-exec"); - D_MultiExec (execFiles, true); + exec = D_MultiExec(execFiles, exec); - C_ExecCmdLineParams (); // [RH] do all +set commands on the command line + // [RH] process all + commands on the command line + exec = C_ParseCmdLineParams(exec); CopyFiles(allwads, pwads); + if (exec != NULL) + { + exec->AddPullins(allwads); + } // Since this function will never leave we must delete this array here manually. pwads.Clear(); @@ -2324,8 +2331,13 @@ void D_DoomMain (void) // Now that wads are loaded, define mod-specific cvars. ParseCVarInfo(); - // Try setting previously unknown cvars again, as a CVARINFO may have made them known. - C_ExecStoredSets(); + // Actually exec command line commands and exec files. + if (exec != NULL) + { + exec->ExecCommands(); + delete exec; + exec = NULL; + } // [RH] Initialize localizable strings. GStrings.LoadStrings (false); From 9b95c134a766995dbb90a38fcad618384c3170df Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 9 Apr 2015 09:14:53 +0200 Subject: [PATCH 102/144] - fixed: Lumps from a directory need to store the full file path so that they still can be accessed when the internal path is changed due to a filter directory. --- src/resourcefiles/file_directory.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index f6adf0723..2be8da1b1 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -72,7 +72,7 @@ struct FDirectoryLump : public FResourceLump virtual FileReader *NewReader(); virtual int FillCache(); -private: + FString mFullPath; }; @@ -300,6 +300,8 @@ void FDirectory::AddEntry(const char *fullpath, int size) { FDirectoryLump *lump_p = &Lumps[Lumps.Reserve(1)]; + // Store the full path here so that we can access the file later, even if it is from a filter directory. + lump_p->mFullPath = fullpath; // The lump's name is only the part relative to the main directory lump_p->LumpNameSetup(fullpath + strlen(Filename)); lump_p->LumpSize = size; @@ -319,9 +321,7 @@ FileReader *FDirectoryLump::NewReader() { try { - FString fullpath = Owner->Filename; - fullpath += FullName; - return new FileReader(fullpath); + return new FileReader(mFullPath); } catch (CRecoverableError &) { @@ -339,6 +339,11 @@ int FDirectoryLump::FillCache() { Cache = new char[LumpSize]; FileReader *reader = NewReader(); + if (reader == NULL) + { + memset(Cache, 0, sizeof(Cache)); + return 0; + } reader->Read(Cache, LumpSize); delete reader; RefCount = 1; From 0c5d55d0a3f35889d9f51fc3dd8317eea7cbd5d4 Mon Sep 17 00:00:00 2001 From: Edoardo Prezioso Date: Thu, 9 Apr 2015 21:16:59 +0200 Subject: [PATCH 103/144] - More GAMENAME replacements in strings. These changes will change only some displayed messages. --- src/g_game.cpp | 8 ++++---- src/g_shared/shared_sbar.cpp | 2 +- src/posix/i_system.cpp | 4 ++-- src/sound/music_midi_timidity.cpp | 4 ++-- src/win32/i_cd.cpp | 4 ++-- src/win32/i_crash.cpp | 5 +---- src/win32/i_main.cpp | 4 ++-- src/win32/win32video.cpp | 2 +- 8 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/g_game.cpp b/src/g_game.cpp index c442ee875..8101ca23d 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -2516,7 +2516,7 @@ bool G_ProcessIFFDemo (FString &mapname) id = ReadLong (&demo_p); if (id != ZDEM_ID) { - Printf ("Not a ZDoom demo file!\n"); + Printf ("Not a " GAMENAME " demo file!\n"); return true; } @@ -2541,12 +2541,12 @@ bool G_ProcessIFFDemo (FString &mapname) demover = ReadWord (&demo_p); // ZDoom version demo was created with if (demover < MINDEMOVERSION) { - Printf ("Demo requires an older version of ZDoom!\n"); + Printf ("Demo requires an older version of " GAMENAME "!\n"); //return true; } if (ReadWord (&demo_p) > DEMOGAMEVERSION) // Minimum ZDoom version { - Printf ("Demo requires a newer version of ZDoom!\n"); + Printf ("Demo requires a newer version of " GAMENAME "!\n"); return true; } if (demover >= 0x21a) @@ -2673,7 +2673,7 @@ void G_DoPlayDemo (void) if (ReadLong (&demo_p) != FORM_ID) { - const char *eek = "Cannot play non-ZDoom demos.\n"; + const char *eek = "Cannot play non-" GAMENAME " demos.\n"; C_ForgetCVars(); M_Free(demobuffer); diff --git a/src/g_shared/shared_sbar.cpp b/src/g_shared/shared_sbar.cpp index d8e113824..c0442fc74 100644 --- a/src/g_shared/shared_sbar.cpp +++ b/src/g_shared/shared_sbar.cpp @@ -1502,7 +1502,7 @@ void DBaseStatusBar::DrawTopStuff (EHudState state) { screen->DrawText (SmallFont, CR_TAN, 0, ST_Y - 40 * CleanYfac, "Demo was recorded with a different version\n" - "of ZDoom. Expect it to go out of sync.", + "of " GAMENAME ". Expect it to go out of sync.", DTA_CleanNoMove, true, TAG_DONE); } diff --git a/src/posix/i_system.cpp b/src/posix/i_system.cpp index 0a1b2f69a..fd6bb4c0c 100644 --- a/src/posix/i_system.cpp +++ b/src/posix/i_system.cpp @@ -331,7 +331,7 @@ int I_PickIWad_Gtk (WadStuff *wads, int numwads, bool showwin, int defaultiwad) gtk_container_add (GTK_CONTAINER(window), vbox); // Create the top label. - widget = gtk_label_new ("ZDoom found more than one IWAD\nSelect from the list below to determine which one to use:"); + widget = gtk_label_new (GAMENAME " found more than one IWAD\nSelect from the list below to determine which one to use:"); gtk_box_pack_start (GTK_BOX(vbox), widget, false, false, 0); gtk_misc_set_alignment (GTK_MISC(widget), 0, 0); @@ -450,7 +450,7 @@ int I_PickIWad (WadStuff *wads, int numwads, bool showwin, int defaultiwad) { FString cmd("kdialog --title \"" GAMESIG " "); cmd << GetVersionString() << ": Select an IWAD to use\"" - " --menu \"ZDoom found more than one IWAD\n" + " --menu \"" GAMENAME " found more than one IWAD\n" "Select from the list below to determine which one to use:\""; for(i = 0; i < numwads; ++i) diff --git a/src/sound/music_midi_timidity.cpp b/src/sound/music_midi_timidity.cpp index 38ba8557e..3ce8d89d3 100644 --- a/src/sound/music_midi_timidity.cpp +++ b/src/sound/music_midi_timidity.cpp @@ -22,7 +22,7 @@ void ChildSigHandler (int signum) #ifdef _WIN32 BOOL SafeTerminateProcess(HANDLE hProcess, UINT uExitCode); -static char TimidityTitle[] = "TiMidity (ZDoom Launched)"; +static char TimidityTitle[] = "TiMidity (" GAMENAME " Launched)"; const char TimidityPPMIDIDevice::EventName[] = "TiMidity Killer"; CVAR (String, timidity_exe, "timidity.exe", CVAR_ARCHIVE|CVAR_GLOBALCONFIG) @@ -347,7 +347,7 @@ bool TimidityPPMIDIDevice::ValidateTimidity() } if (!good) { - Printf(PRINT_BOLD, "ZDoom requires a special version of TiMidity++\n"); + Printf(PRINT_BOLD, GAMENAME " requires a special version of TiMidity++\n"); } UnmapViewOfFile((LPVOID)exeBase); diff --git a/src/win32/i_cd.cpp b/src/win32/i_cd.cpp index b4982b865..32477f2dd 100644 --- a/src/win32/i_cd.cpp +++ b/src/win32/i_cd.cpp @@ -175,7 +175,7 @@ bool FCDThread::Init () CD_WindowClass.style = CS_NOCLOSE; CD_WindowClass.lpfnWndProc = CD_WndProc; CD_WindowClass.hInstance = g_hInst; - CD_WindowClass.lpszClassName = "ZDoom CD Player"; + CD_WindowClass.lpszClassName = GAMENAME " CD Player"; CD_WindowAtom = RegisterClass (&CD_WindowClass); if (CD_WindowAtom == 0) @@ -183,7 +183,7 @@ bool FCDThread::Init () CD_Window = CreateWindow ( (LPCTSTR)(INT_PTR)(int)CD_WindowAtom, - "ZDoom CD Player", + GAMENAME " CD Player", 0, 0, 0, 10, 10, NULL, diff --git a/src/win32/i_crash.cpp b/src/win32/i_crash.cpp index 453549ab7..0735e3553 100644 --- a/src/win32/i_crash.cpp +++ b/src/win32/i_crash.cpp @@ -125,10 +125,7 @@ RtlVirtualUnwind ( #define UPLOAD_BOUNDARY "Von-DnrNbJl0 P9d_BD;cEEsQVWpYMq0pbZ6NUmYHus;yIbFbkgB?.N=YC5O=BGZm+Rab5" #define DBGHELP_URI "/msredist/dbghelp.dl_" -// If you are working on your own modified version of ZDoom, change -// the last part of the UPLOAD_AGENT (between parentheses) to your -// own program's name. e.g. (Skulltag) or (ZDaemon) or (ZDoomFu) -#define UPLOAD_AGENT "ZDoom/" VERSIONSTR " (" GAMESIG ")" +#define UPLOAD_AGENT GAMENAME "/" VERSIONSTR " (" GAMESIG ")" // Time, in milliseconds, to wait for a send() or recv() to complete. #define TIMEOUT 60000 diff --git a/src/win32/i_main.cpp b/src/win32/i_main.cpp index c63e7bc1c..ea167428f 100644 --- a/src/win32/i_main.cpp +++ b/src/win32/i_main.cpp @@ -143,7 +143,7 @@ LONG ErrorIconChar; // PRIVATE DATA DEFINITIONS ------------------------------------------------ -static const char WinClassName[] = "ZDoomMainWindow"; +static const char WinClassName[] = GAMENAME "MainWindow"; static HMODULE hwtsapi32; // handle to wtsapi32.dll static void (*TermFuncs[MAX_TERMS])(void); static int NumTerms; @@ -1224,7 +1224,7 @@ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE nothing, LPSTR cmdline, int n // This should only happen on basic Windows 95 installations, but since we // don't support Windows 95, we have no obligation to provide assistance in // getting it installed. - MessageBoxA(NULL, "Could not load riched20.dll", "ZDoom Error", MB_OK | MB_ICONSTOP); + MessageBoxA(NULL, "Could not load riched20.dll", GAMENAME " Error", MB_OK | MB_ICONSTOP); exit(0); } diff --git a/src/win32/win32video.cpp b/src/win32/win32video.cpp index b6d6d670e..3420ec0da 100644 --- a/src/win32/win32video.cpp +++ b/src/win32/win32video.cpp @@ -301,7 +301,7 @@ void Win32Video::InitDDraw () DDraw->Release (); DDraw = NULL; I_FatalError ("DirectDraw returned no display modes.\n\n" - "If you started ZDoom from a fullscreen DOS box, run it from " + "If you started " GAMENAME " from a fullscreen DOS box, run it from " "a DOS window instead. If that does not work, you may need to reboot."); } if (Args->CheckParm ("-2")) From a81dd798a82acc12ec1c561964b46ec30672e29d Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 11 Apr 2015 14:35:32 +0200 Subject: [PATCH 104/144] - fixed incorrect memset argument. --- src/resourcefiles/file_directory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/resourcefiles/file_directory.cpp b/src/resourcefiles/file_directory.cpp index 2be8da1b1..8b85425f1 100644 --- a/src/resourcefiles/file_directory.cpp +++ b/src/resourcefiles/file_directory.cpp @@ -341,7 +341,7 @@ int FDirectoryLump::FillCache() FileReader *reader = NewReader(); if (reader == NULL) { - memset(Cache, 0, sizeof(Cache)); + memset(Cache, 0, LumpSize); return 0; } reader->Read(Cache, LumpSize); From 0a1d1db0ba4e4f23c655b9b1a84da56324683495 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 11 Apr 2015 17:40:26 +0200 Subject: [PATCH 105/144] =?UTF-8?q?-=20fixed=20missing=20#inc=C3=B6udes=20?= =?UTF-8?q?of=20version.h=20for=20GAMENAME.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sound/music_midi_timidity.cpp | 3 +++ src/win32/i_cd.cpp | 1 + src/win32/win32video.cpp | 1 + 3 files changed, 5 insertions(+) diff --git a/src/sound/music_midi_timidity.cpp b/src/sound/music_midi_timidity.cpp index 3ce8d89d3..a8c099d52 100644 --- a/src/sound/music_midi_timidity.cpp +++ b/src/sound/music_midi_timidity.cpp @@ -2,6 +2,7 @@ #include "c_cvars.h" #include "cmdlib.h" #include "templates.h" +#include "version.h" #ifndef _WIN32 #include @@ -20,6 +21,8 @@ void ChildSigHandler (int signum) #endif #ifdef _WIN32 + + BOOL SafeTerminateProcess(HANDLE hProcess, UINT uExitCode); static char TimidityTitle[] = "TiMidity (" GAMENAME " Launched)"; diff --git a/src/win32/i_cd.cpp b/src/win32/i_cd.cpp index 32477f2dd..29167f276 100644 --- a/src/win32/i_cd.cpp +++ b/src/win32/i_cd.cpp @@ -45,6 +45,7 @@ #include "c_dispatch.h" #include "m_argv.h" #include "i_system.h" +#include "version.h" #include "i_cd.h" #include "helperthread.h" diff --git a/src/win32/win32video.cpp b/src/win32/win32video.cpp index 3420ec0da..3071ae8e7 100644 --- a/src/win32/win32video.cpp +++ b/src/win32/win32video.cpp @@ -70,6 +70,7 @@ #include "r_defs.h" #include "v_text.h" #include "r_swrenderer.h" +#include "version.h" #include "win32iface.h" From 9f2b3efd13c513d06ad7a647766d6618d64deb82 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 11 Apr 2015 18:09:18 +0200 Subject: [PATCH 106/144] - fixed: The terrain types array needs to be extended if a texture outside its bounds is processed - this can happen for textures with long names. --- src/p_terrain.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/p_terrain.h b/src/p_terrain.h index 9f00d07bc..482c66b00 100644 --- a/src/p_terrain.h +++ b/src/p_terrain.h @@ -69,6 +69,12 @@ public: } void Set(int index, int value) { + if ((unsigned)index >= Types.Size()) + { + int oldsize = Types.Size(); + Resize(index + 1); + memset(&Types[oldsize], 0xff, (index + 1 - oldsize)*sizeof(WORD)); + } Types[index] = value; } }; From 7217c69be433dcb47963ced1d4963d679caf8395 Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Sun, 12 Apr 2015 15:22:39 -0400 Subject: [PATCH 107/144] - Fixed portability issue in ANIMATED with systems that treat char as unsigned. --- src/textures/animations.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/textures/animations.cpp b/src/textures/animations.cpp index ffff062c6..0290a293f 100644 --- a/src/textures/animations.cpp +++ b/src/textures/animations.cpp @@ -177,8 +177,8 @@ void FTextureManager::InitAnimated (void) { FMemLump animatedlump = Wads.ReadLump (lumpnum); int animatedlen = Wads.LumpLength(lumpnum); - const char *animdefs = (const char *)animatedlump.GetMem(); - const char *anim_p; + const BYTE *animdefs = (const BYTE *)animatedlump.GetMem(); + const BYTE *anim_p; FTextureID pic1, pic2; int animtype; DWORD animspeed; @@ -186,7 +186,7 @@ void FTextureManager::InitAnimated (void) // Init animation animtype = FAnimDef::ANIM_Forward; - for (anim_p = animdefs; *anim_p != -1; anim_p += 23) + for (anim_p = animdefs; *anim_p != 0xFF; anim_p += 23) { // make sure the current chunk of data is inside the lump boundaries. if (anim_p + 22 >= animdefs + animatedlen) @@ -196,8 +196,8 @@ void FTextureManager::InitAnimated (void) if (*anim_p /* .istexture */ & 1) { // different episode ? - if (!(pic1 = CheckForTexture (anim_p + 10 /* .startname */, FTexture::TEX_Wall, texflags)).Exists() || - !(pic2 = CheckForTexture (anim_p + 1 /* .endname */, FTexture::TEX_Wall, texflags)).Exists()) + if (!(pic1 = CheckForTexture ((const char*)(anim_p + 10) /* .startname */, FTexture::TEX_Wall, texflags)).Exists() || + !(pic2 = CheckForTexture ((const char*)(anim_p + 1) /* .endname */, FTexture::TEX_Wall, texflags)).Exists()) continue; // [RH] Bit 1 set means allow decals on walls with this texture @@ -205,16 +205,16 @@ void FTextureManager::InitAnimated (void) } else { - if (!(pic1 = CheckForTexture (anim_p + 10 /* .startname */, FTexture::TEX_Flat, texflags)).Exists() || - !(pic2 = CheckForTexture (anim_p + 1 /* .startname */, FTexture::TEX_Flat, texflags)).Exists()) + if (!(pic1 = CheckForTexture ((const char*)(anim_p + 10) /* .startname */, FTexture::TEX_Flat, texflags)).Exists() || + !(pic2 = CheckForTexture ((const char*)(anim_p + 1) /* .startname */, FTexture::TEX_Flat, texflags)).Exists()) continue; } FTexture *tex1 = Texture(pic1); FTexture *tex2 = Texture(pic2); - animspeed = (BYTE(anim_p[19]) << 0) | (BYTE(anim_p[20]) << 8) | - (BYTE(anim_p[21]) << 16) | (BYTE(anim_p[22]) << 24); + animspeed = (anim_p[19] << 0) | (anim_p[20] << 8) | + (anim_p[21] << 16) | (anim_p[22] << 24); // SMMU-style swirly hack? Don't apply on already-warping texture if (animspeed > 65535 && tex1 != NULL && !tex1->bWarped) @@ -242,7 +242,7 @@ void FTextureManager::InitAnimated (void) if (pic1 == pic2) { // This animation only has one frame. Skip it. (Doom aborted instead.) - Printf ("Animation %s in ANIMATED has only one frame\n", anim_p + 10); + Printf ("Animation %s in ANIMATED has only one frame\n", (const char*)(anim_p + 10)); continue; } // [RH] Allow for backward animations as well as forward. From 6fc63daabd41a4dffbd63045ee72f1f3eb07bf82 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 13 Apr 2015 22:08:44 +0200 Subject: [PATCH 108/144] - fixed: Zips whose central directory cannot be read need to print an error message. --- src/resourcefiles/file_zip.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/resourcefiles/file_zip.cpp b/src/resourcefiles/file_zip.cpp index 5d6ff6c9e..c7e787c70 100644 --- a/src/resourcefiles/file_zip.cpp +++ b/src/resourcefiles/file_zip.cpp @@ -168,7 +168,7 @@ bool FZipFile::Open(bool quiet) if (centraldir == 0) { - if (!quiet) Printf("\n%s: ZIP file corrupt!\n", Filename); + if (!quiet) Printf(TEXTCOLOR_RED "\n%s: ZIP file corrupt!\n", Filename); return false; } @@ -180,7 +180,7 @@ bool FZipFile::Open(bool quiet) if (info.NumEntries != info.NumEntriesOnAllDisks || info.FirstDisk != 0 || info.DiskNumber != 0) { - if (!quiet) Printf("\n%s: Multipart Zip files are not supported.\n", Filename); + if (!quiet) Printf(TEXTCOLOR_RED "\n%s: Multipart Zip files are not supported.\n", Filename); return false; } @@ -188,9 +188,10 @@ bool FZipFile::Open(bool quiet) Lumps = new FZipLump[NumLumps]; // Load the entire central directory. Too bad that this contains variable length entries... - void *directory = malloc(LittleLong(info.DirectorySize)); + int dirsize = LittleLong(info.DirectorySize); + void *directory = malloc(dirsize); Reader->Seek(LittleLong(info.DirectoryOffset), SEEK_SET); - Reader->Read(directory, LittleLong(info.DirectorySize)); + Reader->Read(directory, dirsize); char *dirptr = (char*)directory; FZipLump *lump_p = Lumps; @@ -204,6 +205,13 @@ bool FZipFile::Open(bool quiet) LittleShort(zip_fh->NameLength) + LittleShort(zip_fh->ExtraLength) + LittleShort(zip_fh->CommentLength); + + if (dirptr > ((char*)directory) + dirsize) // This directory entry goes beyond the end of the file. + { + free(directory); + if (!quiet) Printf(TEXTCOLOR_RED "\n%s: Central directory corrupted.", Filename); + return false; + } // skip Directories if (name[len - 1] == '/' && LittleLong(zip_fh->UncompressedSize) == 0) @@ -221,7 +229,7 @@ bool FZipFile::Open(bool quiet) zip_fh->Method != METHOD_IMPLODE && zip_fh->Method != METHOD_SHRINK) { - if (!quiet) Printf("\n%s: '%s' uses an unsupported compression algorithm (#%d).\n", Filename, name.GetChars(), zip_fh->Method); + if (!quiet) Printf(TEXTCOLOR_YELLOW "\n%s: '%s' uses an unsupported compression algorithm (#%d).\n", Filename, name.GetChars(), zip_fh->Method); skipped++; continue; } @@ -229,7 +237,7 @@ bool FZipFile::Open(bool quiet) zip_fh->Flags = LittleShort(zip_fh->Flags); if (zip_fh->Flags & ZF_ENCRYPTED) { - if (!quiet) Printf("\n%s: '%s' is encrypted. Encryption is not supported.\n", Filename, name.GetChars()); + if (!quiet) Printf(TEXTCOLOR_YELLOW "\n%s: '%s' is encrypted. Encryption is not supported.\n", Filename, name.GetChars()); skipped++; continue; } @@ -260,7 +268,7 @@ bool FZipFile::Open(bool quiet) NumLumps -= skipped; free(directory); - if (!quiet) Printf(", %d lumps\n", NumLumps); + if (!quiet) Printf(TEXTCOLOR_NORMAL ", %d lumps\n", NumLumps); PostProcessArchive(&Lumps[0], sizeof(FZipLump)); return true; From ccb49a4242f9b06d3c01daba86ed3893f4ce1f26 Mon Sep 17 00:00:00 2001 From: Blue-Shadow Date: Tue, 14 Apr 2015 19:13:25 +0300 Subject: [PATCH 109/144] Fixed: missing '=' in conversation ID defs Conversation ID definitions in strifeteaser1 were missing the equal sign between the ID and actor class name. --- .../strifeteaser1/mapinfo/conversationids.txt | 282 +++++++++--------- 1 file changed, 141 insertions(+), 141 deletions(-) diff --git a/wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt b/wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt index 268702d52..b1b6ae380 100644 --- a/wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt +++ b/wadsrc/static/filter/strifeteaser1/mapinfo/conversationids.txt @@ -1,144 +1,144 @@ conversationids { - 2 WeaponSmith - 3 BarKeep - 4 Armorer - 5 Medic - 6 Peasant1 - 7 Peasant2 - 8 Peasant3 - 9 Peasant4 - 10 Peasant5 - 11 Peasant6 - 12 Peasant7 - 13 Peasant8 - 14 Peasant9 - 15 Peasant10 - 16 Peasant11 - 17 Peasant12 - 18 Peasant13 - 19 Peasant14 - 20 Peasant15 - 21 Peasant16 - 22 Peasant17 - 23 Peasant18 - 24 Peasant19 - 25 Peasant20 - 26 Peasant21 - 27 Peasant22 - 37 Beggar1 - 38 Beggar2 - 39 Beggar3 - 40 Beggar4 - 41 Beggar5 - 42 Rebel1 - 43 Rebel2 - 44 Rebel3 - 45 Rebel4 - 46 Rebel5 - 47 Rebel6 - 48 Macil1 - 49 Macil2 - 52 AcolyteTan - 53 AcolyteRed - 54 AcolyteRust - 55 AcolyteGray - 56 AcolyteDGreen - 57 AcolyteGold - 58 AcolyteShadow - 61 Templar - 62 Oracle - 63 Loremaster - 70 AlienSpectre2 - 94 InquisitorArm - 121 MedPatch - 122 MedicalKit - 123 SurgeryKit - 124 DegninOre - 125 MetalArmor - 126 LeatherArmor - 129 BaseKey - 130 GovsKey - 131 Passcard - 132 IDBadge - 133 PrisonKey - 134 SeveredHand - 135 Power1Key - 136 Power2Key - 137 Power3Key - 138 GoldKey - 139 IDCard - 140 SilverKey - 141 OracleKey - 142 MilitaryID - 143 OrderKey - 144 WarehouseKey - 145 BrassKey - 146 RedCrystalKey - 147 BlueCrystalKey - 148 ChapelKey - 149 CatacombKey - 150 SecurityKey - 151 CoreKey - 152 MaulerKey - 153 FactoryKey - 154 MineKey - 155 NewKey5 - 156 ShadowArmor - 157 EnvironmentalSuit - 158 GuardUniform - 159 OfficersUniform - 160 StrifeMap - 161 Coin - 162 Gold10 - 163 Gold25 - 164 Gold50 - 165 BeldinsRing - 166 OfferingChalice - 167 Ear - 168 Communicator - 169 Targeter - 170 HEGrenadeRounds - 171 PhosphorusGrenadeRounds - 173 ClipOfBullets - 174 BoxOfBullets - 175 MiniMissiles - 176 CrateOfMissiles - 177 EnergyPod - 178 EnergyPack - 179 PoisonBolts - 180 ElectricBolts - 181 AmmoSatchel - 182 AssaultGun - 183 AssaultGunStanding - 184 FlameThrower - 185 FlameThrowerParts - 186 MiniMissileLauncher - 187 Mauler - 188 StrifeCrossbow - 189 StrifeGrenadeLauncher - 190 Sigil1 - 191 Sigil2 - 192 Sigil3 - 193 Sigil4 - 194 Sigil5 - 196 RatBuddy - 230 DeadCrusader - 280 AmmoFillup - 281 HealthFillup - 282 info - 283 RaiseAlarm - 284 OpenDoor222 - 285 CloseDoor222 - 286 PrisonPass - 287 UpgradeStamina - 288 UpgradeAccuracy - 289 InterrogatorReport - 292 OraclePass - 293 QuestItem1 - 294 QuestItem2 - 295 QuestItem3 - 296 QuestItem4 - 297 QuestItem5 - 298 QuestItem6 + 2 = WeaponSmith + 3 = BarKeep + 4 = Armorer + 5 = Medic + 6 = Peasant1 + 7 = Peasant2 + 8 = Peasant3 + 9 = Peasant4 + 10 = Peasant5 + 11 = Peasant6 + 12 = Peasant7 + 13 = Peasant8 + 14 = Peasant9 + 15 = Peasant10 + 16 = Peasant11 + 17 = Peasant12 + 18 = Peasant13 + 19 = Peasant14 + 20 = Peasant15 + 21 = Peasant16 + 22 = Peasant17 + 23 = Peasant18 + 24 = Peasant19 + 25 = Peasant20 + 26 = Peasant21 + 27 = Peasant22 + 37 = Beggar1 + 38 = Beggar2 + 39 = Beggar3 + 40 = Beggar4 + 41 = Beggar5 + 42 = Rebel1 + 43 = Rebel2 + 44 = Rebel3 + 45 = Rebel4 + 46 = Rebel5 + 47 = Rebel6 + 48 = Macil1 + 49 = Macil2 + 52 = AcolyteTan + 53 = AcolyteRed + 54 = AcolyteRust + 55 = AcolyteGray + 56 = AcolyteDGreen + 57 = AcolyteGold + 58 = AcolyteShadow + 61 = Templar + 62 = Oracle + 63 = Loremaster + 70 = AlienSpectre2 + 94 = InquisitorArm + 121 = MedPatch + 122 = MedicalKit + 123 = SurgeryKit + 124 = DegninOre + 125 = MetalArmor + 126 = LeatherArmor + 129 = BaseKey + 130 = GovsKey + 131 = Passcard + 132 = IDBadge + 133 = PrisonKey + 134 = SeveredHand + 135 = Power1Key + 136 = Power2Key + 137 = Power3Key + 138 = GoldKey + 139 = IDCard + 140 = SilverKey + 141 = OracleKey + 142 = MilitaryID + 143 = OrderKey + 144 = WarehouseKey + 145 = BrassKey + 146 = RedCrystalKey + 147 = BlueCrystalKey + 148 = ChapelKey + 149 = CatacombKey + 150 = SecurityKey + 151 = CoreKey + 152 = MaulerKey + 153 = FactoryKey + 154 = MineKey + 155 = NewKey5 + 156 = ShadowArmor + 157 = EnvironmentalSuit + 158 = GuardUniform + 159 = OfficersUniform + 160 = StrifeMap + 161 = Coin + 162 = Gold10 + 163 = Gold25 + 164 = Gold50 + 165 = BeldinsRing + 166 = OfferingChalice + 167 = Ear + 168 = Communicator + 169 = Targeter + 170 = HEGrenadeRounds + 171 = PhosphorusGrenadeRounds + 173 = ClipOfBullets + 174 = BoxOfBullets + 175 = MiniMissiles + 176 = CrateOfMissiles + 177 = EnergyPod + 178 = EnergyPack + 179 = PoisonBolts + 180 = ElectricBolts + 181 = AmmoSatchel + 182 = AssaultGun + 183 = AssaultGunStanding + 184 = FlameThrower + 185 = FlameThrowerParts + 186 = MiniMissileLauncher + 187 = Mauler + 188 = StrifeCrossbow + 189 = StrifeGrenadeLauncher + 190 = Sigil1 + 191 = Sigil2 + 192 = Sigil3 + 193 = Sigil4 + 194 = Sigil5 + 196 = RatBuddy + 230 = DeadCrusader + 280 = AmmoFillup + 281 = HealthFillup + 282 = info + 283 = RaiseAlarm + 284 = OpenDoor222 + 285 = CloseDoor222 + 286 = PrisonPass + 287 = UpgradeStamina + 288 = UpgradeAccuracy + 289 = InterrogatorReport + 292 = OraclePass + 293 = QuestItem1 + 294 = QuestItem2 + 295 = QuestItem3 + 296 = QuestItem4 + 297 = QuestItem5 + 298 = QuestItem6 } From 238046655c13329a150d65e27d344bf93f38792c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 31 Mar 2015 17:09:19 +0200 Subject: [PATCH 110/144] - wrapped all accesses to the sector tag into accessor functions, as preparation for allowing multiple tags per sector. --- src/compatibility.cpp | 2 +- src/fragglescript/t_func.cpp | 18 ++++-------------- src/g_strife/a_strifestuff.cpp | 2 +- src/p_acs.cpp | 4 ++-- src/p_floor.cpp | 2 +- src/p_lights.cpp | 2 +- src/p_linkedsectors.cpp | 2 +- src/p_lnspec.cpp | 6 +++--- src/p_mobj.cpp | 2 +- src/p_sectors.cpp | 30 ++++++++++++++++++++++++++++++ src/p_setup.cpp | 20 ++++++-------------- src/p_teleport.cpp | 4 ++-- src/p_udmf.cpp | 2 +- src/p_writemap.cpp | 2 +- src/p_xlat.cpp | 2 +- src/r_defs.h | 5 +++++ 16 files changed, 61 insertions(+), 44 deletions(-) diff --git a/src/compatibility.cpp b/src/compatibility.cpp index fd309ec8b..ff3a67e61 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -551,7 +551,7 @@ void SetCompatibilityParams() { if ((unsigned)CompatParams[i + 1] < (unsigned)numsectors) { - sectors[CompatParams[i + 1]].tag = CompatParams[i + 2]; + sectors[CompatParams[i + 1]].SetTag(CompatParams[i + 2]); } i += 3; break; diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 0bddcd7fd..0359aa423 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -1158,7 +1158,7 @@ void FParser::SF_ObjSector(void) } t_return.type = svt_int; - t_return.value.i = mo ? mo->Sector->tag : 0; // nullptr check + t_return.value.i = mo ? mo->Sector->GetTag() : 0; // nullptr check } //========================================================================== @@ -4291,7 +4291,7 @@ void FParser::SF_KillInSector() while ((mo=it.Next())) { - if (mo->flags3&MF3_ISMONSTER && mo->Sector->tag==tag) P_DamageMobj(mo, NULL, NULL, 1000000, NAME_Massacre); + if (mo->flags3&MF3_ISMONSTER && mo->Sector->HasTag(tag)) P_DamageMobj(mo, NULL, NULL, 1000000, NAME_Massacre); } } } @@ -4388,19 +4388,9 @@ void FParser::SF_ChangeTag() { for (int secnum = -1; (secnum = P_FindSectorFromTag (t_argv[0].value.i, secnum)) >= 0; ) { - sectors[secnum].tag=t_argv[1].value.i; - } - - // Recreate the hash tables - int i; - - for (i=numsectors; --i>=0; ) sectors[i].firsttag = -1; - for (i=numsectors; --i>=0; ) - { - int j = (unsigned) sectors[i].tag % (unsigned) numsectors; - sectors[i].nexttag = sectors[j].firsttag; - sectors[j].firsttag = i; + sectors[secnum].SetTag(t_argv[1].value.i); } + sector_t::HashTags(); } } diff --git a/src/g_strife/a_strifestuff.cpp b/src/g_strife/a_strifestuff.cpp index 95b0030a0..e8dff183f 100644 --- a/src/g_strife/a_strifestuff.cpp +++ b/src/g_strife/a_strifestuff.cpp @@ -636,7 +636,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CheckTerrain) } else if ((sec->special & 0xFF) == Scroll_StrifeCurrent) { - int anglespeed = sec->tag - 100; + int anglespeed = sec->GetTag() - 100; fixed_t speed = (anglespeed % 10) << (FRACBITS - 4); angle_t finean = (anglespeed / 10) << (32-3); finean >>= ANGLETOFINESHIFT; diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 5556507b7..3dd0cfef0 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -3211,7 +3211,7 @@ do_count: if (actor->health > 0 && (kind == NULL || actor->IsA (kind))) { - if (actor->Sector->tag == tag || tag == -1) + if (actor->Sector->HasTag(tag) || tag == -1) { // Don't count items in somebody's inventory if (!actor->IsKindOf (RUNTIME_CLASS(AInventory)) || @@ -3231,7 +3231,7 @@ do_count: if (actor->health > 0 && (kind == NULL || actor->IsA (kind))) { - if (actor->Sector->tag == tag || tag == -1) + if (actor->Sector->HasTag(tag) || tag == -1) { // Don't count items in somebody's inventory if (!actor->IsKindOf (RUNTIME_CLASS(AInventory)) || diff --git a/src/p_floor.cpp b/src/p_floor.cpp index 9a5a6eaf8..231ccd5a3 100644 --- a/src/p_floor.cpp +++ b/src/p_floor.cpp @@ -572,7 +572,7 @@ static int P_FindSectorFromTagLinear (int tag, int start) { for (int i=start+1;iGetSector()->tag == tag) + if (effect->GetSector()->HasTag(tag)) { effect->Destroy(); } diff --git a/src/p_linkedsectors.cpp b/src/p_linkedsectors.cpp index 2d06bc043..acf1d6906 100644 --- a/src/p_linkedsectors.cpp +++ b/src/p_linkedsectors.cpp @@ -278,7 +278,7 @@ static void RemoveTaggedSectors(extsector_t::linked::plane &scrollplane, int tag { for(int i = scrollplane.Sectors.Size()-1; i>=0; i--) { - if (scrollplane.Sectors[i].Sector->tag == tag) + if (scrollplane.Sectors[i].Sector->HasTag(tag)) { scrollplane.Sectors.Delete(i); } diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index b550eeb77..76f7a0371 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -1266,7 +1266,7 @@ FUNC(LS_Thing_Destroy) while (actor) { AActor *temp = iterator.Next (); - if (actor->flags & MF_SHOOTABLE && actor->Sector->tag == arg2) + if (actor->flags & MF_SHOOTABLE && actor->Sector->HasTag(arg2)) P_DamageMobj (actor, NULL, it, arg1 ? TELEFRAG_DAMAGE : actor->health, NAME_None); actor = temp; } @@ -1279,7 +1279,7 @@ FUNC(LS_Thing_Destroy) while (actor) { AActor *temp = iterator.Next (); - if (actor->flags & MF_SHOOTABLE && (arg2 == 0 || actor->Sector->tag == arg2)) + if (actor->flags & MF_SHOOTABLE && (arg2 == 0 || actor->Sector->HasTag(arg2))) P_DamageMobj (actor, NULL, it, arg1 ? TELEFRAG_DAMAGE : actor->health, NAME_None); actor = temp; } @@ -2167,7 +2167,7 @@ static void SetScroller (int tag, DScroller::EScrollType type, fixed_t dx, fixed { if (scroller->IsType (type)) { - if (sectors[scroller->GetAffectee ()].tag == tag) + if (sectors[scroller->GetAffectee ()].HasTag(tag)) { i++; scroller->SetRate (dx, dy); diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 2571413c8..ffb12fddd 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -3437,7 +3437,7 @@ void AActor::Tick () } else if (scrolltype == Scroll_StrifeCurrent) { // Strife scroll special - int anglespeed = sec->tag - 100; + int anglespeed = sec->GetTag() - 100; fixed_t carryspeed = DivScale32 (anglespeed % 10, 16*CARRYFACTOR); angle_t fineangle = (anglespeed / 10) << (32-3); fineangle >>= ANGLETOFINESHIFT; diff --git a/src/p_sectors.cpp b/src/p_sectors.cpp index 904c76c1b..f34eadb44 100644 --- a/src/p_sectors.cpp +++ b/src/p_sectors.cpp @@ -825,6 +825,36 @@ sector_t *sector_t::GetHeightSec() const } +bool sector_t::HasTag(int checktag) const +{ + return tag == checktag; +} + +void sector_t::SetTag(int tagnum, bool discardall) +{ + tag = tagnum; +} + +int sector_t::GetTag() const +{ + return tag; +} + +void sector_t::HashTags() +{ + int i; + + for (i=numsectors; --i>=0; ) // Initially make all slots empty. + sectors[i].firsttag = -1; + for (i=numsectors; --i>=0; ) // Proceed from last to first sector + { // so that lower sectors appear first + int j = (unsigned) sectors[i].tag % (unsigned) numsectors; // Hash func + sectors[i].nexttag = sectors[j].firsttag; // Prepend sector to chain + sectors[j].firsttag = i; + } +} + + bool secplane_t::CopyPlaneIfValid (secplane_t *dest, const secplane_t *opp) const { bool copy = false; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 80c84ffde..990a18ae5 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1514,7 +1514,7 @@ void P_LoadSectors (MapData *map, FMissingTextureTracker &missingtex) else // [RH] Translate to new sector special ss->special = P_TranslateSectorSpecial (LittleShort(ms->special)); ss->secretsector = !!(ss->special&SECRET_MASK); - ss->tag = LittleShort(ms->tag); + ss->SetTag(LittleShort(ms->tag)); ss->thinglist = NULL; ss->touching_thinglist = NULL; // phares 3/14/98 ss->seqType = defSeqType; @@ -2495,7 +2495,7 @@ void P_ProcessSideTextures(bool checktranmap, side_t *sd, sector_t *sec, intmaps for (s = 0; s < numsectors; s++) { - if (sectors[s].tag == tag) + if (sectors[s].HasTag(tag)) { if (!colorgood) color = sectors[s].ColorMap->Color; if (!foggood) fog = sectors[s].ColorMap->Fade; @@ -3131,9 +3131,9 @@ static void P_GroupLines (bool buildmap) { if (sector->linecount == 0) { - Printf ("Sector %i (tag %i) has no lines\n", i, sector->tag); + Printf ("Sector %i (tag %i) has no lines\n", i, sector->GetTag()); // 0 the sector's tag so that no specials can use it - sector->tag = 0; + sector->SetTag(0); } else { @@ -3309,18 +3309,10 @@ void P_LoadBehavior (MapData * map) // Hash the sector tags across the sectors and linedefs. static void P_InitTagLists () { - int i; - - for (i=numsectors; --i>=0; ) // Initially make all slots empty. - sectors[i].firsttag = -1; - for (i=numsectors; --i>=0; ) // Proceed from last to first sector - { // so that lower sectors appear first - int j = (unsigned) sectors[i].tag % (unsigned) numsectors; // Hash func - sectors[i].nexttag = sectors[j].firsttag; // Prepend sector to chain - sectors[j].firsttag = i; - } + sector_t::HashTags(); // killough 4/17/98: same thing, only for linedefs + int i; for (i=numlines; --i>=0; ) // Initially make all slots empty. lines[i].firstid = -1; diff --git a/src/p_teleport.cpp b/src/p_teleport.cpp index 3e3b03c4e..e30457b15 100644 --- a/src/p_teleport.cpp +++ b/src/p_teleport.cpp @@ -250,7 +250,7 @@ static AActor *SelectTeleDest (int tid, int tag, bool norandom) int count = 0; while ( (searcher = iterator.Next ()) ) { - if (tag == 0 || searcher->Sector->tag == tag) + if (tag == 0 || searcher->Sector->HasTag(tag)) { count++; } @@ -289,7 +289,7 @@ static AActor *SelectTeleDest (int tid, int tag, bool norandom) while (count > 0) { searcher = iterator.Next (); - if (tag == 0 || searcher->Sector->tag == tag) + if (tag == 0 || searcher->Sector->HasTag(tag)) { count--; } diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 31634ee81..4ad3c3efc 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -1316,7 +1316,7 @@ public: continue; case NAME_Id: - sec->tag = (short)CheckInt(key); + sec->SetTag((short)CheckInt(key), false); continue; default: diff --git a/src/p_writemap.cpp b/src/p_writemap.cpp index 83ed40b5b..e21eb506e 100644 --- a/src/p_writemap.cpp +++ b/src/p_writemap.cpp @@ -262,7 +262,7 @@ static int WriteSECTORS (FILE *file) uppercopy (ms.ceilingpic, GetTextureName (sectors[i].GetTexture(sector_t::ceiling))); ms.lightlevel = LittleShort((short)sectors[i].lightlevel); ms.special = LittleShort(sectors[i].special); - ms.tag = LittleShort(sectors[i].tag); + ms.tag = LittleShort(sectors[i].GetTag()); fwrite (&ms, sizeof(ms), 1, file); } return numsectors * sizeof(ms); diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index be2d154c3..68780fdba 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -304,7 +304,7 @@ void P_TranslateTeleportThings () while ( (dest = iterator.Next()) ) { - if (dest->Sector->tag == 0) + if (dest->Sector->GetTag() == 0) { dest->tid = 1; dest->AddToHash (); diff --git a/src/r_defs.h b/src/r_defs.h index dd2136508..5cdbb9f82 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -633,6 +633,11 @@ struct sector_t return pos == floor? floorplane:ceilingplane; } + bool HasTag(int checktag) const; + void SetTag(int tagnum, bool discardall = true); + int GetTag() const; + static void HashTags(); + bool PlaneMoving(int pos); From 2faf836aa143afa2fd378a8fc90effb029d3ce23 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 14 Apr 2015 18:48:19 +0200 Subject: [PATCH 111/144] - some minor rework of tag access interface after I realized that some stuff (e.g. Strife's scrolling sector special) need the primary tag to treated specially. --- src/compatibility.cpp | 3 ++- src/fragglescript/t_func.cpp | 5 +++-- src/g_strife/a_strifestuff.cpp | 2 +- src/p_mobj.cpp | 2 +- src/p_sectors.cpp | 9 +++++++-- src/p_setup.cpp | 6 +++--- src/p_udmf.cpp | 2 +- src/p_writemap.cpp | 2 +- src/p_xlat.cpp | 2 +- src/r_defs.h | 5 +++-- 10 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/compatibility.cpp b/src/compatibility.cpp index ff3a67e61..096811def 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -551,7 +551,8 @@ void SetCompatibilityParams() { if ((unsigned)CompatParams[i + 1] < (unsigned)numsectors) { - sectors[CompatParams[i + 1]].SetTag(CompatParams[i + 2]); + sectors[CompatParams[i + 1]].ClearTags(); + sectors[CompatParams[i + 1]].SetMainTag(CompatParams[i + 2]); } i += 3; break; diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 0359aa423..039d261d7 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -1158,7 +1158,7 @@ void FParser::SF_ObjSector(void) } t_return.type = svt_int; - t_return.value.i = mo ? mo->Sector->GetTag() : 0; // nullptr check + t_return.value.i = mo ? mo->Sector->GetMainTag() : 0; // nullptr check } //========================================================================== @@ -4388,7 +4388,8 @@ void FParser::SF_ChangeTag() { for (int secnum = -1; (secnum = P_FindSectorFromTag (t_argv[0].value.i, secnum)) >= 0; ) { - sectors[secnum].SetTag(t_argv[1].value.i); + sectors[secnum].ClearTags(); + sectors[secnum].SetMainTag(t_argv[1].value.i); } sector_t::HashTags(); } diff --git a/src/g_strife/a_strifestuff.cpp b/src/g_strife/a_strifestuff.cpp index e8dff183f..aa9f629db 100644 --- a/src/g_strife/a_strifestuff.cpp +++ b/src/g_strife/a_strifestuff.cpp @@ -636,7 +636,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CheckTerrain) } else if ((sec->special & 0xFF) == Scroll_StrifeCurrent) { - int anglespeed = sec->GetTag() - 100; + int anglespeed = sec->GetMainTag() - 100; fixed_t speed = (anglespeed % 10) << (FRACBITS - 4); angle_t finean = (anglespeed / 10) << (32-3); finean >>= ANGLETOFINESHIFT; diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index ffb12fddd..14837a1e2 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -3437,7 +3437,7 @@ void AActor::Tick () } else if (scrolltype == Scroll_StrifeCurrent) { // Strife scroll special - int anglespeed = sec->GetTag() - 100; + int anglespeed = sec->GetMainTag() - 100; fixed_t carryspeed = DivScale32 (anglespeed % 10, 16*CARRYFACTOR); angle_t fineangle = (anglespeed / 10) << (32-3); fineangle >>= ANGLETOFINESHIFT; diff --git a/src/p_sectors.cpp b/src/p_sectors.cpp index f34eadb44..d96540351 100644 --- a/src/p_sectors.cpp +++ b/src/p_sectors.cpp @@ -830,16 +830,21 @@ bool sector_t::HasTag(int checktag) const return tag == checktag; } -void sector_t::SetTag(int tagnum, bool discardall) +void sector_t::SetMainTag(int tagnum) { tag = tagnum; } -int sector_t::GetTag() const +int sector_t::GetMainTag() const { return tag; } +void sector_t::ClearTags() +{ + tag = 0; +} + void sector_t::HashTags() { int i; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 990a18ae5..62270567c 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1514,7 +1514,7 @@ void P_LoadSectors (MapData *map, FMissingTextureTracker &missingtex) else // [RH] Translate to new sector special ss->special = P_TranslateSectorSpecial (LittleShort(ms->special)); ss->secretsector = !!(ss->special&SECRET_MASK); - ss->SetTag(LittleShort(ms->tag)); + ss->SetMainTag(LittleShort(ms->tag)); ss->thinglist = NULL; ss->touching_thinglist = NULL; // phares 3/14/98 ss->seqType = defSeqType; @@ -3131,9 +3131,9 @@ static void P_GroupLines (bool buildmap) { if (sector->linecount == 0) { - Printf ("Sector %i (tag %i) has no lines\n", i, sector->GetTag()); + Printf ("Sector %i (tag %i) has no lines\n", i, sector->GetMainTag()); // 0 the sector's tag so that no specials can use it - sector->SetTag(0); + sector->ClearTags(); } else { diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 4ad3c3efc..aab952f21 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -1316,7 +1316,7 @@ public: continue; case NAME_Id: - sec->SetTag((short)CheckInt(key), false); + sec->SetMainTag((short)CheckInt(key)); continue; default: diff --git a/src/p_writemap.cpp b/src/p_writemap.cpp index e21eb506e..2f11ee5c1 100644 --- a/src/p_writemap.cpp +++ b/src/p_writemap.cpp @@ -262,7 +262,7 @@ static int WriteSECTORS (FILE *file) uppercopy (ms.ceilingpic, GetTextureName (sectors[i].GetTexture(sector_t::ceiling))); ms.lightlevel = LittleShort((short)sectors[i].lightlevel); ms.special = LittleShort(sectors[i].special); - ms.tag = LittleShort(sectors[i].GetTag()); + ms.tag = LittleShort(sectors[i].GetMainTag()); fwrite (&ms, sizeof(ms), 1, file); } return numsectors * sizeof(ms); diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index 68780fdba..2d48e6053 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -304,7 +304,7 @@ void P_TranslateTeleportThings () while ( (dest = iterator.Next()) ) { - if (dest->Sector->GetTag() == 0) + if (dest->Sector->GetMainTag() == 0) { dest->tid = 1; dest->AddToHash (); diff --git a/src/r_defs.h b/src/r_defs.h index 5cdbb9f82..41821cb62 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -634,8 +634,9 @@ struct sector_t } bool HasTag(int checktag) const; - void SetTag(int tagnum, bool discardall = true); - int GetTag() const; + void SetMainTag(int tagnum); + int GetMainTag() const; + void ClearTags(); static void HashTags(); bool PlaneMoving(int pos); From 425e5b9ffcba30d8bf212a7a76759bab2dc0e73b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 14 Apr 2015 22:39:57 +0200 Subject: [PATCH 112/144] - replaced P_FindSectorFromTag with an FSectorTagIterator class. This is done to encapsulate the gory details of tag search in one place so that the implementation of multiple tags per sector remains contained to a few isolated spots in the code. This also moves the special 'tag == 0 -> activate backsector' handling into the iterator class. --- src/fragglescript/t_func.cpp | 76 +++++++++----- src/fragglescript/t_script.cpp | 6 +- src/g_shared/a_skies.cpp | 4 +- src/p_3dfloors.cpp | 3 +- src/p_3dmidtex.cpp | 4 +- src/p_acs.cpp | 29 +++--- src/p_ceiling.cpp | 4 +- src/p_doors.cpp | 7 +- src/p_floor.cpp | 114 ++++----------------- src/p_lights.cpp | 54 +++++----- src/p_linkedsectors.cpp | 4 +- src/p_lnspec.cpp | 89 +++++++++------- src/p_pillar.cpp | 12 +-- src/p_plats.cpp | 51 ++++------ src/p_slopes.cpp | 2 +- src/p_spec.cpp | 181 +++++++++++++++++++++------------ src/p_spec.h | 39 ++++++- src/p_teleport.cpp | 8 +- 18 files changed, 356 insertions(+), 331 deletions(-) diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 039d261d7..5aae0d572 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -312,18 +312,24 @@ static int T_GetPlayerNum(const svalue_t &arg) // sectors directly by passing a negative value // //========================================================================== -int T_FindSectorFromTag(int tagnum,int startsector) +class FSSectorTagIterator : public FSectorTagIterator { - if (tagnum<=0) +public: + FSSectorTagIterator(int tag) + : FSectorTagIterator(tag) { - if (startsector<0) + if (tag < 0) { - if (tagnum==-32768) return 0; - if (-tagnum= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { sector = §ors[i]; S_Sound(sector, CHAN_BODY, T_FindSound(stringvalue(t_argv[1])), 1.0f, ATTN_NORM); @@ -1595,7 +1602,8 @@ void FParser::SF_FloorHeight(void) // set all sectors with tag - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { if (sectors[i].floordata) continue; // don't move floors that are active! @@ -1612,7 +1620,7 @@ void FParser::SF_FloorHeight(void) } else { - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { script_error("sector not found with tagnum %i\n", tagnum); @@ -1671,7 +1679,8 @@ void FParser::SF_MoveFloor(void) // move all sectors with tag - while ((secnum = T_FindSectorFromTag(tagnum, secnum)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((secnum = itr.Next()) >= 0) { sec = §ors[secnum]; // Don't start a second thinker on the same floor @@ -1733,7 +1742,8 @@ void FParser::SF_CeilingHeight(void) dest = fixedvalue(t_argv[1]); // set all sectors with tag - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { if (sectors[i].ceilingdata) continue; // don't move ceilings that are active! @@ -1750,7 +1760,7 @@ void FParser::SF_CeilingHeight(void) } else { - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { script_error("sector not found with tagnum %i\n", tagnum); @@ -1823,7 +1833,8 @@ void FParser::SF_MoveCeiling(void) silent=t_argc>4 ? intvalue(t_argv[4]):1; // move all sectors with tag - while ((secnum = T_FindSectorFromTag(tagnum, secnum)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((secnum = itr.Next()) >= 0) { sec = §ors[secnum]; @@ -1851,7 +1862,7 @@ void FParser::SF_LightLevel(void) tagnum = intvalue(t_argv[0]); // argv is sector tag - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { @@ -1865,7 +1876,8 @@ void FParser::SF_LightLevel(void) int i = -1; // set all sectors with tag - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { sectors[i].SetLightLevel(intvalue(t_argv[1])); } @@ -1984,7 +1996,8 @@ void FParser::SF_FadeLight(void) destlevel = intvalue(t_argv[1]); speed = t_argc>2 ? intvalue(t_argv[2]) : 1; - for (i = -1; (i = P_FindSectorFromTag(sectag,i)) >= 0;) + FSectorTagIterator it(sectag); + while ((i = it.Next()) >= 0) { if (!sectors[i].lightingdata) new DLightLevel(§ors[i],destlevel,speed); } @@ -2006,7 +2019,7 @@ void FParser::SF_FloorTexture(void) tagnum = intvalue(t_argv[0]); // argv is sector tag - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { script_error("sector not found with tagnum %i\n", tagnum); return;} @@ -2019,7 +2032,8 @@ void FParser::SF_FloorTexture(void) FTextureID picnum = TexMan.GetTexture(t_argv[1].string, FTexture::TEX_Flat, FTextureManager::TEXMAN_Overridable); // set all sectors with tag - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { sectors[i].SetTexture(sector_t::floor, picnum); } @@ -2057,7 +2071,7 @@ void FParser::SF_SectorColormap(void) tagnum = intvalue(t_argv[0]); // argv is sector tag - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { script_error("sector not found with tagnum %i\n", tagnum); return;} @@ -2068,7 +2082,8 @@ void FParser::SF_SectorColormap(void) { DWORD cm = R_ColormapNumForName(t_argv[1].value.s); - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { sectors[i].midmap=cm; sectors[i].heightsec=§ors[i]; @@ -2094,7 +2109,7 @@ void FParser::SF_CeilingTexture(void) tagnum = intvalue(t_argv[0]); // argv is sector tag - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { script_error("sector not found with tagnum %i\n", tagnum); return;} @@ -2107,7 +2122,8 @@ void FParser::SF_CeilingTexture(void) FTextureID picnum = TexMan.GetTexture(t_argv[1].string, FTexture::TEX_Flat, FTextureManager::TEXMAN_Overridable); // set all sectors with tag - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { sectors[i].SetTexture(sector_t::ceiling, picnum); } @@ -4201,7 +4217,7 @@ void FParser::SF_SetColor(void) { tagnum = intvalue(t_argv[0]); - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { @@ -4222,7 +4238,8 @@ void FParser::SF_SetColor(void) else return; // set all sectors with tag - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { sectors[i].ColorMap = GetSpecialLights (color, sectors[i].ColorMap->Fade, 0); } @@ -4314,7 +4331,7 @@ void FParser::SF_SectorType(void) tagnum = intvalue(t_argv[0]); // argv is sector tag - secnum = T_FindSectorFromTag(tagnum, -1); + secnum = T_FindFirstSectorFromTag(tagnum); if(secnum < 0) { script_error("sector not found with tagnum %i\n", tagnum); return;} @@ -4327,7 +4344,8 @@ void FParser::SF_SectorType(void) int spec = intvalue(t_argv[1]); // set all sectors with tag - while ((i = T_FindSectorFromTag(tagnum, i)) >= 0) + FSSectorTagIterator itr(tagnum); + while ((i = itr.Next()) >= 0) { sectors[i].special = spec; } @@ -4386,7 +4404,9 @@ void FParser::SF_ChangeTag() { if (CheckArgs(2)) { - for (int secnum = -1; (secnum = P_FindSectorFromTag (t_argv[0].value.i, secnum)) >= 0; ) + FSectorTagIterator it(t_argv[0].value.i); + int secnum; + while ((secnum = it.Next()) >= 0) { sectors[secnum].ClearTags(); sectors[secnum].SetMainTag(t_argv[1].value.i); diff --git a/src/fragglescript/t_script.cpp b/src/fragglescript/t_script.cpp index 09c65d073..98911a418 100644 --- a/src/fragglescript/t_script.cpp +++ b/src/fragglescript/t_script.cpp @@ -452,9 +452,9 @@ bool DFraggleThinker::wait_finished(DRunningScript *script) case wt_tagwait: { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag(script->wait_data, secnum)) >= 0) + int secnum; + FSectorTagIterator itr(script->wait_data); + while ((secnum = itr.Next()) >= 0) { sector_t *sec = §ors[secnum]; if(sec->floordata || sec->ceilingdata || sec->lightingdata) diff --git a/src/g_shared/a_skies.cpp b/src/g_shared/a_skies.cpp index 616b87c9e..d62a2a07b 100644 --- a/src/g_shared/a_skies.cpp +++ b/src/g_shared/a_skies.cpp @@ -119,7 +119,9 @@ void ASkyCamCompat::BeginPlay () // Finally, skyboxify all tagged sectors // This involves changing their texture to the sky flat, because while // EE works with any texture for its skybox portals, ZDoom doesn't. - for (int secnum =-1; (secnum = P_FindSectorFromTag (skybox_id, secnum)) != -1; ) + FSectorTagIterator it(skybox_id); + int secnum; + while ((secnum = it.Next()) >= 0) { // plane: 0=floor, 1=ceiling, 2=both if (refline->args[2] == 1 || refline->args[2] == 2) diff --git a/src/p_3dfloors.cpp b/src/p_3dfloors.cpp index 58c2dbde7..5d63751c2 100644 --- a/src/p_3dfloors.cpp +++ b/src/p_3dfloors.cpp @@ -220,7 +220,8 @@ static int P_Set3DFloor(line_t * line, int param, int param2, int alpha) int tag=line->args[0]; sector_t * sec = line->frontsector, * ss; - for (s=-1; (s = P_FindSectorFromTag(tag,s)) >= 0;) + FSectorTagIterator it(tag); + while ((s = it.Next()) >= 0) { ss=§ors[s]; diff --git a/src/p_3dmidtex.cpp b/src/p_3dmidtex.cpp index 7f934e2f5..d3c26f47a 100644 --- a/src/p_3dmidtex.cpp +++ b/src/p_3dmidtex.cpp @@ -157,7 +157,9 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c } else { - for(int sec = -1; (sec = P_FindSectorFromTag(tag, sec)) >= 0; ) + FSectorTagIterator it(tag); + int sec; + while ((sec = it.Next()) >= 0) { for (int line = 0; line < sectors[sec].linecount; line ++) { diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 3dd0cfef0..fbe5b0069 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -1341,7 +1341,7 @@ DPlaneWatcher::DPlaneWatcher (AActor *it, line_t *line, int lineSide, bool ceili { int secnum; - secnum = P_FindSectorFromTag (tag, -1); + secnum = P_FindFirstSectorFromTag (tag); if (secnum >= 0) { secplane_t plane; @@ -3268,7 +3268,8 @@ void DLevelScript::ChangeFlat (int tag, int name, bool floorOrCeiling) flat = TexMan.GetTexture (flatname, FTexture::TEX_Flat, FTextureManager::TEXMAN_Overridable); - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { int pos = floorOrCeiling? sector_t::ceiling : sector_t::floor; sectors[secnum].SetTexture(pos, flat); @@ -4839,10 +4840,10 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, SDWORD *args, const return 0; // Not implemented yet case ACSF_GetSectorUDMFInt: - return GetUDMFInt(UDMF_Sector, P_FindSectorFromTag(args[0], -1), FBehavior::StaticLookupString(args[1])); + return GetUDMFInt(UDMF_Sector, P_FindFirstSectorFromTag(args[0]), FBehavior::StaticLookupString(args[1])); case ACSF_GetSectorUDMFFixed: - return GetUDMFFixed(UDMF_Sector, P_FindSectorFromTag(args[0], -1), FBehavior::StaticLookupString(args[1])); + return GetUDMFFixed(UDMF_Sector, P_FindFirstSectorFromTag(args[0]), FBehavior::StaticLookupString(args[1])); case ACSF_GetSideUDMFInt: return GetUDMFInt(UDMF_Side, SideFromID(args[0], args[1]), FBehavior::StaticLookupString(args[2])); @@ -5169,11 +5170,11 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, SDWORD *args, const int space = args[2] < CHAN_FLOOR || args[2] > CHAN_INTERIOR ? CHAN_FULLHEIGHT : args[2]; if (seqname != NULL) { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag(args[0], secnum)) >= 0) + FSectorTagIterator it(args[0]); + int s; + while ((s = it.Next()) >= 0) { - SN_StartSequence(§ors[secnum], args[2], seqname, 0); + SN_StartSequence(§ors[s], args[2], seqname, 0); } } } @@ -5952,11 +5953,13 @@ int DLevelScript::RunScript () // Wait for tagged sector(s) to go inactive, then enter // state running { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag (statedata, secnum)) >= 0) + int secnum; + FSectorTagIterator it(statedata); + while ((secnum = it.Next()) >= 0) + { if (sectors[secnum].floordata || sectors[secnum].ceilingdata) return resultValue; + } // If we got here, none of the tagged sectors were busy state = SCRIPT_Running; @@ -8518,7 +8521,7 @@ scriptwait: fixed_t z = 0; if (tag != 0) - secnum = P_FindSectorFromTag (tag, -1); + secnum = P_FindFirstSectorFromTag (tag); else secnum = int(P_PointInSector (x, y) - sectors); @@ -8540,7 +8543,7 @@ scriptwait: case PCD_GETSECTORLIGHTLEVEL: { - int secnum = P_FindSectorFromTag (STACK(1), -1); + int secnum = P_FindFirstSectorFromTag (STACK(1)); int z = -1; if (secnum >= 0) diff --git a/src/p_ceiling.cpp b/src/p_ceiling.cpp index d0c54761a..7efef80a5 100644 --- a/src/p_ceiling.cpp +++ b/src/p_ceiling.cpp @@ -510,9 +510,9 @@ bool EV_DoCeiling (DCeiling::ECeiling type, line_t *line, P_ActivateInStasisCeiling (tag); } - secnum = -1; // affects all sectors with the same tag as the linedef - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { rtn |= !!DCeiling::Create(§ors[secnum], type, line, tag, speed, speed2, height, crush, silent, change, hexencrush); } diff --git a/src/p_doors.cpp b/src/p_doors.cpp index 844f23af9..49ed20f46 100644 --- a/src/p_doors.cpp +++ b/src/p_doors.cpp @@ -484,8 +484,8 @@ bool EV_DoDoor (DDoor::EVlDoor type, line_t *line, AActor *thing, else { // [RH] Remote door - secnum = -1; - while ((secnum = P_FindSectorFromTag (tag,secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sec = §ors[secnum]; // if the ceiling is already moving, don't start the door action @@ -812,7 +812,8 @@ bool EV_SlidingDoor (line_t *line, AActor *actor, int tag, int speed, int delay) return false; } - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sec = §ors[secnum]; if (sec->ceilingdata != NULL) diff --git a/src/p_floor.cpp b/src/p_floor.cpp index 231ccd5a3..97e23571b 100644 --- a/src/p_floor.cpp +++ b/src/p_floor.cpp @@ -290,28 +290,13 @@ bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag, rtn = false; // check if a manual trigger; if so do just the sector on the backside - if (tag == 0) - { - if (!line || !(sec = line->backsector)) - return rtn; - secnum = (int)(sec-sectors); - goto manual_floor; - } - - secnum = -1; - while (tag && (secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator it(tag, line); + while ((secnum = it.Next()) >= 0) { sec = §ors[secnum]; - -manual_floor: // ALREADY MOVING? IF SO, KEEP GOING... if (sec->PlaneMoving(sector_t::floor)) { - // There was a test for 0/non-0 here, supposed to prevent 0-tags from executing "continue" and searching for unrelated sectors - // Unfortunately, the condition had been reversed, so that searches for tag-0 would continue, - // while numbered tags would abort (return false, even if some floors have been successfully triggered) - - // All occurences of the condition (faulty or not) have been replaced by a looping condition: Looping only occurs if we're looking for a non-0 tag. continue; } @@ -545,9 +530,9 @@ manual_floor: bool EV_FloorCrushStop (int tag) { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + int secnum; + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sector_t *sec = sectors + secnum; @@ -562,21 +547,6 @@ bool EV_FloorCrushStop (int tag) return true; } -//========================================================================== -// -// Linear tag search to emulate stair building from Doom.exe -// -//========================================================================== - -static int P_FindSectorFromTagLinear (int tag, int start) -{ - for (int i=start+1;i> FRACBITS; - int (* FindSector) (int tag, int start) = - (i_compatflags & COMPATF_STAIRINDEX)? P_FindSectorFromTagLinear : P_FindSectorFromTag; - // check if a manual trigger, if so do just the sector on the backside - if (tag == 0) - { - if (!line || !(sec = line->backsector)) - return rtn; - secnum = (int)(sec-sectors); - manual = true; - goto manual_stair; - } - + FSectorTagIterator itr(tag, line); // The compatibility mode doesn't work with a hashing algorithm. // It needs the original linear search method. This was broken in Boom. - - secnum = -1; - while ((secnum = FindSector (tag, secnum)) >= 0) + bool compatible = tag != 0 && (i_compatflags & COMPATF_STAIRINDEX); + while ((secnum = itr.NextCompat(compatible, secnum)) >= 0) { sec = §ors[secnum]; -manual_stair: // ALREADY MOVING? IF SO, KEEP GOING... //jff 2/26/98 add special lockout condition to wait for entire //staircase to build before retriggering if (sec->PlaneMoving(sector_t::floor) || sec->stairlock) { - if (!manual) - continue; - else - return rtn; + continue; } // new floor thinker @@ -781,14 +734,6 @@ manual_stair: // [RH] make sure the first sector doesn't point to a previous one, otherwise // it can infinite loop when the first sector stops moving. sectors[osecnum].prevsec = -1; - if (manual) - { - return rtn; - } - if (!(i_compatflags & COMPATF_STAIRINDEX)) - { - secnum = osecnum; //jff 3/4/98 restore loop index - } } return rtn; } @@ -811,21 +756,13 @@ bool EV_DoDonut (int tag, line_t *line, fixed_t pillarspeed, fixed_t slimespeed) vertex_t* spot; fixed_t height; - secnum = -1; rtn = false; - if (tag == 0) - { - if (!line || !(s1 = line->backsector)) - return rtn; - goto manual_donut; - } - - while (tag && (secnum = P_FindSectorFromTag(tag,secnum)) >= 0) + FSectorTagIterator itr(tag, line); + while ((secnum = itr.Next()) >= 0) { s1 = §ors[secnum]; // s1 is pillar's sector -manual_donut: // ALREADY MOVING? IF SO, KEEP GOING... if (s1->PlaneMoving(sector_t::floor)) continue; // safe now, because we check that tag is non-0 in the looping condition [fdari] @@ -1042,19 +979,12 @@ bool EV_DoElevator (line_t *line, DElevator::EElevator elevtype, secnum = -1; rtn = false; - if (tag == 0) - { - if (!line || !(sec = line->backsector)) - return rtn; - goto manual_elevator; - } - + FSectorTagIterator itr(tag, line); // act on all sectors with the same tag as the triggering linedef - while (tag && (secnum = P_FindSectorFromTag (tag, secnum)) >= 0) // never loop for a non-0 tag (condition moved to beginning of loop) [FDARI] + while ((secnum = itr.Next()) >= 0) { sec = §ors[secnum]; -manual_elevator: // If either floor or ceiling is already activated, skip it if (sec->PlaneMoving(sector_t::floor) || sec->ceilingdata) //jff 2/22/98 continue; // the loop used to break at the end if tag were 0, but would miss that step if "continue" occured [FDARI] @@ -1142,10 +1072,10 @@ bool EV_DoChange (line_t *line, EChange changetype, int tag) sector_t *sec; sector_t *secm; - secnum = -1; rtn = false; // change all sectors with the same tag as the linedef - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sec = §ors[secnum]; @@ -1374,20 +1304,12 @@ bool EV_StartWaggle (int tag, line_t *line, int height, int speed, int offset, bool retCode; retCode = false; - sectorIndex = -1; - if (tag == 0) - { - if (!line || !(sector = line->backsector)) - return retCode; - goto manual_waggle; - } + FSectorTagIterator itr(tag, line); - - while (tag && (sectorIndex = P_FindSectorFromTag(tag, sectorIndex)) >= 0) + while ((sectorIndex = itr.Next()) >= 0) { sector = §ors[sectorIndex]; -manual_waggle: if ((!ceiling && sector->PlaneMoving(sector_t::floor)) || (ceiling && sector->PlaneMoving(sector_t::ceiling))) { // Already busy with another thinker diff --git a/src/p_lights.cpp b/src/p_lights.cpp index 8743ae21b..b4bfa1669 100644 --- a/src/p_lights.cpp +++ b/src/p_lights.cpp @@ -189,9 +189,8 @@ DFlicker::DFlicker (sector_t *sector, int upper, int lower) void EV_StartLightFlickering (int tag, int upper, int lower) { int secnum; - - secnum = -1; - while ((secnum = P_FindSectorFromTag (tag,secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { new DFlicker (§ors[secnum], upper, lower); } @@ -359,9 +358,8 @@ DStrobe::DStrobe (sector_t *sector, int utics, int ltics, bool inSync) void EV_StartLightStrobing (int tag, int upper, int lower, int utics, int ltics) { int secnum; - - secnum = -1; - while ((secnum = P_FindSectorFromTag (tag,secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sector_t *sec = §ors[secnum]; if (sec->lightingdata) @@ -374,9 +372,8 @@ void EV_StartLightStrobing (int tag, int upper, int lower, int utics, int ltics) void EV_StartLightStrobing (int tag, int utics, int ltics) { int secnum; - - secnum = -1; - while ((secnum = P_FindSectorFromTag (tag,secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sector_t *sec = §ors[secnum]; if (sec->lightingdata) @@ -396,16 +393,14 @@ void EV_StartLightStrobing (int tag, int utics, int ltics) void EV_TurnTagLightsOff (int tag) { - int i; int secnum; - - // [RH] Don't do a linear search - for (secnum = -1; (secnum = P_FindSectorFromTag (tag, secnum)) >= 0; ) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sector_t *sector = sectors + secnum; int min = sector->lightlevel; - for (i = 0; i < sector->linecount; i++) + for (int i = 0; i < sector->linecount; i++) { sector_t *tsec = getNextSector (sector->lines[i],sector); if (!tsec) @@ -427,10 +422,9 @@ void EV_TurnTagLightsOff (int tag) void EV_LightTurnOn (int tag, int bright) { - int secnum = -1; - - // [RH] Don't do a linear search - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + int secnum; + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sector_t *sector = sectors + secnum; int tbright = bright; //jff 5/17/98 search for maximum PER sector @@ -480,15 +474,14 @@ void EV_LightTurnOn (int tag, int bright) void EV_LightTurnOnPartway (int tag, fixed_t frac) { - int i; - frac = clamp (frac, 0, FRACUNIT); // Search all sectors for ones with same tag as activating line - i = -1; - while ((i = P_FindSectorFromTag (tag, i)) >= 0) + int secnum; + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { - sector_t *temp, *sector = sectors + i; + sector_t *temp, *sector = §ors[secnum]; int j, bright = 0, min = sector->lightlevel; for (j = 0; j < sector->linecount; ++j) @@ -520,9 +513,9 @@ void EV_LightTurnOnPartway (int tag, fixed_t frac) void EV_LightChange (int tag, int value) { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + int secnum; + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sectors[secnum].SetLightLevel(sectors[secnum].lightlevel + value); } @@ -681,8 +674,8 @@ void EV_StartLightGlowing (int tag, int upper, int lower, int tics) lower = temp; } - secnum = -1; - while ((secnum = P_FindSectorFromTag (tag,secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sector_t *sec = §ors[secnum]; if (sec->lightingdata) @@ -701,9 +694,8 @@ void EV_StartLightGlowing (int tag, int upper, int lower, int tics) void EV_StartLightFading (int tag, int value, int tics) { int secnum; - - secnum = -1; - while ((secnum = P_FindSectorFromTag (tag,secnum)) >= 0) + FSectorTagIterator it(tag); + while ((secnum = it.Next()) >= 0) { sector_t *sec = §ors[secnum]; if (sec->lightingdata) diff --git a/src/p_linkedsectors.cpp b/src/p_linkedsectors.cpp index acf1d6906..a2587f745 100644 --- a/src/p_linkedsectors.cpp +++ b/src/p_linkedsectors.cpp @@ -316,7 +316,9 @@ bool P_AddSectorLinks(sector_t *control, int tag, INTBOOL ceiling, int movetype) if (movetype > 0) { - for(int sec = -1; (sec = P_FindSectorFromTag(tag, sec)) >= 0; ) + int sec; + FSectorTagIterator itr(tag); + while ((sec = itr.Next()) >= 0) { // Don't attach to self! if (control != §ors[sec]) diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index 76f7a0371..3a8ebf541 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -1914,9 +1914,9 @@ FUNC(LS_Sector_ChangeSound) if (!arg0) return false; - secNum = -1; rtn = false; - while ((secNum = P_FindSectorFromTag (arg0, secNum)) >= 0) + FSectorTagIterator itr(arg0); + while ((secNum = itr.Next()) >= 0) { sectors[secNum].seqType = arg1; rtn = true; @@ -1933,9 +1933,9 @@ FUNC(LS_Sector_ChangeFlags) if (!arg0) return false; - secNum = -1; rtn = false; - while ((secNum = P_FindSectorFromTag (arg0, secNum)) >= 0) + FSectorTagIterator itr(arg0); + while ((secNum = itr.Next()) >= 0) { sectors[secNum].Flags = (sectors[secNum].Flags | arg1) & ~arg2; rtn = true; @@ -1969,10 +1969,11 @@ void AdjustPusher (int tag, int magnitude, int angle, DPusher::EPusher type) } size_t numcollected = Collection.Size (); - int secnum = -1; + int secnum; // Now create pushers for any sectors that don't already have them. - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator itr(tag); + while ((secnum = itr.Next()) >= 0) { unsigned int i; for (i = 0; i < numcollected; i++) @@ -2020,9 +2021,9 @@ FUNC(LS_Sector_SetTranslucent) { if (arg0 != 0) { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + int secnum; + FSectorTagIterator itr(arg0); + while ((secnum = itr.Next()) >= 0) { sectors[secnum].SetAlpha(arg1, Scale(arg2, OPAQUE, 255)); sectors[secnum].ChangeFlags(arg1, ~PLANEF_ADDITIVE, arg3? PLANEF_ADDITIVE:0); @@ -2037,7 +2038,7 @@ FUNC(LS_Sector_SetLink) { if (arg0 != 0) // control tag == 0 is for static initialization and must not be handled here { - int control = P_FindSectorFromTag(arg0, -1); + int control = P_FindFirstSectorFromTag(arg0); if (control >= 0) { return P_AddSectorLinks(§ors[control], arg1, arg2, arg3); @@ -2181,7 +2182,8 @@ static void SetScroller (int tag, DScroller::EScrollType type, fixed_t dx, fixed } // Need to create scrollers for the sector(s) - for (i = -1; (i = P_FindSectorFromTag (tag, i)) >= 0; ) + FSectorTagIterator itr(tag); + while ((i = itr.Next()) >= 0) { new DScroller (type, dx, dy, -1, i, 0); } @@ -2240,8 +2242,10 @@ FUNC(LS_Sector_SetDamage) // problems by adding an unwanted constructor. // Since it doesn't really matter whether the type is translated // here or in P_PlayerInSpecialSector I think it's the best solution. - int secnum = -1; - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) { + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) + { sectors[secnum].damage = arg1; sectors[secnum].mod = arg2; } @@ -2251,14 +2255,15 @@ FUNC(LS_Sector_SetDamage) FUNC(LS_Sector_SetGravity) // Sector_SetGravity (tag, intpart, fracpart) { - int secnum = -1; float gravity; if (arg2 > 99) arg2 = 99; gravity = (float)arg1 + (float)arg2 * 0.01f; - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) sectors[secnum].gravity = gravity; return true; @@ -2267,9 +2272,9 @@ FUNC(LS_Sector_SetGravity) FUNC(LS_Sector_SetColor) // Sector_SetColor (tag, r, g, b, desaturate) { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { sectors[secnum].SetColor(arg1, arg2, arg3, arg4); } @@ -2280,9 +2285,9 @@ FUNC(LS_Sector_SetColor) FUNC(LS_Sector_SetFade) // Sector_SetFade (tag, r, g, b) { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { sectors[secnum].SetFade(arg1, arg2, arg3); } @@ -2292,11 +2297,12 @@ FUNC(LS_Sector_SetFade) FUNC(LS_Sector_SetCeilingPanning) // Sector_SetCeilingPanning (tag, x-int, x-frac, y-int, y-frac) { - int secnum = -1; fixed_t xofs = arg1 * FRACUNIT + arg2 * (FRACUNIT/100); fixed_t yofs = arg3 * FRACUNIT + arg4 * (FRACUNIT/100); - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { sectors[secnum].SetXOffset(sector_t::ceiling, xofs); sectors[secnum].SetYOffset(sector_t::ceiling, yofs); @@ -2307,11 +2313,12 @@ FUNC(LS_Sector_SetCeilingPanning) FUNC(LS_Sector_SetFloorPanning) // Sector_SetFloorPanning (tag, x-int, x-frac, y-int, y-frac) { - int secnum = -1; fixed_t xofs = arg1 * FRACUNIT + arg2 * (FRACUNIT/100); fixed_t yofs = arg3 * FRACUNIT + arg4 * (FRACUNIT/100); - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { sectors[secnum].SetXOffset(sector_t::floor, xofs); sectors[secnum].SetYOffset(sector_t::floor, yofs); @@ -2322,7 +2329,6 @@ FUNC(LS_Sector_SetFloorPanning) FUNC(LS_Sector_SetFloorScale) // Sector_SetFloorScale (tag, x-int, x-frac, y-int, y-frac) { - int secnum = -1; fixed_t xscale = arg1 * FRACUNIT + arg2 * (FRACUNIT/100); fixed_t yscale = arg3 * FRACUNIT + arg4 * (FRACUNIT/100); @@ -2331,7 +2337,9 @@ FUNC(LS_Sector_SetFloorScale) if (yscale) yscale = FixedDiv (FRACUNIT, yscale); - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { if (xscale) sectors[secnum].SetXScale(sector_t::floor, xscale); @@ -2344,7 +2352,6 @@ FUNC(LS_Sector_SetFloorScale) FUNC(LS_Sector_SetCeilingScale) // Sector_SetCeilingScale (tag, x-int, x-frac, y-int, y-frac) { - int secnum = -1; fixed_t xscale = arg1 * FRACUNIT + arg2 * (FRACUNIT/100); fixed_t yscale = arg3 * FRACUNIT + arg4 * (FRACUNIT/100); @@ -2353,7 +2360,9 @@ FUNC(LS_Sector_SetCeilingScale) if (yscale) yscale = FixedDiv (FRACUNIT, yscale); - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { if (xscale) sectors[secnum].SetXScale(sector_t::ceiling, xscale); @@ -2366,14 +2375,14 @@ FUNC(LS_Sector_SetCeilingScale) FUNC(LS_Sector_SetFloorScale2) // Sector_SetFloorScale2 (tag, x-factor, y-factor) { - int secnum = -1; - if (arg1) arg1 = FixedDiv (FRACUNIT, arg1); if (arg2) arg2 = FixedDiv (FRACUNIT, arg2); - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { if (arg1) sectors[secnum].SetXScale(sector_t::floor, arg1); @@ -2386,14 +2395,14 @@ FUNC(LS_Sector_SetFloorScale2) FUNC(LS_Sector_SetCeilingScale2) // Sector_SetFloorScale2 (tag, x-factor, y-factor) { - int secnum = -1; - if (arg1) arg1 = FixedDiv (FRACUNIT, arg1); if (arg2) arg2 = FixedDiv (FRACUNIT, arg2); - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { if (arg1) sectors[secnum].SetXScale(sector_t::ceiling, arg1); @@ -2406,11 +2415,12 @@ FUNC(LS_Sector_SetCeilingScale2) FUNC(LS_Sector_SetRotation) // Sector_SetRotation (tag, floor-angle, ceiling-angle) { - int secnum = -1; angle_t ceiling = arg2 * ANGLE_1; angle_t floor = arg1 * ANGLE_1; - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { sectors[secnum].SetAngle(sector_t::floor, floor); sectors[secnum].SetAngle(sector_t::ceiling, ceiling); @@ -2997,10 +3007,11 @@ FUNC(LS_ForceField) FUNC(LS_ClearForceField) // ClearForceField (tag) { - int secnum = -1; bool rtn = false; - while ((secnum = P_FindSectorFromTag (arg0, secnum)) >= 0) + FSectorTagIterator itr(arg0); + int secnum; + while ((secnum = itr.Next()) >= 0) { sector_t *sec = §ors[secnum]; rtn = true; diff --git a/src/p_pillar.cpp b/src/p_pillar.cpp index 809542949..98169c345 100644 --- a/src/p_pillar.cpp +++ b/src/p_pillar.cpp @@ -220,16 +220,8 @@ bool EV_DoPillar (DPillar::EPillar type, line_t *line, int tag, bool rtn = false; // check if a manual trigger; if so do just the sector on the backside - if (tag == 0) - { - if (!line || !(sec = line->backsector)) - return rtn; - secnum = (int)(sec-sectors); - goto manual_pillar; - } - - secnum = -1; - while (tag && (secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator itr(tag, line); + while ((secnum = itr.Next()) >= 0) { sec = §ors[secnum]; diff --git a/src/p_plats.cpp b/src/p_plats.cpp index d87c30991..7600637b2 100644 --- a/src/p_plats.cpp +++ b/src/p_plats.cpp @@ -233,42 +233,33 @@ bool EV_DoPlat (int tag, line_t *line, DPlat::EPlatType type, int height, fixed_t newheight = 0; vertex_t *spot; + if (tag != 0) + { + // Activate all plats that are in_stasis + switch (type) + { + case DPlat::platToggle: + rtn = true; + case DPlat::platPerpetualRaise: + P_ActivateInStasis (tag); + break; + + default: + break; + } + } + + // [RH] If tag is zero, use the sector on the back side // of the activating line (if any). - if (!tag) - { - if (!line || !(sec = line->backsector)) - return false; - secnum = (int)(sec - sectors); - manual = true; - goto manual_plat; - } - - // Activate all plats that are in_stasis - switch (type) - { - case DPlat::platToggle: - rtn = true; - case DPlat::platPerpetualRaise: - P_ActivateInStasis (tag); - break; - - default: - break; - } - - secnum = -1; - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator itr(tag, line); + while ((secnum = itr.Next()) >= 0) { sec = §ors[secnum]; -manual_plat: if (sec->PlaneMoving(sector_t::floor)) { - if (!manual) - continue; - else - return false; + continue; } // Find lowest & highest floors around sector @@ -406,8 +397,6 @@ manual_plat: default: break; } - if (manual) - return rtn; } return rtn; } diff --git a/src/p_slopes.cpp b/src/p_slopes.cpp index 41f7a1837..ab0ea6592 100644 --- a/src/p_slopes.cpp +++ b/src/p_slopes.cpp @@ -123,7 +123,7 @@ static void P_CopyPlane (int tag, sector_t *dest, bool copyCeil) int secnum; size_t planeofs; - secnum = P_FindSectorFromTag (tag, -1); + secnum = P_FindFirstSectorFromTag (tag); if (secnum == -1) { return; diff --git a/src/p_spec.cpp b/src/p_spec.cpp index 676191555..0fe88e112 100644 --- a/src/p_spec.cpp +++ b/src/p_spec.cpp @@ -195,15 +195,36 @@ bool CheckIfExitIsGood (AActor *self, level_info_t *info) // Find the next sector with a specified tag. // Rewritten by Lee Killough to use chained hashing to improve speed -int P_FindSectorFromTag (int tag, int start) +int FSectorTagIterator::Next() { - start = start >= 0 ? sectors[start].nexttag : - sectors[(unsigned) tag % (unsigned) numsectors].firsttag; - while (start >= 0 && sectors[start].tag != tag) + int ret; + if (searchtag == INT_MIN) + { + ret = start; + start = -1; + } + else + { + while (start != -1 && sectors[start].tag != searchtag) start = sectors[start].nexttag; + if (start == -1) return -1; + ret = start; start = sectors[start].nexttag; - return start; + } + return ret; } +int FSectorTagIterator::NextCompat(bool compat, int start) +{ + if (!compat) return Next(); + + for (int i = start + 1; i < numsectors; i++) + { + if (sectors[i].HasTag(searchtag)) return i; + } + return -1; +} + + // killough 4/16/98: Same thing, only for linedefs int P_FindLineFromID (int id, int start) @@ -266,7 +287,7 @@ bool P_ActivateLine (line_t *line, AActor *mo, int side, int activationType) special && // not for lines without a special line->args[0] == line->id && // Safety check: exclude edited UDMF linedefs or ones that don't map the tag to args[0] line->args[0] && // only if there's a tag (which is stored in the first arg) - P_FindSectorFromTag (line->args[0], -1) == -1) // only if no sector is tagged to this linedef + P_FindFirstSectorFromTag (line->args[0]) == -1) // only if no sector is tagged to this linedef { P_ChangeSwitchTexture (line->sidedef[0], repeat, special); line->special = 0; @@ -657,9 +678,9 @@ static void DoSectorDamage(AActor *actor, sector_t *sec, int amount, FName type, void P_SectorDamage(int tag, int amount, FName type, const PClass *protectClass, int flags) { - int secnum = -1; - - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator itr(tag); + int secnum; + while ((secnum = itr.Next()) >= 0) { AActor *actor, *next; sector_t *sec = §ors[secnum]; @@ -884,12 +905,14 @@ DLightTransfer::DLightTransfer (sector_t *srcSec, int target, bool copyFloor) if (copyFloor) { - for (secnum = -1; (secnum = P_FindSectorFromTag (target, secnum)) >= 0; ) + FSectorTagIterator itr(target); + while ((secnum = itr.Next()) >= 0) sectors[secnum].ChangeFlags(sector_t::floor, 0, PLANEF_ABSLIGHTING); } else { - for (secnum = -1; (secnum = P_FindSectorFromTag (target, secnum)) >= 0; ) + FSectorTagIterator itr(target); + while ((secnum = itr.Next()) >= 0) sectors[secnum].ChangeFlags(sector_t::ceiling, 0, PLANEF_ABSLIGHTING); } ChangeStatNum (STAT_LIGHTTRANSFER); @@ -912,12 +935,14 @@ void DLightTransfer::DoTransfer (int level, int target, bool floor) if (floor) { - for (secnum = -1; (secnum = P_FindSectorFromTag (target, secnum)) >= 0; ) + FSectorTagIterator itr(target); + while ((secnum = itr.Next()) >= 0) sectors[secnum].SetPlaneLight(sector_t::floor, level); } else { - for (secnum = -1; (secnum = P_FindSectorFromTag (target, secnum)) >= 0; ) + FSectorTagIterator itr(target); + while ((secnum = itr.Next()) >= 0) sectors[secnum].SetPlaneLight(sector_t::ceiling, level); } } @@ -1173,7 +1198,9 @@ void P_SpawnPortal(line_t *line, int sectortag, int plane, int alpha) reference->flags |= MF_JUSTATTACKED; anchor->flags |= MF_JUSTATTACKED; - for (int s=-1; (s = P_FindSectorFromTag(sectortag,s)) >= 0;) + int s; + FSectorTagIterator itr(sectortag); + while ((s = itr.Next()) >= 0) { SetPortal(§ors[s], plane, reference, alpha); } @@ -1193,7 +1220,8 @@ void P_SpawnPortal(line_t *line, int sectortag, int plane, int alpha) } else { - for (int s=-1; (s = P_FindSectorFromTag(lines[j].args[0],s)) >= 0;) + FSectorTagIterator itr(lines[j].args[0]); + while ((s = itr.Next()) >= 0) { SetPortal(§ors[s], plane, reference, alpha); } @@ -1374,38 +1402,41 @@ void P_SpawnSpecials (void) // killough 3/7/98: // support for drawn heights coming from different sector case Transfer_Heights: - sec = lines[i].frontsector; - if (lines[i].args[1] & 2) { - sec->MoreFlags |= SECF_FAKEFLOORONLY; + sec = lines[i].frontsector; + if (lines[i].args[1] & 2) + { + sec->MoreFlags |= SECF_FAKEFLOORONLY; + } + if (lines[i].args[1] & 4) + { + sec->MoreFlags |= SECF_CLIPFAKEPLANES; + } + if (lines[i].args[1] & 8) + { + sec->MoreFlags |= SECF_UNDERWATER; + } + else if (forcewater) + { + sec->MoreFlags |= SECF_FORCEDUNDERWATER; + } + if (lines[i].args[1] & 16) + { + sec->MoreFlags |= SECF_IGNOREHEIGHTSEC; + } + if (lines[i].args[1] & 32) + { + sec->MoreFlags |= SECF_NOFAKELIGHT; + } + FSectorTagIterator itr(lines[i].args[0]); + while ((s = itr.Next()) >= 0) + { + sectors[s].heightsec = sec; + sec->e->FakeFloor.Sectors.Push(§ors[s]); + sectors[s].AdjustFloorClip(); + } + break; } - if (lines[i].args[1] & 4) - { - sec->MoreFlags |= SECF_CLIPFAKEPLANES; - } - if (lines[i].args[1] & 8) - { - sec->MoreFlags |= SECF_UNDERWATER; - } - else if (forcewater) - { - sec->MoreFlags |= SECF_FORCEDUNDERWATER; - } - if (lines[i].args[1] & 16) - { - sec->MoreFlags |= SECF_IGNOREHEIGHTSEC; - } - if (lines[i].args[1] & 32) - { - sec->MoreFlags |= SECF_NOFAKELIGHT; - } - for (s = -1; (s = P_FindSectorFromTag(lines[i].args[0],s)) >= 0;) - { - sectors[s].heightsec = sec; - sec->e->FakeFloor.Sectors.Push(§ors[s]); - sectors[s].AdjustFloorClip(); - } - break; // killough 3/16/98: Add support for setting // floor lighting independently (e.g. lava) @@ -1458,9 +1489,10 @@ void P_SpawnSpecials (void) { case Init_Gravity: { - float grav = ((float)P_AproxDistance (lines[i].dx, lines[i].dy)) / (FRACUNIT * 100.0f); - for (s = -1; (s = P_FindSectorFromTag(lines[i].args[0],s)) >= 0;) - sectors[s].gravity = grav; + float grav = ((float)P_AproxDistance (lines[i].dx, lines[i].dy)) / (FRACUNIT * 100.0f); + FSectorTagIterator itr(lines[i].args[0]); + while ((s = itr.Next()) >= 0) + sectors[s].gravity = grav; } break; @@ -1470,7 +1502,8 @@ void P_SpawnSpecials (void) case Init_Damage: { int damage = P_AproxDistance (lines[i].dx, lines[i].dy) >> FRACBITS; - for (s = -1; (s = P_FindSectorFromTag(lines[i].args[0],s)) >= 0;) + FSectorTagIterator itr(lines[i].args[0]); + while ((s = itr.Next()) >= 0) { sectors[s].damage = damage; sectors[s].mod = 0;//MOD_UNKNOWN; @@ -1493,9 +1526,12 @@ void P_SpawnSpecials (void) // or ceiling texture, to distinguish floor and ceiling sky. case Init_TransferSky: - for (s = -1; (s = P_FindSectorFromTag(lines[i].args[0],s)) >= 0;) - sectors[s].sky = (i+1) | PL_SKYFLAT; - break; + { + FSectorTagIterator itr(lines[i].args[0]); + while ((s = itr.Next()) >= 0) + sectors[s].sky = (i + 1) | PL_SKYFLAT; + break; + } } break; } @@ -1756,7 +1792,7 @@ static void P_SpawnScrollers(void) if (lines[i].special == Sector_CopyScroller) { // don't allow copying the scroller if the sector has the same tag as it would just duplicate it. - if (lines[i].args[0] != lines[i].frontsector->tag) + if (lines[i].frontsector->HasTag(lines[i].args[0])) { copyscrollers.Push(i); } @@ -1832,25 +1868,29 @@ static void P_SpawnScrollers(void) register int s; case Scroll_Ceiling: - for (s=-1; (s = P_FindSectorFromTag (l->args[0],s)) >= 0;) + { + FSectorTagIterator itr(l->args[0]); + while ((s = itr.Next()) >= 0) { - new DScroller (DScroller::sc_ceiling, -dx, dy, control, s, accel); + new DScroller(DScroller::sc_ceiling, -dx, dy, control, s, accel); } - for(unsigned j = 0;j < copyscrollers.Size(); j++) + for (unsigned j = 0; j < copyscrollers.Size(); j++) { line_t *line = &lines[copyscrollers[j]]; if (line->args[0] == l->args[0] && (line->args[1] & 1)) { - new DScroller (DScroller::sc_ceiling, -dx, dy, control, int(line->frontsector-sectors), accel); + new DScroller(DScroller::sc_ceiling, -dx, dy, control, int(line->frontsector - sectors), accel); } } break; + } case Scroll_Floor: if (l->args[2] != 1) { // scroll the floor texture - for (s=-1; (s = P_FindSectorFromTag (l->args[0],s)) >= 0;) + FSectorTagIterator itr(l->args[0]); + while ((s = itr.Next()) >= 0) { new DScroller (DScroller::sc_floor, -dx, dy, control, s, accel); } @@ -1867,7 +1907,8 @@ static void P_SpawnScrollers(void) if (l->args[2] > 0) { // carry objects on the floor - for (s=-1; (s = P_FindSectorFromTag (l->args[0],s)) >= 0;) + FSectorTagIterator itr(l->args[0]); + while ((s = itr.Next()) >= 0) { new DScroller (DScroller::sc_carry, dx, dy, control, s, accel); } @@ -2041,7 +2082,8 @@ void P_SetSectorFriction (int tag, int amount, bool alterFlag) // higher friction value actually means 'less friction'. movefactor = FrictionToMoveFactor(friction); - for (s = -1; (s = P_FindSectorFromTag (tag,s)) >= 0; ) + FSectorTagIterator itr(tag); + while ((s = itr.Next()) >= 0) { // killough 8/28/98: // @@ -2153,7 +2195,7 @@ DPusher::DPusher (DPusher::EPusher type, line_t *l, int magnitude, int angle, int DPusher::CheckForSectorMatch (EPusher type, int tag) { - if (m_Type == type && sectors[m_Affectee].tag == tag) + if (m_Type == type && sectors[m_Affectee].HasTag(tag)) return m_Affectee; else return -1; @@ -2356,20 +2398,27 @@ static void P_SpawnPushers () switch (l->special) { case Sector_SetWind: // wind - for (s = -1; (s = P_FindSectorFromTag (l->args[0],s)) >= 0 ; ) - new DPusher (DPusher::p_wind, l->args[3] ? l : NULL, l->args[1], l->args[2], NULL, s); + { + FSectorTagIterator itr(l->args[0]); + while ((s = itr.Next()) >= 0) + new DPusher(DPusher::p_wind, l->args[3] ? l : NULL, l->args[1], l->args[2], NULL, s); l->special = 0; break; + } case Sector_SetCurrent: // current - for (s = -1; (s = P_FindSectorFromTag (l->args[0],s)) >= 0 ; ) - new DPusher (DPusher::p_current, l->args[3] ? l : NULL, l->args[1], l->args[2], NULL, s); + { + FSectorTagIterator itr(l->args[0]); + while ((s = itr.Next()) >= 0) + new DPusher(DPusher::p_current, l->args[3] ? l : NULL, l->args[1], l->args[2], NULL, s); l->special = 0; break; + } case PointPush_SetForce: // push/pull if (l->args[0]) { // [RH] Find thing by sector - for (s = -1; (s = P_FindSectorFromTag (l->args[0], s)) >= 0 ; ) + FSectorTagIterator itr(l->args[0]); + while ((s = itr.Next()) >= 0) { AActor *thing = P_GetPushThing (s); if (thing) { // No MT_P* means no effect diff --git a/src/p_spec.h b/src/p_spec.h index 5b4f0ba99..b538ab7d5 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -242,8 +242,45 @@ inline sector_t *getNextSector (line_t *line, const sector_t *sec) line->frontsector; } +class FSectorTagIterator +{ +protected: + int searchtag; + int start; + +public: + FSectorTagIterator(int tag) + { + searchtag = tag; + start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; + } + + // Special constructor for actions that treat tag 0 as 'back of activation line' + FSectorTagIterator(int tag, line_t *line) + { + if (tag == 0) + { + searchtag = INT_MIN; + start = (line == NULL || line->backsector == NULL)? -1 : (int)(line->backsector - sectors); + } + else + { + searchtag = tag; + start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; + } + } + + int Next(); + int NextCompat(bool compat, int secnum); +}; + + +inline int P_FindFirstSectorFromTag(int tag) +{ + FSectorTagIterator it(tag); + return it.Next(); +} -int P_FindSectorFromTag (int tag, int start); int P_FindLineFromID (int id, int start); diff --git a/src/p_teleport.cpp b/src/p_teleport.cpp index e30457b15..921c11ff5 100644 --- a/src/p_teleport.cpp +++ b/src/p_teleport.cpp @@ -300,9 +300,10 @@ static AActor *SelectTeleDest (int tid, int tag, bool norandom) if (tag != 0) { - int secnum = -1; + int secnum; - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator itr(tag); + while ((secnum = itr.Next()) >= 0) { // Scanning the snext links of things in the sector will not work, because // TeleportDests have MF_NOSECTOR set. So you have to search *everything*. @@ -726,7 +727,8 @@ bool EV_TeleportSector (int tag, int source_tid, int dest_tid, bool fog, int gro int secnum; secnum = -1; - while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) + FSectorTagIterator itr(tag); + while ((secnum = itr.Next()) >= 0) { msecnode_t *node; const sector_t * const sec = §ors[secnum]; From 47543bb7669b6791a98b6f195fd98afa1d539829 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 15 Apr 2015 00:47:06 +0200 Subject: [PATCH 113/144] - while we're at it, let's also wrap line ID searches in an iterator class so that we can do multiple IDs per line later as well. --- src/fragglescript/t_func.cpp | 23 +++++++++++++-------- src/p_3dmidtex.cpp | 4 +++- src/p_acs.cpp | 28 ++++++++++++++----------- src/p_linkedsectors.cpp | 4 +++- src/p_lnspec.cpp | 40 +++++++++++++++++++++--------------- src/p_pillar.cpp | 1 - src/p_slopes.cpp | 5 +++-- src/p_spec.cpp | 29 +++++++++++++++----------- src/p_spec.h | 23 +++++++++++++++++++-- src/p_teleport.cpp | 3 ++- 10 files changed, 103 insertions(+), 57 deletions(-) diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 5aae0d572..7650b174e 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -2297,9 +2297,11 @@ void FParser::SF_SetLineBlocking(void) { blocking=blocks[blocking]; int tag=intvalue(t_argv[0]); - for (int i = -1; (i = P_FindLineFromID(tag, i)) >= 0;) + FLineIdIterator itr(tag); + int i; + while ((i = itr.Next()) >= 0) { - lines[i].flags = (lines[i].flags & ~(ML_BLOCKING|ML_BLOCKEVERYTHING)) | blocking; + lines[i].flags = (lines[i].flags & ~(ML_BLOCKING | ML_BLOCKEVERYTHING)) | blocking; } } } @@ -2318,7 +2320,9 @@ void FParser::SF_SetLineMonsterBlocking(void) int blocking = intvalue(t_argv[1]) ? ML_BLOCKMONSTERS : 0; int tag=intvalue(t_argv[0]); - for (int i = -1; (i = P_FindLineFromID(tag, i)) >= 0;) + FLineIdIterator itr(tag); + int i; + while ((i = itr.Next()) >= 0) { lines[i].flags = (lines[i].flags & ~ML_BLOCKMONSTERS) | blocking; } @@ -2373,12 +2377,13 @@ void FParser::SF_SetLineTexture(void) texture = stringvalue(t_argv[3]); texturenum = TexMan.GetTexture(texture, FTexture::TEX_Wall, FTextureManager::TEXMAN_Overridable); - for (i = -1; (i = P_FindLineFromID(tag, i)) >= 0;) + FLineIdIterator itr(tag); + while ((i = itr.Next()) >= 0) { // bad sidedef, Hexen just SEGV'd here! - if(lines[i].sidedef[side] != NULL) + if (lines[i].sidedef[side] != NULL) { - if (position >=0 && position <=2) + if (position >= 0 && position <= 2) { lines[i].sidedef[side]->SetTexture(position, texturenum); } @@ -2392,7 +2397,8 @@ void FParser::SF_SetLineTexture(void) int sections = intvalue(t_argv[3]); // set all sectors with tag - for (i = -1; (i = P_FindLineFromID(tag, i)) >= 0;) + FLineIdIterator itr(tag); + while ((i = itr.Next()) >= 0) { side_t *sided = lines[i].sidedef[side]; if(sided != NULL) @@ -4373,7 +4379,8 @@ void FParser::SF_SetLineTrigger() id=intvalue(t_argv[0]); spec=intvalue(t_argv[1]); if (t_argc>2) tag=intvalue(t_argv[2]); - for (i = -1; (i = P_FindLineFromID (id, i)) >= 0; ) + FLineIdIterator itr(id); + while ((i = itr.Next()) >= 0) { if (t_argc==2) tag=lines[i].id; maplinedef_t mld; diff --git a/src/p_3dmidtex.cpp b/src/p_3dmidtex.cpp index d3c26f47a..4939f55dc 100644 --- a/src/p_3dmidtex.cpp +++ b/src/p_3dmidtex.cpp @@ -143,7 +143,9 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c if (tag == 0) { - for(int line = -1; (line = P_FindLineFromID(lineid,line)) >= 0; ) + FLineIdIterator itr(lineid); + int line; + while ((line = itr.Next()) >= 0) { line_t *ln = &lines[line]; diff --git a/src/p_acs.cpp b/src/p_acs.cpp index fbe5b0069..9ea8624f6 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -3300,7 +3300,8 @@ void DLevelScript::SetLineTexture (int lineid, int side, int position, int name) texture = TexMan.GetTexture (texname, FTexture::TEX_Wall, FTextureManager::TEXMAN_Overridable); - while ((linenum = P_FindLineFromID (lineid, linenum)) >= 0) + FLineIdIterator itr(lineid); + while ((linenum = itr.Next()) >= 0) { side_t *sidedef; @@ -4458,7 +4459,7 @@ int DLevelScript::SideFromID(int id, int side) } else { - int line = P_FindLineFromID(id, -1); + int line = P_FindFirstLineFromID(id); if (line == -1) return -1; if (lines[line].sidedef[side] == NULL) return -1; return lines[line].sidedef[side]->Index; @@ -4474,7 +4475,7 @@ int DLevelScript::LineFromID(int id) } else { - return P_FindLineFromID(id, -1); + return P_FindFirstLineFromID(id); } } @@ -5693,9 +5694,9 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound) case ACSF_SetLineActivation: if (argCount >= 2) { - int line = -1; - - while ((line = P_FindLineFromID(args[0], line)) >= 0) + int line; + FLineIdIterator itr(args[0]); + while ((line = itr.Next()) >= 0) { lines[line].activation = args[1]; } @@ -5705,7 +5706,7 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound) case ACSF_GetLineActivation: if (argCount > 0) { - int line = P_FindLineFromID(args[0], -1); + int line = P_FindFirstLineFromID(args[0]); return line >= 0 ? lines[line].activation : 0; } break; @@ -7999,9 +8000,10 @@ scriptwait: case PCD_SETLINEBLOCKING: { - int line = -1; + int line; - while ((line = P_FindLineFromID (STACK(2), line)) >= 0) + FLineIdIterator itr(STACK(2)); + while ((line = itr.Next()) >= 0) { switch (STACK(1)) { @@ -8034,9 +8036,10 @@ scriptwait: case PCD_SETLINEMONSTERBLOCKING: { - int line = -1; + int line; - while ((line = P_FindLineFromID (STACK(2), line)) >= 0) + FLineIdIterator itr(STACK(2)); + while ((line = itr.Next()) >= 0) { if (STACK(1)) lines[line].flags |= ML_BLOCKMONSTERS; @@ -8061,7 +8064,8 @@ scriptwait: arg0 = -FName(FBehavior::StaticLookupString(arg0)); } - while ((linenum = P_FindLineFromID (STACK(7), linenum)) >= 0) + FLineIdIterator itr(STACK(7)); + while ((linenum = itr.Next()) >= 0) { line_t *line = &lines[linenum]; line->special = specnum; diff --git a/src/p_linkedsectors.cpp b/src/p_linkedsectors.cpp index a2587f745..8f78aadda 100644 --- a/src/p_linkedsectors.cpp +++ b/src/p_linkedsectors.cpp @@ -348,7 +348,9 @@ void P_AddSectorLinksByID(sector_t *control, int id, INTBOOL ceiling) { extsector_t::linked::plane &scrollplane = ceiling? control->e->Linked.Ceiling : control->e->Linked.Floor; - for(int line = -1; (line = P_FindLineFromID(id, line)) >= 0; ) + FLineIdIterator itr(id); + int line; + while ((line = itr.Next()) >= 0) { line_t *ld = &lines[line]; diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index 3a8ebf541..16d0402f3 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -2093,10 +2093,11 @@ static void SetWallScroller (int id, int sidechoice, fixed_t dx, fixed_t dy, int } size_t numcollected = Collection.Size (); - int linenum = -1; + int linenum; // Now create scrollers for any walls that don't already have them. - while ((linenum = P_FindLineFromID (id, linenum)) >= 0) + FLineIdIterator itr(id); + while ((linenum = itr.Next()) >= 0) { if (lines[linenum].sidedef[sidechoice] != NULL) { @@ -2431,30 +2432,28 @@ FUNC(LS_Sector_SetRotation) FUNC(LS_Line_AlignCeiling) // Line_AlignCeiling (lineid, side) { - int line = P_FindLineFromID (arg0, -1); bool ret = 0; - if (line < 0) - I_Error ("Sector_AlignCeiling: Lineid %d is undefined", arg0); - do + FLineIdIterator itr(arg0); + int line; + while ((line = itr.Next()) >= 0) { ret |= P_AlignFlat (line, !!arg1, 1); - } while ( (line = P_FindLineFromID (arg0, line)) >= 0); + } return ret; } FUNC(LS_Line_AlignFloor) // Line_AlignFloor (lineid, side) { - int line = P_FindLineFromID (arg0, -1); bool ret = 0; - if (line < 0) - I_Error ("Sector_AlignFloor: Lineid %d is undefined", arg0); - do + FLineIdIterator itr(arg0); + int line; + while ((line = itr.Next()) >= 0) { ret |= P_AlignFlat (line, !!arg1, 0); - } while ( (line = P_FindLineFromID (arg0, line)) >= 0); + } return ret; } @@ -2466,7 +2465,9 @@ FUNC(LS_Line_SetTextureOffset) if (arg0 == 0 || arg3 < 0 || arg3 > 1) return false; - for(int line = -1; (line = P_FindLineFromID (arg0, line)) >= 0; ) + FLineIdIterator itr(arg0); + int line; + while ((line = itr.Next()) >= 0) { side_t *side = lines[line].sidedef[arg3]; if (side != NULL) @@ -2517,7 +2518,9 @@ FUNC(LS_Line_SetTextureScale) if (arg0 == 0 || arg3 < 0 || arg3 > 1) return false; - for(int line = -1; (line = P_FindLineFromID (arg0, line)) >= 0; ) + FLineIdIterator itr(arg0); + int line; + while ((line = itr.Next()) >= 0) { side_t *side = lines[line].sidedef[arg3]; if (side != NULL) @@ -2588,7 +2591,9 @@ FUNC(LS_Line_SetBlocking) if (arg2 & 1) clearflags |= flagtrans[i]; } - for(int line = -1; (line = P_FindLineFromID (arg0, line)) >= 0; ) + FLineIdIterator itr(arg0); + int line; + while ((line = itr.Next()) >= 0) { lines[line].flags = (lines[line].flags & ~clearflags) | setflags; } @@ -2881,8 +2886,9 @@ FUNC(LS_SetPlayerProperty) FUNC(LS_TranslucentLine) // TranslucentLine (id, amount, type) { - int linenum = -1; - while ((linenum = P_FindLineFromID (arg0, linenum)) >= 0) + FLineIdIterator itr(arg0); + int linenum; + while ((linenum = itr.Next()) >= 0) { lines[linenum].Alpha = Scale(clamp(arg1, 0, 255), FRACUNIT, 255); if (arg2 == 0) diff --git a/src/p_pillar.cpp b/src/p_pillar.cpp index 98169c345..884218bee 100644 --- a/src/p_pillar.cpp +++ b/src/p_pillar.cpp @@ -225,7 +225,6 @@ bool EV_DoPillar (DPillar::EPillar type, line_t *line, int tag, { sec = §ors[secnum]; -manual_pillar: if (sec->PlaneMoving(sector_t::floor) || sec->PlaneMoving(sector_t::ceiling)) continue; diff --git a/src/p_slopes.cpp b/src/p_slopes.cpp index ab0ea6592..c0b9b5ef0 100644 --- a/src/p_slopes.cpp +++ b/src/p_slopes.cpp @@ -45,9 +45,10 @@ static void P_SlopeLineToPoint (int lineid, fixed_t x, fixed_t y, fixed_t z, bool slopeCeil) { - int linenum = -1; + int linenum; - while ((linenum = P_FindLineFromID (lineid, linenum)) != -1) + FLineIdIterator itr(lineid); + while ((linenum = itr.Next()) >= 0) { const line_t *line = &lines[linenum]; sector_t *sec; diff --git a/src/p_spec.cpp b/src/p_spec.cpp index 0fe88e112..c072122b8 100644 --- a/src/p_spec.cpp +++ b/src/p_spec.cpp @@ -227,18 +227,16 @@ int FSectorTagIterator::NextCompat(bool compat, int start) // killough 4/16/98: Same thing, only for linedefs -int P_FindLineFromID (int id, int start) +int FLineIdIterator::Next() { - start = start >= 0 ? lines[start].nextid : - lines[(unsigned) id % (unsigned) numlines].firstid; - while (start >= 0 && lines[start].id != id) - start = lines[start].nextid; - return start; + while (start != -1 && lines[start].id != searchtag) start = lines[start].nextid; + if (start == -1) return -1; + int ret = start; + start = lines[start].nextid; + return ret; } - - //============================================================================ // // P_ActivateLine @@ -1010,7 +1008,8 @@ DWallLightTransfer::DWallLightTransfer (sector_t *srcSec, int target, BYTE flags wallflags = WALLF_ABSLIGHTING | WALLF_NOFAKECONTRAST; } - for (linenum = -1; (linenum = P_FindLineFromID (target, linenum)) >= 0; ) + FLineIdIterator itr(target); + while ((linenum = itr.Next()) >= 0) { if (flags & WLF_SIDE1 && lines[linenum].sidedef[0] != NULL) { @@ -1040,7 +1039,8 @@ void DWallLightTransfer::DoTransfer (short lightlevel, int target, BYTE flags) { int linenum; - for (linenum = -1; (linenum = P_FindLineFromID (target, linenum)) >= 0; ) + FLineIdIterator itr(target); + while ((linenum = itr.Next()) >= 0) { line_t *line = &lines[linenum]; @@ -1927,10 +1927,15 @@ static void P_SpawnScrollers(void) // killough 3/1/98: scroll wall according to linedef // (same direction and speed as scrolling floors) case Scroll_Texture_Model: - for (s=-1; (s = P_FindLineFromID (l->args[0],s)) >= 0;) + { + FLineIdIterator itr(l->args[0]); + while ((s = itr.Next()) >= 0) + { if (s != i) - new DScroller (dx, dy, lines+s, control, accel); + new DScroller(dx, dy, lines + s, control, accel); + } break; + } case Scroll_Texture_Offsets: // killough 3/2/98: scroll according to sidedef offsets diff --git a/src/p_spec.h b/src/p_spec.h index b538ab7d5..45eaf7e41 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -274,6 +274,22 @@ public: int NextCompat(bool compat, int secnum); }; +class FLineIdIterator +{ +protected: + int searchtag; + int start; + +public: + FLineIdIterator(int id) + { + searchtag = id; + start = lines[(unsigned) id % (unsigned) numlines].firstid; + } + + int Next(); +}; + inline int P_FindFirstSectorFromTag(int tag) { @@ -281,8 +297,11 @@ inline int P_FindFirstSectorFromTag(int tag) return it.Next(); } -int P_FindLineFromID (int id, int start); - +inline int P_FindFirstLineFromID(int tag) +{ + FLineIdIterator it(tag); + return it.Next(); +} // // P_LIGHTS diff --git a/src/p_teleport.cpp b/src/p_teleport.cpp index 921c11ff5..de16a57fa 100644 --- a/src/p_teleport.cpp +++ b/src/p_teleport.cpp @@ -424,7 +424,8 @@ bool EV_SilentLineTeleport (line_t *line, int side, AActor *thing, int id, INTBO if (side || thing->flags2 & MF2_NOTELEPORT || !line || line->sidedef[1] == NULL) return false; - for (i = -1; (i = P_FindLineFromID (id, i)) >= 0; ) + FLineIdIterator itr(id); + while ((i = itr.Next()) >= 0) { if (line-lines == i) continue; From 006868c072f6bbaf995078ec4c8718aab396afd6 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Tue, 14 Apr 2015 18:00:20 -0500 Subject: [PATCH 114/144] Miscellaneous warning fixes --- src/gameconfigfile.cpp | 2 +- src/p_user.cpp | 10 +++++----- src/w_wad.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gameconfigfile.cpp b/src/gameconfigfile.cpp index c4f970db9..30dc2276d 100644 --- a/src/gameconfigfile.cpp +++ b/src/gameconfigfile.cpp @@ -429,7 +429,7 @@ void FGameConfigFile::DoKeySetup(const char *gamename) { "Bindings", &Bindings }, { "DoubleBindings", &DoubleBindings }, { "AutomapBindings", &AutomapBindings }, - NULL, NULL + { NULL, NULL } }; const char *key, *value; diff --git a/src/p_user.cpp b/src/p_user.cpp index 6042d5662..5f9a69c3a 100644 --- a/src/p_user.cpp +++ b/src/p_user.cpp @@ -295,23 +295,23 @@ player_t::player_t() respawn_time(0), camera(0), air_finished(0), + MUSINFOactor(0), + MUSINFOtics(-1), + crouching(0), + crouchdir(0), Bot(0), BlendR(0), BlendG(0), BlendB(0), BlendA(0), LogText(), - crouching(0), - crouchdir(0), crouchfactor(0), crouchoffset(0), crouchviewdelta(0), ConversationNPC(0), ConversationPC(0), ConversationNPCAngle(0), - ConversationFaceTalker(0), - MUSINFOactor(0), - MUSINFOtics(-1) + ConversationFaceTalker(0) { memset (&cmd, 0, sizeof(cmd)); memset (frags, 0, sizeof(frags)); diff --git a/src/w_wad.cpp b/src/w_wad.cpp index 4d0b51623..2b3413460 100644 --- a/src/w_wad.cpp +++ b/src/w_wad.cpp @@ -317,7 +317,7 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo) sprintf(cksumout + (j * 2), "%02X", cksum[j]); } - fprintf(hashfile, "file: %s, hash: %s, size: %d\n", filename, cksumout, reader->GetLength()); + fprintf(hashfile, "file: %s, hash: %s, size: %ld\n", filename, cksumout, reader->GetLength()); } else From 902593198b3b8f7cb5314375707085d483b9e85b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 15 Apr 2015 09:37:06 +0200 Subject: [PATCH 115/144] - wrapped all line ID accesss just like sector tags --- src/fragglescript/t_func.cpp | 17 +++++++++-------- src/p_3dfloors.cpp | 2 +- src/p_3dmidtex.cpp | 2 +- src/p_lnspec.cpp | 4 ++-- src/p_sectors.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/p_setup.cpp | 33 +++++++++++---------------------- src/p_spec.cpp | 4 ++-- src/p_udmf.cpp | 31 ++++++++++++++++++++++++++++--- src/p_xlat.cpp | 3 ++- src/r_defs.h | 7 +++++++ 10 files changed, 99 insertions(+), 40 deletions(-) diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 7650b174e..0251b8fba 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -4382,16 +4382,17 @@ void FParser::SF_SetLineTrigger() FLineIdIterator itr(id); while ((i = itr.Next()) >= 0) { - if (t_argc==2) tag=lines[i].id; + if (t_argc == 2) tag = lines[i].GetMainId(); maplinedef_t mld; - mld.special=spec; - mld.tag=tag; - mld.flags=0; + mld.special = spec; + mld.tag = tag; + mld.flags = 0; int f = lines[i].flags; - P_TranslateLineDef(&lines[i], &mld); - lines[i].id=tag; - lines[i].flags = (lines[i].flags & (ML_MONSTERSCANACTIVATE|ML_REPEAT_SPECIAL|ML_SPAC_MASK|ML_FIRSTSIDEONLY)) | - (f & ~(ML_MONSTERSCANACTIVATE|ML_REPEAT_SPECIAL|ML_SPAC_MASK|ML_FIRSTSIDEONLY)); + P_TranslateLineDef(&lines[i], &mld); + lines[i].ClearIds(); + lines[i].SetMainId(tag); + lines[i].flags = (lines[i].flags & (ML_MONSTERSCANACTIVATE | ML_REPEAT_SPECIAL | ML_SPAC_MASK | ML_FIRSTSIDEONLY)) | + (f & ~(ML_MONSTERSCANACTIVATE | ML_REPEAT_SPECIAL | ML_SPAC_MASK | ML_FIRSTSIDEONLY)); } } diff --git a/src/p_3dfloors.cpp b/src/p_3dfloors.cpp index 5d63751c2..a59b78112 100644 --- a/src/p_3dfloors.cpp +++ b/src/p_3dfloors.cpp @@ -844,7 +844,7 @@ void P_Spawn3DFloors (void) { if (line->args[1]&8) { - line->id = line->args[4]; + line->SetMainId(line->args[4]); } else { diff --git a/src/p_3dmidtex.cpp b/src/p_3dmidtex.cpp index 4939f55dc..ff0d3a181 100644 --- a/src/p_3dmidtex.cpp +++ b/src/p_3dmidtex.cpp @@ -167,7 +167,7 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c { line_t *ln = sectors[sec].lines[line]; - if (lineid != 0 && ln->id != lineid) continue; + if (lineid != 0 && !ln->HasId(lineid)) continue; if (ln->frontsector == NULL || ln->backsector == NULL || !(ln->flags & ML_3DMIDTEX)) { diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index 16d0402f3..16372b206 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -2063,7 +2063,7 @@ static void SetWallScroller (int id, int sidechoice, fixed_t dx, fixed_t dy, int { int wallnum = scroller->GetWallNum (); - if (wallnum >= 0 && sides[wallnum].linedef->id == id && + if (wallnum >= 0 && sides[wallnum].linedef->HasId(id) && int(sides[wallnum].linedef->sidedef[sidechoice] - sides) == wallnum && Where == scroller->GetScrollParts()) { @@ -2082,7 +2082,7 @@ static void SetWallScroller (int id, int sidechoice, fixed_t dx, fixed_t dy, int while ( (collect.Obj = iterator.Next ()) ) { if ((collect.RefNum = ((DScroller *)collect.Obj)->GetWallNum ()) != -1 && - sides[collect.RefNum].linedef->id == id && + sides[collect.RefNum].linedef->HasId(id) && int(sides[collect.RefNum].linedef->sidedef[sidechoice] - sides) == collect.RefNum && Where == ((DScroller *)collect.Obj)->GetScrollParts()) { diff --git a/src/p_sectors.cpp b/src/p_sectors.cpp index d96540351..7061af788 100644 --- a/src/p_sectors.cpp +++ b/src/p_sectors.cpp @@ -859,6 +859,42 @@ void sector_t::HashTags() } } +void line_t::SetMainId(int newid) +{ + id = newid; +} + +int line_t::GetMainId() const +{ + return id; +} + +void line_t::ClearIds() +{ + id = -1; +} + +bool line_t::HasId(int checkid) const +{ + return id == checkid; +} + + +void line_t::HashIds() +{ + // killough 4/17/98: same thing, only for linedefs + int i; + + for (i=numlines; --i>=0; ) // Initially make all slots empty. + lines[i].firstid = -1; + for (i=numlines; --i>=0; ) // Proceed from last to first linedef + { // so that lower linedefs appear first + int j = (unsigned) lines[i].id % (unsigned) numlines; // Hash func + lines[i].nextid = lines[j].firstid; // Prepend linedef to chain + lines[j].firstid = i; + } +} + bool secplane_t::CopyPlaneIfValid (secplane_t *dest, const secplane_t *opp) const { diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 62270567c..9c47e1fdc 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1920,40 +1920,40 @@ void P_SetLineID (line_t *ld) case Line_SetIdentification: if (!(level.flags2 & LEVEL2_HEXENHACK)) { - ld->id = ld->args[0] + 256 * ld->args[4]; + ld->SetMainId(ld->args[0] + 256 * ld->args[4]); ld->flags |= ld->args[1]<<16; } else { - ld->id = ld->args[0]; + ld->SetMainId(ld->args[0]); } ld->special = 0; break; case TranslucentLine: - ld->id = ld->args[0]; + ld->SetMainId(ld->args[0]); ld->flags |= ld->args[3]<<16; break; case Teleport_Line: case Scroll_Texture_Model: - ld->id = ld->args[0]; + ld->SetMainId(ld->args[0]); break; case Polyobj_StartLine: - ld->id = ld->args[3]; + ld->SetMainId(ld->args[3]); break; case Polyobj_ExplicitLine: - ld->id = ld->args[4]; + ld->SetMainId(ld->args[4]); break; case Plane_Align: - ld->id = ld->args[2]; + ld->SetMainId(ld->args[2]); break; case Static_Init: - if (ld->args[1] == Init_SectorLink) ld->id = ld->args[0]; + if (ld->args[1] == Init_SectorLink) ld->SetMainId(ld->args[0]); break; } } @@ -2038,7 +2038,7 @@ void P_FinishLoadingLineDef(line_t *ld, int alpha) { for (j = 0; j < numlines; j++) { - if (lines[j].id == ld->args[0]) + if (lines[j].HasId(ld->args[0])) { lines[j].Alpha = alpha; if (additive) @@ -2233,7 +2233,7 @@ void P_LoadLineDefs2 (MapData * map) ld->v1 = &vertexes[LittleShort(mld->v1)]; ld->v2 = &vertexes[LittleShort(mld->v2)]; ld->Alpha = FRACUNIT; // [RH] Opaque by default - ld->id = -1; + ld->ClearIds(); P_SetSideNum (&ld->sidedef[0], LittleShort(mld->sidenum[0])); P_SetSideNum (&ld->sidedef[1], LittleShort(mld->sidenum[1])); @@ -3310,18 +3310,7 @@ void P_LoadBehavior (MapData * map) static void P_InitTagLists () { sector_t::HashTags(); - - // killough 4/17/98: same thing, only for linedefs - int i; - - for (i=numlines; --i>=0; ) // Initially make all slots empty. - lines[i].firstid = -1; - for (i=numlines; --i>=0; ) // Proceed from last to first linedef - { // so that lower linedefs appear first - int j = (unsigned) lines[i].id % (unsigned) numlines; // Hash func - lines[i].nextid = lines[j].firstid; // Prepend linedef to chain - lines[j].firstid = i; - } + line_t::HashIds(); } void P_GetPolySpots (MapData * map, TArray &spots, TArray &anchors) diff --git a/src/p_spec.cpp b/src/p_spec.cpp index c072122b8..8dbb73f37 100644 --- a/src/p_spec.cpp +++ b/src/p_spec.cpp @@ -279,11 +279,11 @@ bool P_ActivateLine (line_t *line, AActor *mo, int side, int activationType) } // some old WADs use this method to create walls that change the texture when shot. else if (activationType == SPAC_Impact && // only for shootable triggers - (level.flags2 & LEVEL2_DUMMYSWITCHES) && // this is only a compatibility setting for an old hack! + (level.flags2 & LEVEL2_DUMMYSWITCHES) && // this is only a compatibility setting for an old hack! !repeat && // only non-repeatable triggers (specialGeneric_Crusher) && // not for Boom's generalized linedefs special && // not for lines without a special - line->args[0] == line->id && // Safety check: exclude edited UDMF linedefs or ones that don't map the tag to args[0] + line->HasId(line->args[0]) && // Safety check: exclude edited UDMF linedefs or ones that don't map the tag to args[0] line->args[0] && // only if there's a tag (which is stored in the first arg) P_FindFirstSectorFromTag (line->args[0]) == -1) // only if no sector is tagged to this linedef { diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index aab952f21..75ad855fe 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -780,7 +780,7 @@ public: memset(ld, 0, sizeof(*ld)); ld->Alpha = FRACUNIT; - ld->id = -1; + ld->ClearIds(); ld->sidedef[0] = ld->sidedef[1] = NULL; if (level.flags2 & LEVEL2_CLIPMIDTEX) ld->flags |= ML_CLIP_MIDTEX; if (level.flags2 & LEVEL2_WRAPMIDTEX) ld->flags |= ML_WRAP_MIDTEX; @@ -813,7 +813,7 @@ public: continue; case NAME_Id: - ld->id = CheckInt(key); + ld->SetMainId(CheckInt(key)); continue; case NAME_Sidefront: @@ -1040,6 +1040,19 @@ public: break; } +#if 0 // for later + if (if (namespace_bits & (Zd)) && !strnicmp(key.GetChars(), "Id", 2)) + { + char *endp; + int num = strtol(key.GetChars(), &endp, 10); + if (num > 0 && *endp == NULL) + { + // only allow ID## with ## as a proper number + ld->SetId((short)CheckInt(key), false); + } + } +#endif + if (!strnicmp("user_", key.GetChars(), 5)) { AddUserKey(key, UDMF_Line, index); @@ -1053,7 +1066,7 @@ public: maplinedef_t mld; memset(&mld, 0, sizeof(mld)); mld.special = ld->special; - mld.tag = ld->id; + mld.tag = ld->GetMainId(); P_TranslateLineDef(ld, &mld); ld->flags = saved | (ld->flags&(ML_MONSTERSCANACTIVATE|ML_REPEAT_SPECIAL|ML_FIRSTSIDEONLY)); } @@ -1497,6 +1510,18 @@ public: default: break; } +#if 0 // for later + if (namespace_bits & (Zd)) && !strnicmp(key.GetChars(), "Id", 2)) + { + char *endp; + int num = strtol(key.GetChars(), &endp, 10); + if (num > 0 && *endp == NULL) + { + // only allow ID## with ## as a proper number + sec->SetTag((short)CheckInt(key), false); + } + } +#endif if (!strnicmp("user_", key.GetChars(), 5)) { diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index 2d48e6053..ef1e92849 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -104,7 +104,8 @@ void P_TranslateLineDef (line_t *ld, maplinedef_t *mld) // line also needs to have its ID set to the same as its tag. // An external conversion program would need to do this more // intelligently. - ld->id = tag; + ld->ClearIds(); + ld->SetMainId(tag); // 0 specials are never translated. if (special == 0) diff --git a/src/r_defs.h b/src/r_defs.h index 41821cb62..1865777d3 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -905,6 +905,13 @@ struct line_t sector_t *frontsector, *backsector; int validcount; // if == validcount, already checked int locknumber; // [Dusk] lock number for special + + + void SetMainId(int newid); + int GetMainId() const; + void ClearIds(); + bool HasId(int id) const; + static void HashIds(); }; // phares 3/14/98 From 418e6a16b85fb84833a65c80d89110e9c3406577 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 15 Apr 2015 09:43:43 +0200 Subject: [PATCH 116/144] - fixed UDMF user variables could be set for the base namespaces which do not define them. --- src/p_udmf.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 75ad855fe..cdbb8dc4c 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -722,6 +722,7 @@ public: break; default: + CHECK_N(Zd | Zdt) if (0 == strnicmp("user_", key.GetChars(), 5)) { // Custom user key - Sets an actor's user variable directly FMapThingUserData ud; @@ -1041,7 +1042,7 @@ public: } #if 0 // for later - if (if (namespace_bits & (Zd)) && !strnicmp(key.GetChars(), "Id", 2)) + if (namespace_bits & (Zd)) && !strnicmp(key.GetChars(), "Id", 2)) { char *endp; int num = strtol(key.GetChars(), &endp, 10); @@ -1053,7 +1054,7 @@ public: } #endif - if (!strnicmp("user_", key.GetChars(), 5)) + if ((namespace_bits & (Zd | Zdt)) && !strnicmp("user_", key.GetChars(), 5)) { AddUserKey(key, UDMF_Line, index); } @@ -1239,7 +1240,7 @@ public: break; } - if (!strnicmp("user_", key.GetChars(), 5)) + if ((namespace_bits & (Zd | Zdt)) && !strnicmp("user_", key.GetChars(), 5)) { AddUserKey(key, UDMF_Side, index); } @@ -1523,7 +1524,7 @@ public: } #endif - if (!strnicmp("user_", key.GetChars(), 5)) + if ((namespace_bits & (Zd | Zdt)) && !strnicmp("user_", key.GetChars(), 5)) { AddUserKey(key, UDMF_Sector, index); } From 203f88ce6efb0811c06ce2b88085f876102ba42d Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 15 Apr 2015 20:10:27 +0200 Subject: [PATCH 117/144] - some sanitizing of sector tag/line id management: * make setting the line ID with P_TranslateLineDef explicit because there's one FraggleScript function that needs to work around the changes caused by this. There's also some functions setting only a temporary linedef. These would inevitably cause problems if the underlying data gets changed. * remove FS function 'ChangeTag'. Fortunately this was just some long forgotten test stuff that can be removed without affecting any maps, but the feature would cause some serious problems in a more complex system. With these changes it is guaranteed that after map setup the tag/ids won't change anymore. --- src/fragglescript/t_func.cpp | 28 +++++----------------------- src/p_setup.cpp | 15 ++++----------- src/p_setup.h | 2 +- src/p_udmf.cpp | 4 ++-- src/p_xlat.cpp | 16 +++++++++------- src/thingdef/thingdef_codeptr.cpp | 4 ++-- 6 files changed, 23 insertions(+), 46 deletions(-) diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 0251b8fba..a0609377e 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -67,6 +67,7 @@ #include "v_font.h" #include "r_data/colormaps.h" #include "farchive.h" +#include "p_setup.h" static FRandom pr_script("FScript"); @@ -2226,9 +2227,6 @@ void FParser::SF_RunCommand(void) // //========================================================================== -// any linedef type -extern void P_TranslateLineDef (line_t *ld, maplinedef_t *mld); - void FParser::SF_LineTrigger() { if (CheckArgs(1)) @@ -2237,7 +2235,7 @@ void FParser::SF_LineTrigger() maplinedef_t mld; mld.special=intvalue(t_argv[0]); mld.tag=t_argc > 1 ? intvalue(t_argv[1]) : 0; - P_TranslateLineDef(&line, &mld); + P_TranslateLineDef(&line, &mld, false); P_ExecuteSpecial(line.special, NULL, Script->trigger, false, line.args[0],line.args[1],line.args[2],line.args[3],line.args[4]); } @@ -4382,15 +4380,12 @@ void FParser::SF_SetLineTrigger() FLineIdIterator itr(id); while ((i = itr.Next()) >= 0) { - if (t_argc == 2) tag = lines[i].GetMainId(); maplinedef_t mld; mld.special = spec; mld.tag = tag; mld.flags = 0; int f = lines[i].flags; - P_TranslateLineDef(&lines[i], &mld); - lines[i].ClearIds(); - lines[i].SetMainId(tag); + P_TranslateLineDef(&lines[i], &mld, false); lines[i].flags = (lines[i].flags & (ML_MONSTERSCANACTIVATE | ML_REPEAT_SPECIAL | ML_SPAC_MASK | ML_FIRSTSIDEONLY)) | (f & ~(ML_MONSTERSCANACTIVATE | ML_REPEAT_SPECIAL | ML_SPAC_MASK | ML_FIRSTSIDEONLY)); @@ -4401,26 +4396,13 @@ void FParser::SF_SetLineTrigger() //========================================================================== // -// new for GZDoom: Changes a sector's tag -// (I only need this because MAP02 in RTC-3057 has some issues with the GL -// renderer that I can't fix without the scripts. But loading a FS on top on -// ACS still works so I can hack around it with this.) +// // //========================================================================== void FParser::SF_ChangeTag() { - if (CheckArgs(2)) - { - FSectorTagIterator it(t_argv[0].value.i); - int secnum; - while ((secnum = it.Next()) >= 0) - { - sectors[secnum].ClearTags(); - sectors[secnum].SetMainTag(t_argv[1].value.i); - } - sector_t::HashTags(); - } + // Development garbage! } diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 9c47e1fdc..4a1527514 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -96,7 +96,6 @@ CVAR (Bool, gennodes, false, CVAR_SERVERINFO|CVAR_GLOBALCONFIG); CVAR (Bool, genglnodes, false, CVAR_SERVERINFO); CVAR (Bool, showloadtimes, false, 0); -static void P_InitTagLists (); static void P_Shutdown (); bool P_IsBuildMap(MapData *map); @@ -2146,11 +2145,10 @@ void P_LoadLineDefs (MapData * map) // [RH] Translate old linedef special and flags to be // compatible with the new format. - P_TranslateLineDef (ld, mld); + P_TranslateLineDef (ld, mld, true); ld->v1 = &vertexes[LittleShort(mld->v1)]; ld->v2 = &vertexes[LittleShort(mld->v2)]; - //ld->id = -1; ID has been assigned in P_TranslateLineDef P_SetSideNum (&ld->sidedef[0], LittleShort(mld->sidenum[0])); P_SetSideNum (&ld->sidedef[1], LittleShort(mld->sidenum[1])); @@ -3209,7 +3207,9 @@ static void P_GroupLines (bool buildmap) // [RH] Moved this here times[4].Clock(); - P_InitTagLists(); // killough 1/30/98: Create xref tables for tags + // killough 1/30/98: Create xref tables for tags + sector_t::HashTags(); + line_t::HashIds(); times[4].Unclock(); times[5].Clock(); @@ -3306,13 +3306,6 @@ void P_LoadBehavior (MapData * map) } } -// Hash the sector tags across the sectors and linedefs. -static void P_InitTagLists () -{ - sector_t::HashTags(); - line_t::HashIds(); -} - void P_GetPolySpots (MapData * map, TArray &spots, TArray &anchors) { if (map->HasBehavior) diff --git a/src/p_setup.h b/src/p_setup.h index ee26f4c57..20caa5d76 100644 --- a/src/p_setup.h +++ b/src/p_setup.h @@ -115,7 +115,7 @@ struct line_t; struct maplinedef_t; void P_LoadTranslator(const char *lumpname); -void P_TranslateLineDef (line_t *ld, maplinedef_t *mld); +void P_TranslateLineDef (line_t *ld, maplinedef_t *mld, bool setlineid); int P_TranslateSectorSpecial (int); int GetUDMFInt(int type, int index, const char *key); diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index cdbb8dc4c..09cee8441 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -754,7 +754,7 @@ public: mld.flags = 0; mld.special = th->special; mld.tag = th->args[0]; - P_TranslateLineDef(&ld, &mld); + P_TranslateLineDef(&ld, &mld, true); th->special = ld.special; memcpy(th->args, ld.args, sizeof (ld.args)); } @@ -1068,7 +1068,7 @@ public: memset(&mld, 0, sizeof(mld)); mld.special = ld->special; mld.tag = ld->GetMainId(); - P_TranslateLineDef(ld, &mld); + P_TranslateLineDef(ld, &mld, false); ld->flags = saved | (ld->flags&(ML_MONSTERSCANACTIVATE|ML_REPEAT_SPECIAL|ML_FIRSTSIDEONLY)); } if (passuse && (ld->activation & SPAC_Use)) diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index ef1e92849..4b1373817 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -60,7 +60,7 @@ typedef enum PushMany, } triggertype_e; -void P_TranslateLineDef (line_t *ld, maplinedef_t *mld) +void P_TranslateLineDef (line_t *ld, maplinedef_t *mld, bool setid) { unsigned short special = (unsigned short) LittleShort(mld->special); short tag = LittleShort(mld->tag); @@ -100,12 +100,14 @@ void P_TranslateLineDef (line_t *ld, maplinedef_t *mld) } flags = newflags; - // For purposes of maintaining BOOM compatibility, each - // line also needs to have its ID set to the same as its tag. - // An external conversion program would need to do this more - // intelligently. - ld->ClearIds(); - ld->SetMainId(tag); + if (setid) + { + // For purposes of maintaining BOOM compatibility, each + // line also needs to have its ID set to the same as its tag. + // An external conversion program would need to do this more + // intelligently. + ld->SetMainId(tag); + } // 0 specials are never translated. if (special == 0) diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index cb59f8a1f..b63ba567f 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -70,6 +70,7 @@ #include "m_bbox.h" #include "r_data/r_translate.h" #include "p_trace.h" +#include "p_setup.h" #include "gstrings.h" @@ -4506,7 +4507,6 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Weave) //=========================================================================== -void P_TranslateLineDef (line_t *ld, maplinedef_t *mld); DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LineEffect) { ACTION_PARAM_START(2); @@ -4520,7 +4520,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LineEffect) if ((oldjunk.special = special)) // Linedef type { oldjunk.tag = tag; // Sector tag for linedef - P_TranslateLineDef(&junk, &oldjunk); // Turn into native type + P_TranslateLineDef(&junk, &oldjunk, false); // Turn into native type res = !!P_ExecuteSpecial(junk.special, NULL, self, false, junk.args[0], junk.args[1], junk.args[2], junk.args[3], junk.args[4]); if (res && !(junk.flags & ML_REPEAT_SPECIAL)) // If only once, From 3cb4eb44a854a90cf621274a80fe1faf2de93b22 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 16 Apr 2015 08:29:21 +0200 Subject: [PATCH 118/144] - fixed: APowerRegeneration::DoEffect did not call the super method. --- src/g_shared/a_artifacts.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/g_shared/a_artifacts.cpp b/src/g_shared/a_artifacts.cpp index 14b270435..87491073e 100644 --- a/src/g_shared/a_artifacts.cpp +++ b/src/g_shared/a_artifacts.cpp @@ -1757,6 +1757,7 @@ IMPLEMENT_CLASS(APowerRegeneration) void APowerRegeneration::DoEffect() { + Super::DoEffect(); if (Owner != NULL && Owner->health > 0 && (level.time & 31) == 0) { if (P_GiveBody(Owner, Strength/FRACUNIT)) From e30958f44315c15f7c69122c85629a3b09985fe1 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 16 Apr 2015 18:07:45 +0200 Subject: [PATCH 119/144] - fixed: The check for completely invisible 3D floor in the sorting code checked the wrong flags. --- src/p_3dfloors.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/p_3dfloors.cpp b/src/p_3dfloors.cpp index a59b78112..ae1c31a86 100644 --- a/src/p_3dfloors.cpp +++ b/src/p_3dfloors.cpp @@ -44,6 +44,7 @@ #include "r_data/colormaps.h" #ifdef _3DFLOORS +EXTERN_CVAR(Int, vid_renderer) //========================================================================== // @@ -201,7 +202,7 @@ static void P_Add3DFloor(sector_t* sec, sector_t* sec2, line_t* master, int flag // kg3D - software renderer only hack // this is really required because of ceilingclip and floorclip - if(flags & FF_BOTHPLANES) + if((vid_renderer == 0) && (flags & FF_BOTHPLANES)) { P_Add3DFloor(sec, sec2, master, FF_EXISTS | FF_THISINSIDE | FF_RENDERPLANES | FF_NOSHADE | FF_SEETHROUGH | FF_SHOOTTHROUGH | (flags & (FF_INVERTSECTOR | FF_TRANSLUCENT | FF_ADDITIVETRANS)), alpha); @@ -220,8 +221,7 @@ static int P_Set3DFloor(line_t * line, int param, int param2, int alpha) int tag=line->args[0]; sector_t * sec = line->frontsector, * ss; - FSectorTagIterator it(tag); - while ((s = it.Next()) >= 0) + for (s=-1; (s = P_FindSectorFromTag(tag,s)) >= 0;) { ss=§ors[s]; @@ -265,6 +265,7 @@ static int P_Set3DFloor(line_t * line, int param, int param2, int alpha) else if (param==4) { flags=FF_EXISTS|FF_RENDERPLANES|FF_INVERTPLANES|FF_NOSHADE|FF_FIX; + if (param2 & 1) flags |= FF_SEETHROUGH; // marker for allowing missing texture checks alpha=255; } else @@ -489,7 +490,7 @@ void P_Recalculate3DFloors(sector_t * sector) // by the clipping code below. ffloors.Push(pick); } - else if ((pick->flags&(FF_SWIMMABLE|FF_TRANSLUCENT) || (!(pick->flags&(FF_ALLSIDES|FF_BOTHPLANES)))) && pick->flags&FF_EXISTS) + else if ((pick->flags&(FF_SWIMMABLE|FF_TRANSLUCENT) || (!(pick->flags&FF_RENDERALL))) && pick->flags&FF_EXISTS) { // We must check if this nonsolid segment gets clipped from the top by another 3D floor if (solid != NULL && solid_bottom < height) @@ -583,6 +584,7 @@ void P_Recalculate3DFloors(sector_t * sector) lightlist[0].extra_colormap = sector->ColorMap; lightlist[0].blend = 0; lightlist[0].flags = 0; + lightlist[0].fromsector = true; maxheight = sector->CenterCeiling(); minheight = sector->CenterFloor(); @@ -604,6 +606,7 @@ void P_Recalculate3DFloors(sector_t * sector) newlight.extra_colormap = rover->GetColormap(); newlight.blend = rover->GetBlend(); newlight.flags = rover->flags; + newlight.fromsector = false; lightlist.Push(newlight); } else if (i==0) @@ -618,6 +621,7 @@ void P_Recalculate3DFloors(sector_t * sector) lightlist[0].extra_colormap = rover->GetColormap(); lightlist[0].blend = rover->GetBlend(); lightlist[0].flags = rover->flags; + lightlist[0].fromsector = false; } } if (rover->flags&FF_DOUBLESHADOW) @@ -642,6 +646,7 @@ void P_Recalculate3DFloors(sector_t * sector) newlight.blend = 0; } newlight.flags = rover->flags; + newlight.fromsector = false; lightlist.Push(newlight); } } @@ -844,7 +849,7 @@ void P_Spawn3DFloors (void) { if (line->args[1]&8) { - line->SetMainId(line->args[4]); + line->id = line->args[4]; } else { From d166211ce073cbbcfc96de87edfdc7d24daccefc Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 16 Apr 2015 19:55:46 +0200 Subject: [PATCH 120/144] - reverted changes from copying over p_3dfloors.cpp with GZDoom's version. --- src/p_3dfloors.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/p_3dfloors.cpp b/src/p_3dfloors.cpp index ae1c31a86..42d79dcc0 100644 --- a/src/p_3dfloors.cpp +++ b/src/p_3dfloors.cpp @@ -44,7 +44,6 @@ #include "r_data/colormaps.h" #ifdef _3DFLOORS -EXTERN_CVAR(Int, vid_renderer) //========================================================================== // @@ -202,7 +201,7 @@ static void P_Add3DFloor(sector_t* sec, sector_t* sec2, line_t* master, int flag // kg3D - software renderer only hack // this is really required because of ceilingclip and floorclip - if((vid_renderer == 0) && (flags & FF_BOTHPLANES)) + if(flags & FF_BOTHPLANES) { P_Add3DFloor(sec, sec2, master, FF_EXISTS | FF_THISINSIDE | FF_RENDERPLANES | FF_NOSHADE | FF_SEETHROUGH | FF_SHOOTTHROUGH | (flags & (FF_INVERTSECTOR | FF_TRANSLUCENT | FF_ADDITIVETRANS)), alpha); @@ -221,7 +220,8 @@ static int P_Set3DFloor(line_t * line, int param, int param2, int alpha) int tag=line->args[0]; sector_t * sec = line->frontsector, * ss; - for (s=-1; (s = P_FindSectorFromTag(tag,s)) >= 0;) + FSectorTagIterator it(tag); + while ((s = it.Next()) >= 0) { ss=§ors[s]; @@ -265,7 +265,6 @@ static int P_Set3DFloor(line_t * line, int param, int param2, int alpha) else if (param==4) { flags=FF_EXISTS|FF_RENDERPLANES|FF_INVERTPLANES|FF_NOSHADE|FF_FIX; - if (param2 & 1) flags |= FF_SEETHROUGH; // marker for allowing missing texture checks alpha=255; } else @@ -584,7 +583,6 @@ void P_Recalculate3DFloors(sector_t * sector) lightlist[0].extra_colormap = sector->ColorMap; lightlist[0].blend = 0; lightlist[0].flags = 0; - lightlist[0].fromsector = true; maxheight = sector->CenterCeiling(); minheight = sector->CenterFloor(); @@ -606,7 +604,6 @@ void P_Recalculate3DFloors(sector_t * sector) newlight.extra_colormap = rover->GetColormap(); newlight.blend = rover->GetBlend(); newlight.flags = rover->flags; - newlight.fromsector = false; lightlist.Push(newlight); } else if (i==0) @@ -621,7 +618,6 @@ void P_Recalculate3DFloors(sector_t * sector) lightlist[0].extra_colormap = rover->GetColormap(); lightlist[0].blend = rover->GetBlend(); lightlist[0].flags = rover->flags; - lightlist[0].fromsector = false; } } if (rover->flags&FF_DOUBLESHADOW) @@ -646,7 +642,6 @@ void P_Recalculate3DFloors(sector_t * sector) newlight.blend = 0; } newlight.flags = rover->flags; - newlight.fromsector = false; lightlist.Push(newlight); } } @@ -849,7 +844,7 @@ void P_Spawn3DFloors (void) { if (line->args[1]&8) { - line->id = line->args[4]; + line->SetMainId(line->args[4]); } else { From 9b6756114b89c37d607705713bd7705cf08c8a20 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 16 Apr 2015 17:39:45 -0500 Subject: [PATCH 121/144] Scale mouse coordinates based on window size - Fixed: If you enlarged the game window (in windowed mode) so that the window is bigger than the selected resolution, the menu would still take its inputs from the portion in the upper left that matched the resolution. --- src/v_video.h | 4 ++-- src/win32/fb_d3d9.cpp | 22 ++++++++++++++++++++++ src/win32/fb_ddraw.cpp | 13 +++++++++++++ src/win32/i_input.cpp | 8 ++++---- src/win32/win32iface.h | 5 ++--- 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/v_video.h b/src/v_video.h index 69741c7f8..5250cdaa9 100644 --- a/src/v_video.h +++ b/src/v_video.h @@ -398,8 +398,8 @@ public: virtual void WipeEndScreen(); virtual bool WipeDo(int ticks); virtual void WipeCleanup(); - virtual int GetPixelDoubling() const { return 0; } - virtual int GetTrueHeight() { return GetHeight(); } + + virtual void ScaleCoordsFromWindow(SWORD &x, SWORD &y) {} uint32 GetLastFPS() const { return LastCount; } diff --git a/src/win32/fb_d3d9.cpp b/src/win32/fb_d3d9.cpp index e23275734..9fd185431 100644 --- a/src/win32/fb_d3d9.cpp +++ b/src/win32/fb_d3d9.cpp @@ -1028,6 +1028,28 @@ bool D3DFB::IsFullscreen () return !Windowed; } +//========================================================================== +// +// D3DFB :: ScaleCoordsFromWindow +// +// Given coordinates in window space, return coordinates in what the game +// thinks screen space is. +// +//========================================================================== + +void D3DFB::ScaleCoordsFromWindow(SWORD &x, SWORD &y) +{ + RECT rect; + + if (GetClientRect(Window, &rect)) + { + x = SWORD(x * Width / (rect.right - rect.left)); + y = SWORD(y * TrueHeight / (rect.bottom - rect.top)); + } + // Subtract letterboxing borders + y -= (TrueHeight - Height) / 2; +} + //========================================================================== // // D3DFB :: Lock diff --git a/src/win32/fb_ddraw.cpp b/src/win32/fb_ddraw.cpp index 2aa694f3b..ecf570ff8 100644 --- a/src/win32/fb_ddraw.cpp +++ b/src/win32/fb_ddraw.cpp @@ -806,6 +806,19 @@ bool DDrawFB::Is8BitMode() return vid_displaybits == 8; } +void DDrawFB::ScaleCoordsFromWindow(SWORD &x, SWORD &y) +{ + RECT rect; + + if (GetClientRect(Window, &rect)) + { + x = SWORD(x * Width / (rect.right - rect.left)); + y = SWORD(y * TrueHeight / (rect.bottom - rect.top)); + } + // Subtract letterboxing borders + y -= (TrueHeight - Height) / 2; +} + bool DDrawFB::IsValid () { return PrimarySurf != NULL; diff --git a/src/win32/i_input.cpp b/src/win32/i_input.cpp index ed7c81cf1..a26ff320e 100644 --- a/src/win32/i_input.cpp +++ b/src/win32/i_input.cpp @@ -323,11 +323,11 @@ bool GUIWndProcHook(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESU if (BlockMouseMove > 0) return true; } + ev.data1 = LOWORD(lParam); + ev.data2 = HIWORD(lParam); + if (screen != NULL) { - int shift = screen? screen->GetPixelDoubling() : 0; - ev.data1 = LOWORD(lParam) >> shift; - ev.data2 = HIWORD(lParam) >> shift; - if (screen) ev.data2 -= (screen->GetTrueHeight() - screen->GetHeight())/2; + screen->ScaleCoordsFromWindow(ev.data1, ev.data2); } if (wParam & MK_SHIFT) ev.data3 |= GKM_SHIFT; diff --git a/src/win32/win32iface.h b/src/win32/win32iface.h index 2704de0fa..9699157cd 100644 --- a/src/win32/win32iface.h +++ b/src/win32/win32iface.h @@ -164,8 +164,8 @@ public: void SetVSync (bool vsync); void NewRefreshRate(); HRESULT GetHR (); - virtual int GetTrueHeight() { return TrueHeight; } bool Is8BitMode(); + void ScaleCoordsFromWindow(SWORD &x, SWORD &y); void Blank (); bool PaintToWindow (); @@ -269,8 +269,8 @@ public: bool WipeDo(int ticks); void WipeCleanup(); HRESULT GetHR (); - virtual int GetTrueHeight() { return TrueHeight; } bool Is8BitMode() { return false; } + void ScaleCoordsFromWindow(SWORD &x, SWORD &y); private: friend class D3DTex; @@ -380,7 +380,6 @@ private: void EndLineBatch(); void EndBatch(); void CopyNextFrontBuffer(); - int GetPixelDoubling() const { return PixelDoubling; } D3DCAPS9 DeviceCaps; From 1fa1e26cf9c91f6eb41f967e76799323541080ff Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Fri, 17 Apr 2015 00:24:33 -0400 Subject: [PATCH 122/144] - SDL backend could use the new ScaleCoordsFromWindow since it does similarly for fullscreen. --- src/posix/sdl/i_input.cpp | 32 +++----------------------------- src/posix/sdl/sdlvideo.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/posix/sdl/i_input.cpp b/src/posix/sdl/i_input.cpp index 6fff2d2a9..372b23446 100644 --- a/src/posix/sdl/i_input.cpp +++ b/src/posix/sdl/i_input.cpp @@ -18,8 +18,6 @@ #include "templates.h" #include "s_sound.h" -void ScaleWithAspect (int &w, int &h, int Width, int Height); - static void I_CheckGUICapture (); static void I_CheckNativeMouse (); @@ -320,35 +318,11 @@ void MessagePump (const SDL_Event &sev) int x, y; SDL_GetMouseState (&x, &y); - // Detect if we're doing scaling in the Window and adjust the mouse - // coordinates accordingly. This could be more efficent, but I - // don't think performance is an issue in the menus. - SDL_Window *focus; - if (screen->IsFullscreen() && (focus = SDL_GetMouseFocus ())) - { - int w, h; - SDL_GetWindowSize (focus, &w, &h); - int realw = w, realh = h; - ScaleWithAspect (realw, realh, SCREENWIDTH, SCREENHEIGHT); - if (realw != SCREENWIDTH || realh != SCREENHEIGHT) - { - double xratio = (double)SCREENWIDTH/realw; - double yratio = (double)SCREENHEIGHT/realh; - if (realw < w) - { - x = (x - (w - realw)/2)*xratio; - y *= yratio; - } - else - { - y = (y - (h - realh)/2)*yratio; - x *= xratio; - } - } - } - event.data1 = x; event.data2 = y; + + screen->ScaleCoordsFromWindow(event.data1, event.data2); + event.type = EV_GUI_Event; if(sev.type == SDL_MOUSEMOTION) event.subtype = EV_GUI_MouseMove; diff --git a/src/posix/sdl/sdlvideo.cpp b/src/posix/sdl/sdlvideo.cpp index 309002456..c24fd797a 100644 --- a/src/posix/sdl/sdlvideo.cpp +++ b/src/posix/sdl/sdlvideo.cpp @@ -50,6 +50,7 @@ public: friend class SDLVideo; virtual void SetVSync (bool vsync); + virtual void ScaleCoordsFromWindow(SWORD &x, SWORD &y); private: PalEntry SourcePalette[256]; @@ -723,6 +724,35 @@ void SDLFB::SetVSync (bool vsync) #endif // __APPLE__ } +void SDLFB::ScaleCoordsFromWindow(SWORD &x, SWORD &y) +{ + // Detect if we're doing scaling in the Window and adjust the mouse + // coordinates accordingly. This could be more efficent, but I + // don't think performance is an issue in the menus. + if(IsFullscreen()) + { + int w, h; + SDL_GetWindowSize (Screen, &w, &h); + int realw = w, realh = h; + ScaleWithAspect (realw, realh, SCREENWIDTH, SCREENHEIGHT); + if (realw != SCREENWIDTH || realh != SCREENHEIGHT) + { + double xratio = (double)SCREENWIDTH/realw; + double yratio = (double)SCREENHEIGHT/realh; + if (realw < w) + { + x = (x - (w - realw)/2)*xratio; + y *= yratio; + } + else + { + y = (y - (h - realh)/2)*yratio; + x *= xratio; + } + } + } +} + ADD_STAT (blit) { FString out; From 6e28963141cf02da2ca108b0104b65fc90b649ff Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 17 Apr 2015 19:40:45 +0200 Subject: [PATCH 123/144] - added a sanity check to GL nodes loader for a potential crash. --- src/p_glnodes.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/p_glnodes.cpp b/src/p_glnodes.cpp index 1b34e8bbc..547cecace 100644 --- a/src/p_glnodes.cpp +++ b/src/p_glnodes.cpp @@ -338,7 +338,14 @@ static bool LoadGLSegs(FileReader * lump) ml->side=LittleShort(ml->side); segs[i].sidedef = ldef->sidedef[ml->side]; - segs[i].frontsector = ldef->sidedef[ml->side]->sector; + if (ldef->sidedef[ml->side] != NULL) + { + segs[i].frontsector = ldef->sidedef[ml->side]->sector; + } + else + { + segs[i].frontsector = NULL; + } if (ldef->flags & ML_TWOSIDED && ldef->sidedef[ml->side^1] != NULL) { segs[i].backsector = ldef->sidedef[ml->side^1]->sector; @@ -346,7 +353,7 @@ static bool LoadGLSegs(FileReader * lump) else { ldef->flags &= ~ML_TWOSIDED; - segs[i].backsector = 0; + segs[i].backsector = NULL; } } @@ -385,7 +392,14 @@ static bool LoadGLSegs(FileReader * lump) ml->side=LittleShort(ml->side); segs[i].sidedef = ldef->sidedef[ml->side]; - segs[i].frontsector = ldef->sidedef[ml->side]->sector; + if (ldef->sidedef[ml->side] != NULL) + { + segs[i].frontsector = ldef->sidedef[ml->side]->sector; + } + else + { + segs[i].frontsector = NULL; + } if (ldef->flags & ML_TWOSIDED && ldef->sidedef[ml->side^1] != NULL) { segs[i].backsector = ldef->sidedef[ml->side^1]->sector; @@ -393,7 +407,7 @@ static bool LoadGLSegs(FileReader * lump) else { ldef->flags &= ~ML_TWOSIDED; - segs[i].backsector = 0; + segs[i].backsector = NULL; } } From f983f778f27ca17b1a45f62d367c174ab0c0b5c5 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 17 Apr 2015 21:39:07 +0200 Subject: [PATCH 124/144] - moved ScaleCoordsFromWindow to the BaseWinFB base class to eliminate two identical implementations. (GZDoom would have had to implement a third identical copy in its GL framebuffer as well.) --- src/win32/fb_d3d9.cpp | 22 ---------------------- src/win32/fb_ddraw.cpp | 13 ------------- src/win32/win32iface.h | 6 ++++-- src/win32/win32video.cpp | 23 +++++++++++++++++++++++ 4 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/win32/fb_d3d9.cpp b/src/win32/fb_d3d9.cpp index 9fd185431..e23275734 100644 --- a/src/win32/fb_d3d9.cpp +++ b/src/win32/fb_d3d9.cpp @@ -1028,28 +1028,6 @@ bool D3DFB::IsFullscreen () return !Windowed; } -//========================================================================== -// -// D3DFB :: ScaleCoordsFromWindow -// -// Given coordinates in window space, return coordinates in what the game -// thinks screen space is. -// -//========================================================================== - -void D3DFB::ScaleCoordsFromWindow(SWORD &x, SWORD &y) -{ - RECT rect; - - if (GetClientRect(Window, &rect)) - { - x = SWORD(x * Width / (rect.right - rect.left)); - y = SWORD(y * TrueHeight / (rect.bottom - rect.top)); - } - // Subtract letterboxing borders - y -= (TrueHeight - Height) / 2; -} - //========================================================================== // // D3DFB :: Lock diff --git a/src/win32/fb_ddraw.cpp b/src/win32/fb_ddraw.cpp index ecf570ff8..2aa694f3b 100644 --- a/src/win32/fb_ddraw.cpp +++ b/src/win32/fb_ddraw.cpp @@ -806,19 +806,6 @@ bool DDrawFB::Is8BitMode() return vid_displaybits == 8; } -void DDrawFB::ScaleCoordsFromWindow(SWORD &x, SWORD &y) -{ - RECT rect; - - if (GetClientRect(Window, &rect)) - { - x = SWORD(x * Width / (rect.right - rect.left)); - y = SWORD(y * TrueHeight / (rect.bottom - rect.top)); - } - // Subtract letterboxing borders - y -= (TrueHeight - Height) / 2; -} - bool DDrawFB::IsValid () { return PrimarySurf != NULL; diff --git a/src/win32/win32iface.h b/src/win32/win32iface.h index 9699157cd..934931ea0 100644 --- a/src/win32/win32iface.h +++ b/src/win32/win32iface.h @@ -127,10 +127,12 @@ public: virtual void Blank () = 0; virtual bool PaintToWindow () = 0; virtual HRESULT GetHR () = 0; + virtual void ScaleCoordsFromWindow(SWORD &x, SWORD &y); protected: virtual bool CreateResources () = 0; virtual void ReleaseResources () = 0; + virtual int GetTrueHeight() { return GetHeight(); } bool Windowed; @@ -165,7 +167,7 @@ public: void NewRefreshRate(); HRESULT GetHR (); bool Is8BitMode(); - void ScaleCoordsFromWindow(SWORD &x, SWORD &y); + virtual int GetTrueHeight() { return TrueHeight; } void Blank (); bool PaintToWindow (); @@ -270,7 +272,7 @@ public: void WipeCleanup(); HRESULT GetHR (); bool Is8BitMode() { return false; } - void ScaleCoordsFromWindow(SWORD &x, SWORD &y); + virtual int GetTrueHeight() { return TrueHeight; } private: friend class D3DTex; diff --git a/src/win32/win32video.cpp b/src/win32/win32video.cpp index 3071ae8e7..8aa74bfb5 100644 --- a/src/win32/win32video.cpp +++ b/src/win32/win32video.cpp @@ -736,6 +736,29 @@ void Win32Video::SetWindowedScale (float scale) // FIXME } +//========================================================================== +// +// BaseWinFB :: ScaleCoordsFromWindow +// +// Given coordinates in window space, return coordinates in what the game +// thinks screen space is. +// +//========================================================================== + +void BaseWinFB::ScaleCoordsFromWindow(SWORD &x, SWORD &y) +{ + RECT rect; + + int TrueHeight = GetTrueHeight(); + if (GetClientRect(Window, &rect)) + { + x = SWORD(x * Width / (rect.right - rect.left)); + y = SWORD(y * TrueHeight / (rect.bottom - rect.top)); + } + // Subtract letterboxing borders + y -= (TrueHeight - Height) / 2; +} + //========================================================================== // // SetFPSLimit From b3c7b9679a8bf1eadba047ac15e59916b4edd674 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sat, 18 Apr 2015 22:51:28 -0500 Subject: [PATCH 125/144] Fixed: writeopl broke when the OPL3 cores were added - When the OPL3 cores were added, DiskWriterIO was never updated to take into account things like more than two OPL2 chips can be configured. - DiskWriterIO no longer does any file writing directly. That function has been split off into an OPLDump class, which has two specializations: one for RDOS Play, and the other for DOSBox. If one chip is configured, it dumps for a single OPL2, otherwise it dumps for an OPL3 (effectively dual OPL2). - TODO: Figure out why playback of raw OPL files doesn't sound nearly as good as playing MIDI with the OPL emulation. It's probably something simple I overlooked. --- src/oplsynth/music_opldumper_mididevice.cpp | 408 ++++++++++---------- src/oplsynth/muslib.h | 16 +- 2 files changed, 212 insertions(+), 212 deletions(-) diff --git a/src/oplsynth/music_opldumper_mididevice.cpp b/src/oplsynth/music_opldumper_mididevice.cpp index 74bef0677..33e026c07 100644 --- a/src/oplsynth/music_opldumper_mididevice.cpp +++ b/src/oplsynth/music_opldumper_mididevice.cpp @@ -45,6 +45,35 @@ // TYPES ------------------------------------------------------------------- +class OPLDump : public OPLEmul +{ +public: + OPLDump(FILE *file) : File(file), TimePerTick(0), CurTime(0), + CurIntTime(0), TickMul(1), CurChip(0) {} + + // If we're doing things right, these should never be reset. + virtual void Reset() { assert(0); } + + // Update() is only used for getting waveform data, which dumps don't do. + virtual void Update(float *buffer, int length) { assert(0); } + + // OPL dumps don't pan beyond what OPL3 is capable of (which is + // already written using registers from the original data). + virtual void SetPanning(int c, float left, float right) {} + + // Only for the OPL dumpers, not the emulators + virtual void SetClockRate(double samples_per_tick) {} + virtual void WriteDelay(int ticks) = 0; + +protected: + FILE *File; + double TimePerTick; // in milliseconds + double CurTime; + int CurIntTime; + int TickMul; + BYTE CurChip; +}; + // EXTERNAL FUNCTION PROTOTYPES -------------------------------------------- // PUBLIC FUNCTION PROTOTYPES ---------------------------------------------- @@ -59,6 +88,173 @@ // CODE -------------------------------------------------------------------- +class OPL_RDOSdump : public OPLDump +{ +public: + OPL_RDOSdump(FILE *file) : OPLDump(file) + { + assert(File != NULL); + fwrite("RAWADATA\0", 1, 10, File); + NeedClockRate = true; + } + virtual ~OPL_RDOSdump() + { + if (File != NULL) + { + WORD endmark = 0xFFFF; + fwrite(&endmark, 2, 1, File); + fclose(File); + } + } + + virtual void WriteReg(int reg, int v) + { + assert(File != NULL); + BYTE chipnum = reg >> 8; + if (chipnum != CurChip) + { + BYTE switcher[2] = { chipnum + 1, 2 }; + fwrite(switcher, 1, 2, File); + } + reg &= 255; + if (reg != 0 && reg != 2 && (reg != 255 || v != 255)) + { + BYTE cmd[2] = { BYTE(v), BYTE(reg) }; + fwrite(cmd, 1, 2, File); + } + } + + virtual void SetClockRate(double samples_per_tick) + { + TimePerTick = samples_per_tick / OPL_SAMPLE_RATE * 1000.0; + + double clock_rate; + int clock_mul; + WORD clock_word; + + clock_rate = samples_per_tick * ADLIB_CLOCK_MUL; + clock_mul = 1; + + // The RDos raw format's clock rate is stored in a word. Therefore, + // the longest tick that can be stored is only ~55 ms. + while (clock_rate / clock_mul + 0.5 > 65535.0) + { + clock_mul++; + } + clock_word = WORD(clock_rate / clock_mul + 0.5); + + if (NeedClockRate) + { // Set the initial clock rate. + clock_word = LittleShort(clock_word); + fseek(File, 8, SEEK_SET); + fwrite(&clock_word, 2, 1, File); + fseek(File, 0, SEEK_END); + NeedClockRate = false; + } + else + { // Change the clock rate in the middle of the song. + BYTE clock_change[4] = { 0, 2, BYTE(clock_word & 255), BYTE(clock_word >> 8) }; + fwrite(clock_change, 1, 4, File); + } + } + virtual void WriteDelay(int ticks) + { + if (ticks > 0) + { // RDos raw has very precise delays but isn't very efficient at + // storing long delays. + BYTE delay[2]; + + ticks *= TickMul; + delay[1] = 0; + while (ticks > 255) + { + ticks -= 255; + delay[0] = 255; + fwrite(delay, 1, 2, File); + } + delay[0] = BYTE(ticks); + fwrite(delay, 1, 2, File); + } + } +protected: + bool NeedClockRate; +}; + +class OPL_DOSBOXdump : public OPLDump +{ +public: + OPL_DOSBOXdump(FILE *file, bool dual) : OPLDump(file), Dual(dual) + { + assert(File != NULL); + fwrite("DBRAWOPL" + "\0\0" // Minor version number + "\1\0" // Major version number + "\0\0\0\0" // Total milliseconds + "\0\0\0", // Total data + 1, 20, File); + char type[4] = { Dual * 2, 0, 0, 0 }; // Single or dual OPL-2 + fwrite(type, 1, 4, File); + } + virtual ~OPL_DOSBOXdump() + { + if (File != NULL) + { + long where_am_i = ftell(File); + DWORD len[2]; + + fseek(File, 12, SEEK_SET); + len[0] = LittleLong(CurIntTime); + len[1] = LittleLong(DWORD(where_am_i - 24)); + fwrite(len, 4, 2, File); + fclose(File); + } + } + virtual void WriteReg(int reg, int v) + { + assert(File != NULL); + BYTE chipnum = reg >> 8; + if (chipnum != CurChip) + { + CurChip = chipnum; + fputc(chipnum + 2, File); + } + reg &= 255; + BYTE cmd[3] = { 4, BYTE(reg), BYTE(v) }; + fwrite (cmd + (reg > 4), 1, 3 - (reg > 4), File); + } + virtual void WriteDelay(int ticks) + { + if (ticks > 0) + { // DosBox only has millisecond-precise delays. + int delay; + + CurTime += TimePerTick * ticks; + delay = int(CurTime + 0.5) - CurIntTime; + CurIntTime += delay; + while (delay > 65536) + { + BYTE cmd[3] = { 1, 255, 255 }; + fwrite(cmd, 1, 2, File); + delay -= 65536; + } + delay--; + if (delay <= 255) + { + BYTE cmd[2] = { 0, BYTE(delay) }; + fwrite(cmd, 1, 2, File); + } + else + { + assert(delay <= 65535); + BYTE cmd[3] = { 1, BYTE(delay & 255), BYTE(delay >> 8) }; + fwrite(cmd, 1, 3, File); + } + } + } +protected: + bool Dual; +}; + //========================================================================== // // OPLDumperMIDIDevice Constructor @@ -139,139 +335,34 @@ DiskWriterIO::~DiskWriterIO() // //========================================================================== -int DiskWriterIO::OPLinit(uint numchips, bool, bool) +int DiskWriterIO::OPLinit(uint numchips, bool, bool initopl3) { - // If the file extension is unknown or not present, the default format - // is RAW. Otherwise, you can use DRO. - if (Filename.Len() < 5 || stricmp(&Filename[Filename.Len() - 4], ".dro") != 0) - { - Format = FMT_RDOS; - } - else - { - Format = FMT_DOSBOX; - } - File = fopen(Filename, "wb"); - if (File == NULL) + FILE *file = fopen(Filename, "wb"); + if (file == NULL) { Printf("Could not open %s for writing.\n", Filename.GetChars()); return 0; } - if (Format == FMT_RDOS) + numchips = clamp(numchips, 1u, 2u); + memset(chips, 0, sizeof(chips)); + // If the file extension is unknown or not present, the default format + // is RAW. Otherwise, you can use DRO. + if (Filename.Len() < 5 || stricmp(&Filename[Filename.Len() - 4], ".dro") != 0) { - fwrite("RAWADATA\0", 1, 10, File); - NeedClockRate = true; + chips[0] = new OPL_RDOSdump(file); } else { - fwrite("DBRAWOPL" - "\0\0" // Minor version number - "\1\0" // Major version number - "\0\0\0\0" // Total milliseconds - "\0\0\0", // Total data - 1, 20, File); - if (numchips == 1) - { - fwrite("\0\0\0", 1, 4, File); // Single OPL-2 - } - else - { - fwrite("\2\0\0", 1, 4, File); // Dual OPL-2 - } - NeedClockRate = false; + chips[0] = new OPL_DOSBOXdump(file, numchips > 1); } - - TimePerTick = 0; - TickMul = 1; - CurTime = 0; - CurIntTime = 0; - CurChip = 0; OPLchannels = OPL2CHANNELS * numchips; - OPLwriteInitState(false); + NumChips = numchips; + IsOPL3 = numchips > 1; + OPLwriteInitState(initopl3); return numchips; } -//========================================================================== -// -// DiskWriterIO :: OPLdeinit -// -//========================================================================== - -void DiskWriterIO::OPLdeinit() -{ - if (File != NULL) - { - if (Format == FMT_RDOS) - { - WORD endmark = 65535; - fwrite(&endmark, 2, 1, File); - } - else - { - long where_am_i = ftell(File); - DWORD len[2]; - - fseek(File, 12, SEEK_SET); - len[0] = LittleLong(CurIntTime); - len[1] = LittleLong(DWORD(where_am_i - 24)); - fwrite(len, 4, 2, File); - } - fclose(File); - File = NULL; - } -} - -//========================================================================== -// -// DiskWriterIO :: OPLwriteReg -// -//========================================================================== - -void DiskWriterIO::OPLwriteReg(int which, uint reg, uchar data) -{ - SetChip(which); - if (Format == FMT_RDOS) - { - if (reg != 0 && reg != 2 && (reg != 255 || data != 255)) - { - BYTE cmd[2] = { data, BYTE(reg) }; - fwrite(cmd, 1, 2, File); - } - } - else - { - BYTE cmd[3] = { 4, BYTE(reg), data }; - fwrite (cmd + (reg > 4), 1, 3 - (reg > 4), File); - } -} - -//========================================================================== -// -// DiskWriterIO :: SetChip -// -//========================================================================== - -void DiskWriterIO :: SetChip(int chipnum) -{ - assert(chipnum == 0 || chipnum == 1); - - if (chipnum != CurChip) - { - CurChip = chipnum; - if (Format == FMT_RDOS) - { - BYTE switcher[2] = { BYTE(chipnum + 1), 2 }; - fwrite(switcher, 1, 2, File); - } - else - { - BYTE switcher = chipnum + 2; - fwrite(&switcher, 1, 1, File); - } - } -} - //========================================================================== // // DiskWriterIO :: SetClockRate @@ -280,39 +371,7 @@ void DiskWriterIO :: SetChip(int chipnum) void DiskWriterIO::SetClockRate(double samples_per_tick) { - TimePerTick = samples_per_tick / OPL_SAMPLE_RATE * 1000.0; - - if (Format == FMT_RDOS) - { - double clock_rate; - int clock_mul; - WORD clock_word; - - clock_rate = samples_per_tick * ADLIB_CLOCK_MUL; - clock_mul = 1; - - // The RDos raw format's clock rate is stored in a word. Therefore, - // the longest tick that can be stored is only ~55 ms. - while (clock_rate / clock_mul + 0.5 > 65535.0) - { - clock_mul++; - } - clock_word = WORD(clock_rate / clock_mul + 0.5); - - if (NeedClockRate) - { // Set the initial clock rate. - clock_word = LittleShort(clock_word); - fseek(File, 8, SEEK_SET); - fwrite(&clock_word, 2, 1, File); - fseek(File, 0, SEEK_END); - NeedClockRate = false; - } - else - { // Change the clock rate in the middle of the song. - BYTE clock_change[4] = { 0, 2, BYTE(clock_word & 255), BYTE(clock_word >> 8) }; - fwrite(clock_change, 1, 4, File); - } - } + static_cast(chips[0])->SetClockRate(samples_per_tick); } //========================================================================== @@ -323,50 +382,5 @@ void DiskWriterIO::SetClockRate(double samples_per_tick) void DiskWriterIO :: WriteDelay(int ticks) { - if (ticks <= 0) - { - return; - } - if (Format == FMT_RDOS) - { // RDos raw has very precise delays but isn't very efficient at - // storing long delays. - BYTE delay[2]; - - ticks *= TickMul; - delay[1] = 0; - while (ticks > 255) - { - ticks -= 255; - delay[0] = 255; - fwrite(delay, 1, 2, File); - } - delay[0] = BYTE(ticks); - fwrite(delay, 1, 2, File); - } - else - { // DosBox only has millisecond-precise delays. - int delay; - - CurTime += TimePerTick * ticks; - delay = int(CurTime + 0.5) - CurIntTime; - CurIntTime += delay; - while (delay > 65536) - { - BYTE cmd[3] = { 1, 255, 255 }; - fwrite(cmd, 1, 2, File); - delay -= 65536; - } - delay--; - if (delay <= 255) - { - BYTE cmd[2] = { 0, BYTE(delay) }; - fwrite(cmd, 1, 2, File); - } - else - { - assert(delay <= 65535); - BYTE cmd[3] = { 1, BYTE(delay & 255), BYTE(delay >> 8) }; - fwrite(cmd, 1, 3, File); - } - } + static_cast(chips[0])->WriteDelay(ticks); } diff --git a/src/oplsynth/muslib.h b/src/oplsynth/muslib.h index 6cfb5bd55..8499a6bed 100644 --- a/src/oplsynth/muslib.h +++ b/src/oplsynth/muslib.h @@ -195,25 +195,11 @@ struct DiskWriterIO : public OPLio DiskWriterIO(const char *filename); ~DiskWriterIO(); - int OPLinit(uint numchips, bool notused=false, bool notused2=false); - void OPLdeinit(); - void OPLwriteReg(int which, uint reg, uchar data); + int OPLinit(uint numchips, bool notused, bool initopl3); void SetClockRate(double samples_per_tick); void WriteDelay(int ticks); - void SetChip(int chipnum); - - FILE *File; FString Filename; - int Format; - bool NeedClockRate; - double TimePerTick; // In milliseconds - double CurTime; - int CurIntTime; - int TickMul; - int CurChip; - - enum { FMT_RDOS, FMT_DOSBOX }; }; struct musicBlock { From f65a07c952d6ed3da49abb06ca8cd7375bd467e7 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 19 Apr 2015 08:48:20 +0200 Subject: [PATCH 126/144] - minor bit of cleanup of tags code. --- src/p_sectors.cpp | 10 +++++----- src/p_udmf.cpp | 6 ++++-- src/p_xlat.cpp | 2 +- src/r_defs.h | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/p_sectors.cpp b/src/p_sectors.cpp index 7061af788..49d8db9f1 100644 --- a/src/p_sectors.cpp +++ b/src/p_sectors.cpp @@ -830,6 +830,11 @@ bool sector_t::HasTag(int checktag) const return tag == checktag; } +bool sector_t::HasTags() const +{ + return tag != 0; +} + void sector_t::SetMainTag(int tagnum) { tag = tagnum; @@ -864,11 +869,6 @@ void line_t::SetMainId(int newid) id = newid; } -int line_t::GetMainId() const -{ - return id; -} - void line_t::ClearIds() { id = -1; diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 09cee8441..657281a11 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -778,6 +778,7 @@ public: bool strifetrans = false; bool strifetrans2 = false; FString arg0str, arg1str; + int lineid; // forZDoomTranslated namespace memset(ld, 0, sizeof(*ld)); ld->Alpha = FRACUNIT; @@ -814,7 +815,8 @@ public: continue; case NAME_Id: - ld->SetMainId(CheckInt(key)); + lineid = CheckInt(key); + ld->SetMainId(lineid); continue; case NAME_Sidefront: @@ -1067,7 +1069,7 @@ public: maplinedef_t mld; memset(&mld, 0, sizeof(mld)); mld.special = ld->special; - mld.tag = ld->GetMainId(); + mld.tag = lineid; P_TranslateLineDef(ld, &mld, false); ld->flags = saved | (ld->flags&(ML_MONSTERSCANACTIVATE|ML_REPEAT_SPECIAL|ML_FIRSTSIDEONLY)); } diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index 4b1373817..76d0cb811 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -307,7 +307,7 @@ void P_TranslateTeleportThings () while ( (dest = iterator.Next()) ) { - if (dest->Sector->GetMainTag() == 0) + if (!dest->Sector->HasTags()) { dest->tid = 1; dest->AddToHash (); diff --git a/src/r_defs.h b/src/r_defs.h index 1865777d3..3cf25573c 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -634,6 +634,7 @@ struct sector_t } bool HasTag(int checktag) const; + bool HasTags() const; void SetMainTag(int tagnum); int GetMainTag() const; void ClearTags(); @@ -908,7 +909,6 @@ struct line_t void SetMainId(int newid); - int GetMainId() const; void ClearIds(); bool HasId(int id) const; static void HashIds(); From 6326cd74b444ec668f6db4ab72b841b78ebada8a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 19 Apr 2015 09:07:05 +0200 Subject: [PATCH 127/144] - moved tag iterators to their own file. --- src/CMakeLists.txt | 1 + src/p_spec.cpp | 51 --------------------------- src/p_spec.h | 60 +------------------------------- src/p_tags.cpp | 87 ++++++++++++++++++++++++++++++++++++++++++++++ src/p_tags.h | 68 ++++++++++++++++++++++++++++++++++++ 5 files changed, 157 insertions(+), 110 deletions(-) create mode 100644 src/p_tags.cpp create mode 100644 src/p_tags.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6e43c0d46..dd80d305f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -895,6 +895,7 @@ add_executable( zdoom WIN32 MACOSX_BUNDLE p_spec.cpp p_states.cpp p_switch.cpp + p_tags.cpp p_teleport.cpp p_terrain.cpp p_things.cpp diff --git a/src/p_spec.cpp b/src/p_spec.cpp index 8dbb73f37..934d93c4d 100644 --- a/src/p_spec.cpp +++ b/src/p_spec.cpp @@ -186,57 +186,6 @@ bool CheckIfExitIsGood (AActor *self, level_info_t *info) // UTILITIES // - - -// -// RETURN NEXT SECTOR # THAT LINE TAG REFERS TO -// - -// Find the next sector with a specified tag. -// Rewritten by Lee Killough to use chained hashing to improve speed - -int FSectorTagIterator::Next() -{ - int ret; - if (searchtag == INT_MIN) - { - ret = start; - start = -1; - } - else - { - while (start != -1 && sectors[start].tag != searchtag) start = sectors[start].nexttag; - if (start == -1) return -1; - ret = start; - start = sectors[start].nexttag; - } - return ret; -} - -int FSectorTagIterator::NextCompat(bool compat, int start) -{ - if (!compat) return Next(); - - for (int i = start + 1; i < numsectors; i++) - { - if (sectors[i].HasTag(searchtag)) return i; - } - return -1; -} - - -// killough 4/16/98: Same thing, only for linedefs - -int FLineIdIterator::Next() -{ - while (start != -1 && lines[start].id != searchtag) start = lines[start].nextid; - if (start == -1) return -1; - int ret = start; - start = lines[start].nextid; - return ret; -} - - //============================================================================ // // P_ActivateLine diff --git a/src/p_spec.h b/src/p_spec.h index 45eaf7e41..0c3ee8745 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -242,66 +242,8 @@ inline sector_t *getNextSector (line_t *line, const sector_t *sec) line->frontsector; } -class FSectorTagIterator -{ -protected: - int searchtag; - int start; -public: - FSectorTagIterator(int tag) - { - searchtag = tag; - start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; - } - - // Special constructor for actions that treat tag 0 as 'back of activation line' - FSectorTagIterator(int tag, line_t *line) - { - if (tag == 0) - { - searchtag = INT_MIN; - start = (line == NULL || line->backsector == NULL)? -1 : (int)(line->backsector - sectors); - } - else - { - searchtag = tag; - start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; - } - } - - int Next(); - int NextCompat(bool compat, int secnum); -}; - -class FLineIdIterator -{ -protected: - int searchtag; - int start; - -public: - FLineIdIterator(int id) - { - searchtag = id; - start = lines[(unsigned) id % (unsigned) numlines].firstid; - } - - int Next(); -}; - - -inline int P_FindFirstSectorFromTag(int tag) -{ - FSectorTagIterator it(tag); - return it.Next(); -} - -inline int P_FindFirstLineFromID(int tag) -{ - FLineIdIterator it(tag); - return it.Next(); -} +#include "p_tags.h" // // P_LIGHTS diff --git a/src/p_tags.cpp b/src/p_tags.cpp new file mode 100644 index 000000000..febedb85b --- /dev/null +++ b/src/p_tags.cpp @@ -0,0 +1,87 @@ +/* +** p_tags.cpp +** everything to do with tags and their management +** +**--------------------------------------------------------------------------- +** Copyright 2015 Christoph Oelckers +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** 3. The name of the author may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**--------------------------------------------------------------------------- +** +** +*/ + + +#include "p_tags.h" + +// +// RETURN NEXT SECTOR # THAT LINE TAG REFERS TO +// + +// Find the next sector with a specified tag. +// Rewritten by Lee Killough to use chained hashing to improve speed + +int FSectorTagIterator::Next() +{ + int ret; + if (searchtag == INT_MIN) + { + ret = start; + start = -1; + } + else + { + while (start != -1 && sectors[start].tag != searchtag) start = sectors[start].nexttag; + if (start == -1) return -1; + ret = start; + start = sectors[start].nexttag; + } + return ret; +} + +int FSectorTagIterator::NextCompat(bool compat, int start) +{ + if (!compat) return Next(); + + for (int i = start + 1; i < numsectors; i++) + { + if (sectors[i].HasTag(searchtag)) return i; + } + return -1; +} + + +// killough 4/16/98: Same thing, only for linedefs + +int FLineIdIterator::Next() +{ + while (start != -1 && lines[start].id != searchtag) start = lines[start].nextid; + if (start == -1) return -1; + int ret = start; + start = lines[start].nextid; + return ret; +} + + diff --git a/src/p_tags.h b/src/p_tags.h new file mode 100644 index 000000000..e719c380e --- /dev/null +++ b/src/p_tags.h @@ -0,0 +1,68 @@ +#ifndef P_TAGS_H +#define P_TAGS_H 1 + +#include "r_defs.h" +#include "r_state.h" + +class FSectorTagIterator +{ +protected: + int searchtag; + int start; + +public: + FSectorTagIterator(int tag) + { + searchtag = tag; + start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; + } + + // Special constructor for actions that treat tag 0 as 'back of activation line' + FSectorTagIterator(int tag, line_t *line) + { + if (tag == 0) + { + searchtag = INT_MIN; + start = (line == NULL || line->backsector == NULL)? -1 : (int)(line->backsector - sectors); + } + else + { + searchtag = tag; + start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; + } + } + + int Next(); + int NextCompat(bool compat, int secnum); +}; + +class FLineIdIterator +{ +protected: + int searchtag; + int start; + +public: + FLineIdIterator(int id) + { + searchtag = id; + start = lines[(unsigned) id % (unsigned) numlines].firstid; + } + + int Next(); +}; + + +inline int P_FindFirstSectorFromTag(int tag) +{ + FSectorTagIterator it(tag); + return it.Next(); +} + +inline int P_FindFirstLineFromID(int tag) +{ + FLineIdIterator it(tag); + return it.Next(); +} + +#endif From b921157f57783003a82842d689c099029320bcc1 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 19 Apr 2015 12:33:27 +0200 Subject: [PATCH 128/144] - uncouple sector tag storage from the sector data to allow multiple tags per sector. Tags are now handled by a tag manager class which stores sector/tag pairs. This way multiple entries can be added per sector. Since UDMF does not have any arrays the additional tags are stored as a space separated string as 'MoreIDs'. --- src/compatibility.cpp | 5 +- src/fragglescript/t_func.cpp | 4 +- src/g_strife/a_strifestuff.cpp | 2 +- src/namedef.h | 1 + src/p_acs.cpp | 4 +- src/p_lights.cpp | 2 +- src/p_linkedsectors.cpp | 2 +- src/p_lnspec.cpp | 6 +- src/p_mobj.cpp | 2 +- src/p_saveg.cpp | 10 +- src/p_sectors.cpp | 39 -------- src/p_setup.cpp | 11 ++- src/p_spec.cpp | 4 +- src/p_tags.cpp | 168 ++++++++++++++++++++++++++++++++- src/p_tags.h | 57 ++++++++++- src/p_teleport.cpp | 4 +- src/p_udmf.cpp | 34 ++++--- src/p_writemap.cpp | 2 +- src/p_xlat.cpp | 2 +- src/r_defs.h | 9 -- src/version.h | 2 +- 21 files changed, 274 insertions(+), 96 deletions(-) diff --git a/src/compatibility.cpp b/src/compatibility.cpp index 096811def..d60677f64 100644 --- a/src/compatibility.cpp +++ b/src/compatibility.cpp @@ -49,6 +49,7 @@ #include "gi.h" #include "g_level.h" #include "p_lnspec.h" +#include "p_tags.h" #include "r_state.h" #include "w_wad.h" @@ -551,8 +552,8 @@ void SetCompatibilityParams() { if ((unsigned)CompatParams[i + 1] < (unsigned)numsectors) { - sectors[CompatParams[i + 1]].ClearTags(); - sectors[CompatParams[i + 1]].SetMainTag(CompatParams[i + 2]); + // this assumes that the sector does not have any tags yet! + tagManager.AddSectorTag(CompatParams[i + 1], CompatParams[i + 2]); } i += 3; break; diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index a0609377e..95d4f4e30 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -1165,7 +1165,7 @@ void FParser::SF_ObjSector(void) } t_return.type = svt_int; - t_return.value.i = mo ? mo->Sector->GetMainTag() : 0; // nullptr check + t_return.value.i = mo ? tagManager.GetFirstSectorTag(mo->Sector) : 0; // nullptr check } //========================================================================== @@ -4312,7 +4312,7 @@ void FParser::SF_KillInSector() while ((mo=it.Next())) { - if (mo->flags3&MF3_ISMONSTER && mo->Sector->HasTag(tag)) P_DamageMobj(mo, NULL, NULL, 1000000, NAME_Massacre); + if (mo->flags3&MF3_ISMONSTER && tagManager.SectorHasTag(mo->Sector, tag)) P_DamageMobj(mo, NULL, NULL, 1000000, NAME_Massacre); } } } diff --git a/src/g_strife/a_strifestuff.cpp b/src/g_strife/a_strifestuff.cpp index aa9f629db..1edea19fa 100644 --- a/src/g_strife/a_strifestuff.cpp +++ b/src/g_strife/a_strifestuff.cpp @@ -636,7 +636,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CheckTerrain) } else if ((sec->special & 0xFF) == Scroll_StrifeCurrent) { - int anglespeed = sec->GetMainTag() - 100; + int anglespeed = tagManager.GetFirstSectorTag(sec) - 100; fixed_t speed = (anglespeed % 10) << (FRACBITS - 4); angle_t finean = (anglespeed / 10) << (32-3); finean >>= ANGLETOFINESHIFT; diff --git a/src/namedef.h b/src/namedef.h index e0b7e8ba6..78551badf 100644 --- a/src/namedef.h +++ b/src/namedef.h @@ -326,6 +326,7 @@ xx(Arg4) xx(Arg0Str) xx(Arg1Str) xx(Id) +xx(MoreIds) xx(V1) xx(V2) diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 9ea8624f6..111fb99ba 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -3211,7 +3211,7 @@ do_count: if (actor->health > 0 && (kind == NULL || actor->IsA (kind))) { - if (actor->Sector->HasTag(tag) || tag == -1) + if (tag == -1 || tagManager.SectorHasTag(actor->Sector, tag)) { // Don't count items in somebody's inventory if (!actor->IsKindOf (RUNTIME_CLASS(AInventory)) || @@ -3231,7 +3231,7 @@ do_count: if (actor->health > 0 && (kind == NULL || actor->IsA (kind))) { - if (actor->Sector->HasTag(tag) || tag == -1) + if (tag == -1 || tagManager.SectorHasTag(actor->Sector, tag)) { // Don't count items in somebody's inventory if (!actor->IsKindOf (RUNTIME_CLASS(AInventory)) || diff --git a/src/p_lights.cpp b/src/p_lights.cpp index b4bfa1669..49ef130e8 100644 --- a/src/p_lights.cpp +++ b/src/p_lights.cpp @@ -838,7 +838,7 @@ void EV_StopLightEffect (int tag) while ((effect = iterator.Next()) != NULL) { - if (effect->GetSector()->HasTag(tag)) + if (tagManager.SectorHasTag(effect->GetSector(), tag)) { effect->Destroy(); } diff --git a/src/p_linkedsectors.cpp b/src/p_linkedsectors.cpp index 8f78aadda..b9ef8b100 100644 --- a/src/p_linkedsectors.cpp +++ b/src/p_linkedsectors.cpp @@ -278,7 +278,7 @@ static void RemoveTaggedSectors(extsector_t::linked::plane &scrollplane, int tag { for(int i = scrollplane.Sectors.Size()-1; i>=0; i--) { - if (scrollplane.Sectors[i].Sector->HasTag(tag)) + if (tagManager.SectorHasTag(scrollplane.Sectors[i].Sector, tag)) { scrollplane.Sectors.Delete(i); } diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index 16372b206..a24c93a3b 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -1266,7 +1266,7 @@ FUNC(LS_Thing_Destroy) while (actor) { AActor *temp = iterator.Next (); - if (actor->flags & MF_SHOOTABLE && actor->Sector->HasTag(arg2)) + if (actor->flags & MF_SHOOTABLE && tagManager.SectorHasTag(actor->Sector, arg2)) P_DamageMobj (actor, NULL, it, arg1 ? TELEFRAG_DAMAGE : actor->health, NAME_None); actor = temp; } @@ -1279,7 +1279,7 @@ FUNC(LS_Thing_Destroy) while (actor) { AActor *temp = iterator.Next (); - if (actor->flags & MF_SHOOTABLE && (arg2 == 0 || actor->Sector->HasTag(arg2))) + if (actor->flags & MF_SHOOTABLE && (arg2 == 0 || tagManager.SectorHasTag(actor->Sector, arg2))) P_DamageMobj (actor, NULL, it, arg1 ? TELEFRAG_DAMAGE : actor->health, NAME_None); actor = temp; } @@ -2169,7 +2169,7 @@ static void SetScroller (int tag, DScroller::EScrollType type, fixed_t dx, fixed { if (scroller->IsType (type)) { - if (sectors[scroller->GetAffectee ()].HasTag(tag)) + if (tagManager.SectorHasTag(scroller->GetAffectee (), tag)) { i++; scroller->SetRate (dx, dy); diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 14837a1e2..5921f97e7 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -3437,7 +3437,7 @@ void AActor::Tick () } else if (scrolltype == Scroll_StrifeCurrent) { // Strife scroll special - int anglespeed = sec->GetMainTag() - 100; + int anglespeed = tagManager.GetFirstSectorTag(sec) - 100; fixed_t carryspeed = DivScale32 (anglespeed % 10, 16*CARRYFACTOR); angle_t fineangle = (anglespeed / 10) << (32-3); fineangle >>= ANGLETOFINESHIFT; diff --git a/src/p_saveg.cpp b/src/p_saveg.cpp index 119d92a9c..53cf79456 100644 --- a/src/p_saveg.cpp +++ b/src/p_saveg.cpp @@ -348,9 +348,13 @@ void P_SerializeWorld (FArchive &arc) { arc << sec->lightlevel; } - arc << sec->special - << sec->tag - << sec->soundtraversed + arc << sec->special; + if (SaveVersion < 4523) + { + short tag; + arc << tag; + } + arc << sec->soundtraversed << sec->seqType << sec->friction << sec->movefactor diff --git a/src/p_sectors.cpp b/src/p_sectors.cpp index 49d8db9f1..c38834950 100644 --- a/src/p_sectors.cpp +++ b/src/p_sectors.cpp @@ -825,45 +825,6 @@ sector_t *sector_t::GetHeightSec() const } -bool sector_t::HasTag(int checktag) const -{ - return tag == checktag; -} - -bool sector_t::HasTags() const -{ - return tag != 0; -} - -void sector_t::SetMainTag(int tagnum) -{ - tag = tagnum; -} - -int sector_t::GetMainTag() const -{ - return tag; -} - -void sector_t::ClearTags() -{ - tag = 0; -} - -void sector_t::HashTags() -{ - int i; - - for (i=numsectors; --i>=0; ) // Initially make all slots empty. - sectors[i].firsttag = -1; - for (i=numsectors; --i>=0; ) // Proceed from last to first sector - { // so that lower sectors appear first - int j = (unsigned) sectors[i].tag % (unsigned) numsectors; // Hash func - sectors[i].nexttag = sectors[j].firsttag; // Prepend sector to chain - sectors[j].firsttag = i; - } -} - void line_t::SetMainId(int newid) { id = newid; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 4a1527514..7fa3fbcc4 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1513,7 +1513,7 @@ void P_LoadSectors (MapData *map, FMissingTextureTracker &missingtex) else // [RH] Translate to new sector special ss->special = P_TranslateSectorSpecial (LittleShort(ms->special)); ss->secretsector = !!(ss->special&SECRET_MASK); - ss->SetMainTag(LittleShort(ms->tag)); + tagManager.AddSectorTag(i, LittleShort(ms->tag)); ss->thinglist = NULL; ss->touching_thinglist = NULL; // phares 3/14/98 ss->seqType = defSeqType; @@ -2493,7 +2493,7 @@ void P_ProcessSideTextures(bool checktranmap, side_t *sd, sector_t *sec, intmaps for (s = 0; s < numsectors; s++) { - if (sectors[s].HasTag(tag)) + if (tagManager.SectorHasTag(s, tag)) { if (!colorgood) color = sectors[s].ColorMap->Color; if (!foggood) fog = sectors[s].ColorMap->Fade; @@ -3129,9 +3129,9 @@ static void P_GroupLines (bool buildmap) { if (sector->linecount == 0) { - Printf ("Sector %i (tag %i) has no lines\n", i, sector->GetMainTag()); + Printf ("Sector %i (tag %i) has no lines\n", i, tagManager.GetFirstSectorTag(sector)); // 0 the sector's tag so that no specials can use it - sector->ClearTags(); + tagManager.RemoveSectorTags(i); } else { @@ -3208,7 +3208,7 @@ static void P_GroupLines (bool buildmap) // [RH] Moved this here times[4].Clock(); // killough 1/30/98: Create xref tables for tags - sector_t::HashTags(); + tagManager.HashTags(); line_t::HashIds(); times[4].Unclock(); @@ -3340,6 +3340,7 @@ void P_FreeLevelData () FPolyObj::ClearAllSubsectorLinks(); // can't be done as part of the polyobj deletion process. SN_StopAllSequences (); DThinker::DestroyAllThinkers (); + tagManager.Clear(); level.total_monsters = level.total_items = level.total_secrets = level.killed_monsters = level.found_items = level.found_secrets = wminfo.maxfrags = 0; diff --git a/src/p_spec.cpp b/src/p_spec.cpp index 934d93c4d..4b3c1093d 100644 --- a/src/p_spec.cpp +++ b/src/p_spec.cpp @@ -1741,7 +1741,7 @@ static void P_SpawnScrollers(void) if (lines[i].special == Sector_CopyScroller) { // don't allow copying the scroller if the sector has the same tag as it would just duplicate it. - if (lines[i].frontsector->HasTag(lines[i].args[0])) + if (tagManager.SectorHasTag(lines[i].frontsector, lines[i].args[0])) { copyscrollers.Push(i); } @@ -2149,7 +2149,7 @@ DPusher::DPusher (DPusher::EPusher type, line_t *l, int magnitude, int angle, int DPusher::CheckForSectorMatch (EPusher type, int tag) { - if (m_Type == type && sectors[m_Affectee].HasTag(tag)) + if (m_Type == type && tagManager.SectorHasTag(m_Affectee, tag)) return m_Affectee; else return -1; diff --git a/src/p_tags.cpp b/src/p_tags.cpp index febedb85b..409d48291 100644 --- a/src/p_tags.cpp +++ b/src/p_tags.cpp @@ -35,13 +35,163 @@ #include "p_tags.h" +#include "c_dispatch.h" +FTagManager tagManager; + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +static inline int sectindex(const sector_t *sector) +{ + return (int)(intptr_t)(sector - sectors); +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +void FTagManager::AddSectorTag(int sector, int tag) +{ + // This function assumes that all tags for a single sector get added sequentially. + // Should there ever be some need for compatibility.txt to add tags to sectors which already have a tag this function needs to be changed to adjust the startForSector indices. + while (startForSector.Size() <= (unsigned int)sector) + { + startForSector.Push(-1); + } + if (startForSector[sector] == -1) + { + startForSector[sector] = allTags.Size(); + } + else + { + // check if the key was already defined + for (unsigned i = startForSector[sector]; i < allTags.Size(); i++) + { + if (allTags[i].tag == tag) + { + return; + } + } + } + FTagItem it = { sector, tag, -1 }; + allTags.Push(it); +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +void FTagManager::RemoveSectorTags(int sect) +{ + int start = startForSector[sect]; + if (start >= 0) + { + while (allTags[start].target == sect) + { + allTags[start].tag = allTags[start].target = -1; + start++; + } + } +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +void FTagManager::HashTags() +{ + // add an end marker so we do not need to check for the array's size in the other functions. + static FTagItem it = { -1, -1, -1 }; + allTags.Push(it); + + // Initially make all slots empty. + memset(TagHashFirst, -1, sizeof(TagHashFirst)); + + // Proceed from last to first so that lower targets appear first + for (int i = allTags.Size() - 1; i >= 0; i--) + { + if (allTags[i].target > 0) // only link valid entries + { + int hash = ((unsigned int)allTags[i].tag) % FTagManager::TAG_HASH_SIZE; + allTags[i].nexttag = TagHashFirst[hash]; + TagHashFirst[hash] = i; + } + } +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +bool FTagManager::SectorHasTags(const sector_t *sector) const +{ + int i = sectindex(sector); + return SectorHasTags(i); +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +int FTagManager::GetFirstSectorTag(const sector_t *sect) const +{ + int i = sectindex(sect); + return SectorHasTags(i) ? allTags[startForSector[i]].tag : 0; +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +bool FTagManager::SectorHasTag(int i, int tag) const +{ + if (SectorHasTags(i)) + { + int ndx = startForSector[i]; + while (allTags[ndx].target == i) + { + if (allTags[ndx].tag == tag) return true; + ndx++; + } + } + return false; +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +bool FTagManager::SectorHasTag(const sector_t *sector, int tag) const +{ + return SectorHasTag(sectindex(sector), tag); +} + +//----------------------------------------------------------------------------- // // RETURN NEXT SECTOR # THAT LINE TAG REFERS TO // - // Find the next sector with a specified tag. // Rewritten by Lee Killough to use chained hashing to improve speed +// +//----------------------------------------------------------------------------- int FSectorTagIterator::Next() { @@ -53,27 +203,37 @@ int FSectorTagIterator::Next() } else { - while (start != -1 && sectors[start].tag != searchtag) start = sectors[start].nexttag; + while (start >= 0 && tagManager.allTags[start].tag != searchtag) start = tagManager.allTags[start].nexttag; if (start == -1) return -1; ret = start; - start = sectors[start].nexttag; + start = start = tagManager.allTags[start].nexttag; } return ret; } +//----------------------------------------------------------------------------- +// +// linear search for compatible stair building +// +//----------------------------------------------------------------------------- + int FSectorTagIterator::NextCompat(bool compat, int start) { if (!compat) return Next(); for (int i = start + 1; i < numsectors; i++) { - if (sectors[i].HasTag(searchtag)) return i; + if (tagManager.SectorHasTag(i, searchtag)) return i; } return -1; } +//----------------------------------------------------------------------------- +// // killough 4/16/98: Same thing, only for linedefs +// +//----------------------------------------------------------------------------- int FLineIdIterator::Next() { diff --git a/src/p_tags.h b/src/p_tags.h index e719c380e..9b380e012 100644 --- a/src/p_tags.h +++ b/src/p_tags.h @@ -4,6 +4,59 @@ #include "r_defs.h" #include "r_state.h" +struct FTagItem +{ + int target; // either sector or line + int tag; + int nexttag; // for hashing +}; + +class FSectorTagIterator; + +class FTagManager +{ + enum + { + TAG_HASH_SIZE = 256 + }; + + friend class FSectorTagIterator; + + TArray allTags; + TArray allIDs; + TArray startForSector; + TArray startForLine; + int TagHashFirst[TAG_HASH_SIZE]; + + bool SectorHasTags(int sect) const + { + return sect >= 0 && sect < (int)startForSector.Size() && startForSector[sect] >= 0; + } + + +public: + void Clear() + { + allTags.Clear(); + allIDs.Clear(); + startForSector.Clear(); + startForLine.Clear(); + memset(TagHashFirst, -1, sizeof(TagHashFirst)); + } + + bool SectorHasTags(const sector_t *sector) const; + int GetFirstSectorTag(const sector_t *sect) const; + bool SectorHasTag(int sector, int tag) const; + bool SectorHasTag(const sector_t *sector, int tag) const; + + bool LineHasID(int line, int id); + void HashTags(); + void AddSectorTag(int sector, int tag); + void RemoveSectorTags(int sect); +}; + +extern FTagManager tagManager; + class FSectorTagIterator { protected: @@ -14,7 +67,7 @@ public: FSectorTagIterator(int tag) { searchtag = tag; - start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; + start = tagManager.TagHashFirst[((unsigned int)tag) % FTagManager::TAG_HASH_SIZE]; } // Special constructor for actions that treat tag 0 as 'back of activation line' @@ -28,7 +81,7 @@ public: else { searchtag = tag; - start = sectors[(unsigned)tag % (unsigned)numsectors].firsttag; + start = tagManager.TagHashFirst[((unsigned int)tag) % FTagManager::TAG_HASH_SIZE]; } } diff --git a/src/p_teleport.cpp b/src/p_teleport.cpp index de16a57fa..82359f4e0 100644 --- a/src/p_teleport.cpp +++ b/src/p_teleport.cpp @@ -250,7 +250,7 @@ static AActor *SelectTeleDest (int tid, int tag, bool norandom) int count = 0; while ( (searcher = iterator.Next ()) ) { - if (tag == 0 || searcher->Sector->HasTag(tag)) + if (tag == 0 || tagManager.SectorHasTag(searcher->Sector, tag)) { count++; } @@ -289,7 +289,7 @@ static AActor *SelectTeleDest (int tid, int tag, bool norandom) while (count > 0) { searcher = iterator.Next (); - if (tag == 0 || searcher->Sector->HasTag(tag)) + if (tag == 0 || tagManager.SectorHasTag(searcher->Sector, tag)) { count--; } diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 657281a11..3e8f6ad60 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -46,6 +46,7 @@ #include "r_state.h" #include "r_data/colormaps.h" #include "w_wad.h" +#include "p_tags.h" //=========================================================================== // @@ -1269,6 +1270,7 @@ public: int desaturation = -1; int fplaneflags = 0, cplaneflags = 0; double fp[4] = { 0 }, cp[4] = { 0 }; + FString tagstring; memset(sec, 0, sizeof(*sec)); sec->lightlevel = 160; @@ -1332,7 +1334,7 @@ public: continue; case NAME_Id: - sec->SetMainTag((short)CheckInt(key)); + tagManager.AddSectorTag(index, CheckInt(key)); continue; default: @@ -1510,28 +1512,32 @@ public: cp[3] = CheckFloat(key); break; + case NAME_MoreIds: + // delay parsing of the tag string until parsing of the sector is complete + // This ensures that the ID is always the first tag in the list. + tagstring = CheckString(key); + break; + default: break; } -#if 0 // for later - if (namespace_bits & (Zd)) && !strnicmp(key.GetChars(), "Id", 2)) - { - char *endp; - int num = strtol(key.GetChars(), &endp, 10); - if (num > 0 && *endp == NULL) - { - // only allow ID## with ## as a proper number - sec->SetTag((short)CheckInt(key), false); - } - } -#endif - if ((namespace_bits & (Zd | Zdt)) && !strnicmp("user_", key.GetChars(), 5)) { AddUserKey(key, UDMF_Sector, index); } } + if (tagstring.IsNotEmpty()) + { + FScanner sc; + sc.OpenMem("tagstring", tagstring.GetChars(), tagstring.Len()); + // scan the string as long as valid numbers can be found + while (sc.CheckNumber()) + { + if (sc.Number != 0) tagManager.AddSectorTag(index, sc.Number); + } + } + sec->secretsector = !!(sec->special&SECRET_MASK); // Reset the planes to their defaults if not all of the plane equation's parameters were found. diff --git a/src/p_writemap.cpp b/src/p_writemap.cpp index 2f11ee5c1..e31d2c4c3 100644 --- a/src/p_writemap.cpp +++ b/src/p_writemap.cpp @@ -262,7 +262,7 @@ static int WriteSECTORS (FILE *file) uppercopy (ms.ceilingpic, GetTextureName (sectors[i].GetTexture(sector_t::ceiling))); ms.lightlevel = LittleShort((short)sectors[i].lightlevel); ms.special = LittleShort(sectors[i].special); - ms.tag = LittleShort(sectors[i].GetMainTag()); + ms.tag = LittleShort(tagManager.GetFirstSectorTag(§ors[i])); fwrite (&ms, sizeof(ms), 1, file); } return numsectors * sizeof(ms); diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index 76d0cb811..040ce47db 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -307,7 +307,7 @@ void P_TranslateTeleportThings () while ( (dest = iterator.Next()) ) { - if (!dest->Sector->HasTags()) + if (!tagManager.SectorHasTags(dest->Sector)) { dest->tid = 1; dest->AddToHash (); diff --git a/src/r_defs.h b/src/r_defs.h index 3cf25573c..076f7736d 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -633,12 +633,6 @@ struct sector_t return pos == floor? floorplane:ceilingplane; } - bool HasTag(int checktag) const; - bool HasTags() const; - void SetMainTag(int tagnum); - int GetMainTag() const; - void ClearTags(); - static void HashTags(); bool PlaneMoving(int pos); @@ -657,12 +651,9 @@ struct sector_t TObjPtr SoundTarget; short special; - short tag; short lightlevel; short seqType; // this sector's sound sequence - int nexttag,firsttag; // killough 1/30/98: improves searches for tags. - int sky; FNameNoInit SeqName; // Sound sequence name. Setting seqType non-negative will override this. diff --git a/src/version.h b/src/version.h index f45f58b2f..3d28dd2ac 100644 --- a/src/version.h +++ b/src/version.h @@ -76,7 +76,7 @@ const char *GetVersionString(); // Use 4500 as the base git save version, since it's higher than the // SVN revision ever got. -#define SAVEVER 4522 +#define SAVEVER 4523 #define SAVEVERSTRINGIFY2(x) #x #define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x) From db61c1cb57581876d31bc9dcf01c882767480237 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 19 Apr 2015 17:51:34 +0200 Subject: [PATCH 129/144] - allow multiple line IDs as well using the same method as for sector tags. --- specs/udmf_zdoom.txt | 5 ++ src/fragglescript/t_func.cpp | 4 +- src/p_3dfloors.cpp | 2 +- src/p_3dmidtex.cpp | 2 +- src/p_lnspec.cpp | 4 +- src/p_saveg.cpp | 9 +++- src/p_sectors.cpp | 32 ----------- src/p_setup.cpp | 33 ++++++------ src/p_setup.h | 2 +- src/p_spec.cpp | 2 +- src/p_tags.cpp | 89 ++++++++++++++++++++++++++++++- src/p_tags.h | 10 +++- src/p_udmf.cpp | 38 +++++++------ src/p_xlat.cpp | 6 +-- src/r_defs.h | 9 ---- src/thingdef/thingdef_codeptr.cpp | 2 +- 16 files changed, 159 insertions(+), 90 deletions(-) diff --git a/specs/udmf_zdoom.txt b/specs/udmf_zdoom.txt index cbb5b902c..6541e9a02 100644 --- a/specs/udmf_zdoom.txt +++ b/specs/udmf_zdoom.txt @@ -119,6 +119,7 @@ Note: All fields default to false unless mentioned otherwise. blockhitscan = ; // Line blocks hitscan attacks locknumber = ; // Line special is locked arg0str = ; // Alternate string-based version of arg0 + moreids = ; // Additional line IDs, specified as a space separated list of numbers (e.g. "2 666 1003 4505") transparent = ; // true = line is a Strife transparent line (alpha 0.25) @@ -201,6 +202,7 @@ Note: All fields default to false unless mentioned otherwise. // sound sequence thing in the sector will override this property. hidden = ; // if true this sector will not be drawn on the textured automap. waterzone = ; // Sector is under water and swimmable + moreids = ; // Additional sector IDs/tags, specified as a space separated list of numbers (e.g. "2 666 1003 4505") * Note about dropactors @@ -370,6 +372,9 @@ Added transparent line property (to be folded back to core UDMF standard), and h Added plane equations for sector slopes. (Please read carefully to ensure proper use!) Changed language describing the DIALOGUE lump to mention USDF as an option. +1.25 19.04.2015 +Added 'moreids' for linedefs and sectors. + =============================================================================== EOF =============================================================================== diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp index 95d4f4e30..6583d1510 100644 --- a/src/fragglescript/t_func.cpp +++ b/src/fragglescript/t_func.cpp @@ -2235,7 +2235,7 @@ void FParser::SF_LineTrigger() maplinedef_t mld; mld.special=intvalue(t_argv[0]); mld.tag=t_argc > 1 ? intvalue(t_argv[1]) : 0; - P_TranslateLineDef(&line, &mld, false); + P_TranslateLineDef(&line, &mld); P_ExecuteSpecial(line.special, NULL, Script->trigger, false, line.args[0],line.args[1],line.args[2],line.args[3],line.args[4]); } @@ -4385,7 +4385,7 @@ void FParser::SF_SetLineTrigger() mld.tag = tag; mld.flags = 0; int f = lines[i].flags; - P_TranslateLineDef(&lines[i], &mld, false); + P_TranslateLineDef(&lines[i], &mld); lines[i].flags = (lines[i].flags & (ML_MONSTERSCANACTIVATE | ML_REPEAT_SPECIAL | ML_SPAC_MASK | ML_FIRSTSIDEONLY)) | (f & ~(ML_MONSTERSCANACTIVATE | ML_REPEAT_SPECIAL | ML_SPAC_MASK | ML_FIRSTSIDEONLY)); diff --git a/src/p_3dfloors.cpp b/src/p_3dfloors.cpp index 42d79dcc0..cc76beaa3 100644 --- a/src/p_3dfloors.cpp +++ b/src/p_3dfloors.cpp @@ -844,7 +844,7 @@ void P_Spawn3DFloors (void) { if (line->args[1]&8) { - line->SetMainId(line->args[4]); + tagManager.AddLineID(i, line->args[4]); } else { diff --git a/src/p_3dmidtex.cpp b/src/p_3dmidtex.cpp index ff0d3a181..9a9492e08 100644 --- a/src/p_3dmidtex.cpp +++ b/src/p_3dmidtex.cpp @@ -167,7 +167,7 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c { line_t *ln = sectors[sec].lines[line]; - if (lineid != 0 && !ln->HasId(lineid)) continue; + if (lineid != 0 && !tagManager.LineHasID(ln, lineid)) continue; if (ln->frontsector == NULL || ln->backsector == NULL || !(ln->flags & ML_3DMIDTEX)) { diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index a24c93a3b..37d6d6058 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -2063,7 +2063,7 @@ static void SetWallScroller (int id, int sidechoice, fixed_t dx, fixed_t dy, int { int wallnum = scroller->GetWallNum (); - if (wallnum >= 0 && sides[wallnum].linedef->HasId(id) && + if (wallnum >= 0 && tagManager.LineHasID(sides[wallnum].linedef, id) && int(sides[wallnum].linedef->sidedef[sidechoice] - sides) == wallnum && Where == scroller->GetScrollParts()) { @@ -2082,7 +2082,7 @@ static void SetWallScroller (int id, int sidechoice, fixed_t dx, fixed_t dy, int while ( (collect.Obj = iterator.Next ()) ) { if ((collect.RefNum = ((DScroller *)collect.Obj)->GetWallNum ()) != -1 && - sides[collect.RefNum].linedef->HasId(id) && + tagManager.LineHasID(sides[collect.RefNum].linedef, id) && int(sides[collect.RefNum].linedef->sidedef[sidechoice] - sides) == collect.RefNum && Where == ((DScroller *)collect.Obj)->GetScrollParts()) { diff --git a/src/p_saveg.cpp b/src/p_saveg.cpp index 53cf79456..480494320 100644 --- a/src/p_saveg.cpp +++ b/src/p_saveg.cpp @@ -409,8 +409,13 @@ void P_SerializeWorld (FArchive &arc) arc << li->flags << li->activation << li->special - << li->Alpha - << li->id; + << li->Alpha; + + if (SaveVersion < 4523) + { + int id; + arc << id; + } if (P_IsACSSpecial(li->special)) { P_SerializeACSScriptNumber(arc, li->args[0], false); diff --git a/src/p_sectors.cpp b/src/p_sectors.cpp index c38834950..904c76c1b 100644 --- a/src/p_sectors.cpp +++ b/src/p_sectors.cpp @@ -825,38 +825,6 @@ sector_t *sector_t::GetHeightSec() const } -void line_t::SetMainId(int newid) -{ - id = newid; -} - -void line_t::ClearIds() -{ - id = -1; -} - -bool line_t::HasId(int checkid) const -{ - return id == checkid; -} - - -void line_t::HashIds() -{ - // killough 4/17/98: same thing, only for linedefs - int i; - - for (i=numlines; --i>=0; ) // Initially make all slots empty. - lines[i].firstid = -1; - for (i=numlines; --i>=0; ) // Proceed from last to first linedef - { // so that lower linedefs appear first - int j = (unsigned) lines[i].id % (unsigned) numlines; // Hash func - lines[i].nextid = lines[j].firstid; // Prepend linedef to chain - lines[j].firstid = i; - } -} - - bool secplane_t::CopyPlaneIfValid (secplane_t *dest, const secplane_t *opp) const { bool copy = false; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 7fa3fbcc4..166230e3d 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1907,54 +1907,59 @@ void P_AdjustLine (line_t *ld) } } -void P_SetLineID (line_t *ld) +void P_SetLineID (int i, line_t *ld) { // [RH] Set line id (as appropriate) here // for Doom format maps this must be done in P_TranslateLineDef because // the tag doesn't always go into the first arg. if (level.maptype == MAPTYPE_HEXEN) { + int setid = -1; switch (ld->special) { case Line_SetIdentification: if (!(level.flags2 & LEVEL2_HEXENHACK)) { - ld->SetMainId(ld->args[0] + 256 * ld->args[4]); + setid = ld->args[0] + 256 * ld->args[4]; ld->flags |= ld->args[1]<<16; } else { - ld->SetMainId(ld->args[0]); + setid = ld->args[0]; } ld->special = 0; break; case TranslucentLine: - ld->SetMainId(ld->args[0]); + setid = ld->args[0]; ld->flags |= ld->args[3]<<16; break; case Teleport_Line: case Scroll_Texture_Model: - ld->SetMainId(ld->args[0]); + setid = ld->args[0]; break; case Polyobj_StartLine: - ld->SetMainId(ld->args[3]); + setid = ld->args[3]; break; case Polyobj_ExplicitLine: - ld->SetMainId(ld->args[4]); + setid = ld->args[4]; break; case Plane_Align: - ld->SetMainId(ld->args[2]); + setid = ld->args[2]; break; case Static_Init: - if (ld->args[1] == Init_SectorLink) ld->SetMainId(ld->args[0]); + if (ld->args[1] == Init_SectorLink) setid = ld->args[0]; break; } + if (setid != -1) + { + tagManager.AddLineID(i, setid); + } } } @@ -2037,7 +2042,7 @@ void P_FinishLoadingLineDef(line_t *ld, int alpha) { for (j = 0; j < numlines; j++) { - if (lines[j].HasId(ld->args[0])) + if (tagManager.LineHasID(j, ld->args[0])) { lines[j].Alpha = alpha; if (additive) @@ -2139,13 +2144,13 @@ void P_LoadLineDefs (MapData * map) mld = (maplinedef_t *)mldf; ld = lines; - for (i = numlines; i > 0; i--, mld++, ld++) + for (i = 0; i < numlines; i++, mld++, ld++) { ld->Alpha = FRACUNIT; // [RH] Opaque by default // [RH] Translate old linedef special and flags to be // compatible with the new format. - P_TranslateLineDef (ld, mld, true); + P_TranslateLineDef (ld, mld, i); ld->v1 = &vertexes[LittleShort(mld->v1)]; ld->v2 = &vertexes[LittleShort(mld->v2)]; @@ -2231,13 +2236,12 @@ void P_LoadLineDefs2 (MapData * map) ld->v1 = &vertexes[LittleShort(mld->v1)]; ld->v2 = &vertexes[LittleShort(mld->v2)]; ld->Alpha = FRACUNIT; // [RH] Opaque by default - ld->ClearIds(); P_SetSideNum (&ld->sidedef[0], LittleShort(mld->sidenum[0])); P_SetSideNum (&ld->sidedef[1], LittleShort(mld->sidenum[1])); P_AdjustLine (ld); - P_SetLineID(ld); + P_SetLineID(i, ld); P_SaveLineSpecial (ld); if (level.flags2 & LEVEL2_CLIPMIDTEX) ld->flags |= ML_CLIP_MIDTEX; if (level.flags2 & LEVEL2_WRAPMIDTEX) ld->flags |= ML_WRAP_MIDTEX; @@ -3209,7 +3213,6 @@ static void P_GroupLines (bool buildmap) times[4].Clock(); // killough 1/30/98: Create xref tables for tags tagManager.HashTags(); - line_t::HashIds(); times[4].Unclock(); times[5].Clock(); diff --git a/src/p_setup.h b/src/p_setup.h index 20caa5d76..cbd423a10 100644 --- a/src/p_setup.h +++ b/src/p_setup.h @@ -115,7 +115,7 @@ struct line_t; struct maplinedef_t; void P_LoadTranslator(const char *lumpname); -void P_TranslateLineDef (line_t *ld, maplinedef_t *mld, bool setlineid); +void P_TranslateLineDef (line_t *ld, maplinedef_t *mld, int lineindexforid = -1); int P_TranslateSectorSpecial (int); int GetUDMFInt(int type, int index, const char *key); diff --git a/src/p_spec.cpp b/src/p_spec.cpp index 4b3c1093d..81f4a27e4 100644 --- a/src/p_spec.cpp +++ b/src/p_spec.cpp @@ -232,7 +232,7 @@ bool P_ActivateLine (line_t *line, AActor *mo, int side, int activationType) !repeat && // only non-repeatable triggers (specialGeneric_Crusher) && // not for Boom's generalized linedefs special && // not for lines without a special - line->HasId(line->args[0]) && // Safety check: exclude edited UDMF linedefs or ones that don't map the tag to args[0] + tagManager.LineHasID(line, line->args[0]) && // Safety check: exclude edited UDMF linedefs or ones that don't map the tag to args[0] line->args[0] && // only if there's a tag (which is stored in the first arg) P_FindFirstSectorFromTag (line->args[0]) == -1) // only if no sector is tagged to this linedef { diff --git a/src/p_tags.cpp b/src/p_tags.cpp index 409d48291..f4164184f 100644 --- a/src/p_tags.cpp +++ b/src/p_tags.cpp @@ -50,6 +50,11 @@ static inline int sectindex(const sector_t *sector) return (int)(intptr_t)(sector - sectors); } +static inline int lineindex(const line_t *line) +{ + return (int)(intptr_t)(line - lines); +} + //----------------------------------------------------------------------------- // // @@ -58,6 +63,8 @@ static inline int sectindex(const sector_t *sector) void FTagManager::AddSectorTag(int sector, int tag) { + if (tag == 0) return; + // This function assumes that all tags for a single sector get added sequentially. // Should there ever be some need for compatibility.txt to add tags to sectors which already have a tag this function needs to be changed to adjust the startForSector indices. while (startForSector.Size() <= (unsigned int)sector) @@ -108,14 +115,50 @@ void FTagManager::RemoveSectorTags(int sect) // //----------------------------------------------------------------------------- +void FTagManager::AddLineID(int line, int tag) +{ + if (tag == -1) return; // For line IDs -1 means 'not set', unlike sectors. + + // This function assumes that all ids for a single line get added sequentially. + while (startForLine.Size() <= (unsigned int)line) + { + startForLine.Push(-1); + } + if (startForLine[line] == -1) + { + startForLine[line] = allIDs.Size(); + } + else + { + // check if the key was already defined + for (unsigned i = startForLine[line]; i < allIDs.Size(); i++) + { + if (allIDs[i].tag == tag) + { + return; + } + } + } + FTagItem it = { line, tag, -1 }; + allIDs.Push(it); +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + void FTagManager::HashTags() { // add an end marker so we do not need to check for the array's size in the other functions. static FTagItem it = { -1, -1, -1 }; allTags.Push(it); + allIDs.Push(it); // Initially make all slots empty. memset(TagHashFirst, -1, sizeof(TagHashFirst)); + memset(IDHashFirst, -1, sizeof(IDHashFirst)); // Proceed from last to first so that lower targets appear first for (int i = allTags.Size() - 1; i >= 0; i--) @@ -127,6 +170,17 @@ void FTagManager::HashTags() TagHashFirst[hash] = i; } } + + for (int i = allIDs.Size() - 1; i >= 0; i--) + { + if (allIDs[i].target > 0) // only link valid entries + { + int hash = ((unsigned int)allIDs[i].tag) % FTagManager::TAG_HASH_SIZE; + allIDs[i].nexttag = IDHashFirst[hash]; + IDHashFirst[hash] = i; + } + } + } //----------------------------------------------------------------------------- @@ -184,6 +238,37 @@ bool FTagManager::SectorHasTag(const sector_t *sector, int tag) const return SectorHasTag(sectindex(sector), tag); } +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +bool FTagManager::LineHasID(int i, int tag) const +{ + if (LineHasIDs(i)) + { + int ndx = startForLine[i]; + while (allIDs[ndx].target == i) + { + if (allIDs[ndx].tag == tag) return true; + ndx++; + } + } + return false; +} + +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +bool FTagManager::LineHasID(const line_t *line, int tag) const +{ + return LineHasID(lineindex(line), tag); +} + //----------------------------------------------------------------------------- // // RETURN NEXT SECTOR # THAT LINE TAG REFERS TO @@ -237,10 +322,10 @@ int FSectorTagIterator::NextCompat(bool compat, int start) int FLineIdIterator::Next() { - while (start != -1 && lines[start].id != searchtag) start = lines[start].nextid; + while (start >= 0 && tagManager.allIDs[start].tag != searchtag) start = tagManager.allIDs[start].nexttag; if (start == -1) return -1; int ret = start; - start = lines[start].nextid; + start = start = tagManager.allIDs[start].nexttag; return ret; } diff --git a/src/p_tags.h b/src/p_tags.h index 9b380e012..7a63ca74b 100644 --- a/src/p_tags.h +++ b/src/p_tags.h @@ -12,6 +12,7 @@ struct FTagItem }; class FSectorTagIterator; +class FLineIdIterator; class FTagManager { @@ -21,12 +22,14 @@ class FTagManager }; friend class FSectorTagIterator; + friend class FLineIdIterator; TArray allTags; TArray allIDs; TArray startForSector; TArray startForLine; int TagHashFirst[TAG_HASH_SIZE]; + int IDHashFirst[TAG_HASH_SIZE]; bool SectorHasTags(int sect) const { @@ -49,9 +52,12 @@ public: bool SectorHasTag(int sector, int tag) const; bool SectorHasTag(const sector_t *sector, int tag) const; - bool LineHasID(int line, int id); + bool LineHasID(int line, int id) const; + bool LineHasID(const line_t *line, int id) const; + void HashTags(); void AddSectorTag(int sector, int tag); + void AddLineID(int line, int tag); void RemoveSectorTags(int sect); }; @@ -99,7 +105,7 @@ public: FLineIdIterator(int id) { searchtag = id; - start = lines[(unsigned) id % (unsigned) numlines].firstid; + start = tagManager.IDHashFirst[((unsigned int)id) % FTagManager::TAG_HASH_SIZE]; } int Next(); diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 3e8f6ad60..8992c3984 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -755,7 +755,7 @@ public: mld.flags = 0; mld.special = th->special; mld.tag = th->args[0]; - P_TranslateLineDef(&ld, &mld, true); + P_TranslateLineDef(&ld, &mld); th->special = ld.special; memcpy(th->args, ld.args, sizeof (ld.args)); } @@ -780,10 +780,10 @@ public: bool strifetrans2 = false; FString arg0str, arg1str; int lineid; // forZDoomTranslated namespace + FString tagstring; memset(ld, 0, sizeof(*ld)); ld->Alpha = FRACUNIT; - ld->ClearIds(); ld->sidedef[0] = ld->sidedef[1] = NULL; if (level.flags2 & LEVEL2_CLIPMIDTEX) ld->flags |= ML_CLIP_MIDTEX; if (level.flags2 & LEVEL2_WRAPMIDTEX) ld->flags |= ML_WRAP_MIDTEX; @@ -817,7 +817,7 @@ public: case NAME_Id: lineid = CheckInt(key); - ld->SetMainId(lineid); + tagManager.AddLineID(index, lineid); continue; case NAME_Sidefront: @@ -1040,22 +1040,17 @@ public: Flag(ld->flags, ML_3DMIDTEX_IMPASS, key); continue; + case NAME_MoreIds: + // delay parsing of the tag string until parsing of the sector is complete + // This ensures that the ID is always the first tag in the list. + tagstring = CheckString(key); + break; + + default: break; } -#if 0 // for later - if (namespace_bits & (Zd)) && !strnicmp(key.GetChars(), "Id", 2)) - { - char *endp; - int num = strtol(key.GetChars(), &endp, 10); - if (num > 0 && *endp == NULL) - { - // only allow ID## with ## as a proper number - ld->SetId((short)CheckInt(key), false); - } - } -#endif if ((namespace_bits & (Zd | Zdt)) && !strnicmp("user_", key.GetChars(), 5)) { @@ -1063,6 +1058,17 @@ public: } } + if (tagstring.IsNotEmpty()) + { + FScanner sc; + sc.OpenMem("tagstring", tagstring.GetChars(), tagstring.Len()); + // scan the string as long as valid numbers can be found + while (sc.CheckNumber()) + { + if (sc.Number != 0) tagManager.AddLineID(index, sc.Number); + } + } + if (isTranslated) { int saved = ld->flags; @@ -1071,7 +1077,7 @@ public: memset(&mld, 0, sizeof(mld)); mld.special = ld->special; mld.tag = lineid; - P_TranslateLineDef(ld, &mld, false); + P_TranslateLineDef(ld, &mld); ld->flags = saved | (ld->flags&(ML_MONSTERSCANACTIVATE|ML_REPEAT_SPECIAL|ML_FIRSTSIDEONLY)); } if (passuse && (ld->activation & SPAC_Use)) diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index 040ce47db..6e1718273 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -60,7 +60,7 @@ typedef enum PushMany, } triggertype_e; -void P_TranslateLineDef (line_t *ld, maplinedef_t *mld, bool setid) +void P_TranslateLineDef (line_t *ld, maplinedef_t *mld, int lineindexforid) { unsigned short special = (unsigned short) LittleShort(mld->special); short tag = LittleShort(mld->tag); @@ -100,13 +100,13 @@ void P_TranslateLineDef (line_t *ld, maplinedef_t *mld, bool setid) } flags = newflags; - if (setid) + if (lineindexforid >= 0) { // For purposes of maintaining BOOM compatibility, each // line also needs to have its ID set to the same as its tag. // An external conversion program would need to do this more // intelligently. - ld->SetMainId(tag); + tagManager.AddLineID(lineindexforid, tag); } // 0 specials are never translated. diff --git a/src/r_defs.h b/src/r_defs.h index 076f7736d..afda92089 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -888,21 +888,12 @@ struct line_t DWORD activation; // activation type int special; fixed_t Alpha; // <--- translucency (0=invisibile, FRACUNIT=opaque) - int id; // <--- same as tag or set with Line_SetIdentification int args[5]; // <--- hexen-style arguments (expanded to ZDoom's full width) - int firstid, nextid; side_t *sidedef[2]; - //DWORD sidenum[2]; // sidenum[1] will be NO_SIDE if one sided fixed_t bbox[4]; // bounding box, for the extent of the LineDef. sector_t *frontsector, *backsector; int validcount; // if == validcount, already checked int locknumber; // [Dusk] lock number for special - - - void SetMainId(int newid); - void ClearIds(); - bool HasId(int id) const; - static void HashIds(); }; // phares 3/14/98 diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index b63ba567f..a006d04a1 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -4520,7 +4520,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_LineEffect) if ((oldjunk.special = special)) // Linedef type { oldjunk.tag = tag; // Sector tag for linedef - P_TranslateLineDef(&junk, &oldjunk, false); // Turn into native type + P_TranslateLineDef(&junk, &oldjunk); // Turn into native type res = !!P_ExecuteSpecial(junk.special, NULL, self, false, junk.args[0], junk.args[1], junk.args[2], junk.args[3], junk.args[4]); if (res && !(junk.flags & ML_REPEAT_SPECIAL)) // If only once, From cad282142d60dcb1ed53c9545ad4616a4e92542b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 19 Apr 2015 18:22:39 +0200 Subject: [PATCH 130/144] - fixed some last issues with the tag manager. --- src/p_setup.cpp | 2 +- src/p_tags.cpp | 29 +++++++++++++++++++++++++---- src/p_tags.h | 6 ++++++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 166230e3d..f22979eac 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -2223,7 +2223,7 @@ void P_LoadLineDefs2 (MapData * map) mld = (maplinedef2_t *)mldf; ld = lines; - for (i = numlines; i > 0; i--, mld++, ld++) + for (i = 0; i < numlines; i++, mld++, ld++) { int j; diff --git a/src/p_tags.cpp b/src/p_tags.cpp index f4164184f..7e958dcca 100644 --- a/src/p_tags.cpp +++ b/src/p_tags.cpp @@ -269,6 +269,29 @@ bool FTagManager::LineHasID(const line_t *line, int tag) const return LineHasID(lineindex(line), tag); } +//----------------------------------------------------------------------------- +// +// +// +//----------------------------------------------------------------------------- + +void FTagManager::DumpTags() +{ + for (unsigned i = 0; i < allTags.Size(); i++) + { + Printf("Sector %d, tag %d\n", allTags[i].target, allTags[i].tag); + } + for (unsigned i = 0; i < allIDs.Size(); i++) + { + Printf("Line %d, ID %d\n", allIDs[i].target, allIDs[i].tag); + } +} + +CCMD(dumptags) +{ + tagManager.DumpTags(); +} + //----------------------------------------------------------------------------- // // RETURN NEXT SECTOR # THAT LINE TAG REFERS TO @@ -290,7 +313,7 @@ int FSectorTagIterator::Next() { while (start >= 0 && tagManager.allTags[start].tag != searchtag) start = tagManager.allTags[start].nexttag; if (start == -1) return -1; - ret = start; + ret = tagManager.allTags[start].target; start = start = tagManager.allTags[start].nexttag; } return ret; @@ -324,9 +347,7 @@ int FLineIdIterator::Next() { while (start >= 0 && tagManager.allIDs[start].tag != searchtag) start = tagManager.allIDs[start].nexttag; if (start == -1) return -1; - int ret = start; + int ret = tagManager.allIDs[start].target; start = start = tagManager.allIDs[start].nexttag; return ret; } - - diff --git a/src/p_tags.h b/src/p_tags.h index 7a63ca74b..2195821c1 100644 --- a/src/p_tags.h +++ b/src/p_tags.h @@ -36,6 +36,10 @@ class FTagManager return sect >= 0 && sect < (int)startForSector.Size() && startForSector[sect] >= 0; } + bool LineHasIDs(int sect) const + { + return sect >= 0 && sect < (int)startForLine.Size() && startForLine[sect] >= 0; + } public: void Clear() @@ -59,6 +63,8 @@ public: void AddSectorTag(int sector, int tag); void AddLineID(int line, int tag); void RemoveSectorTags(int sect); + + void DumpTags(); }; extern FTagManager tagManager; From 3300817d65cb57b2428bc962deda305ae45c1d95 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 20 Apr 2015 23:20:56 +0200 Subject: [PATCH 131/144] - removed some leftover code from initial development in the DoomEdNum parser. --- src/g_doomedmap.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/g_doomedmap.cpp b/src/g_doomedmap.cpp index c9deb7256..45224329d 100644 --- a/src/g_doomedmap.cpp +++ b/src/g_doomedmap.cpp @@ -213,13 +213,12 @@ void FMapInfoParser::ParseDoomEdNums() DoomEdFromMapinfo.Insert(ednum, editem); continue; } - sc.MustGetStringName(","); sc.MustGetNumber(); } int i = 0; while (i < 5) { - editem.args[i++] = sc.Number; + editem.args[i] = sc.Number; i++; if (!sc.CheckString(",")) break; sc.MustGetNumber(); From 3061bcf60403cd5ce598fca8194394f24e987c95 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 17:22:57 -0500 Subject: [PATCH 132/144] Add p_tags.(cpp|h) to solution --- zdoom.vcproj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/zdoom.vcproj b/zdoom.vcproj index ef356b44a..d171b18eb 100644 --- a/zdoom.vcproj +++ b/zdoom.vcproj @@ -890,6 +890,10 @@ RelativePath=".\src\p_switch.cpp" > + + @@ -1451,6 +1455,10 @@ RelativePath=".\src\p_spec.h" > + + From f7bd3acec4bde2223771f60ef7b07a48ee9264b7 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 17:34:36 -0500 Subject: [PATCH 133/144] Add OpenString to FScanner class --- src/p_udmf.cpp | 4 ++-- src/sc_man.cpp | 15 ++++++++++++++- src/sc_man.h | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 8992c3984..0434d8bce 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -1061,7 +1061,7 @@ public: if (tagstring.IsNotEmpty()) { FScanner sc; - sc.OpenMem("tagstring", tagstring.GetChars(), tagstring.Len()); + sc.OpenString("tagstring", tagstring); // scan the string as long as valid numbers can be found while (sc.CheckNumber()) { @@ -1536,7 +1536,7 @@ public: if (tagstring.IsNotEmpty()) { FScanner sc; - sc.OpenMem("tagstring", tagstring.GetChars(), tagstring.Len()); + sc.OpenString("tagstring", tagstring); // scan the string as long as valid numbers can be found while (sc.CheckNumber()) { diff --git a/src/sc_man.cpp b/src/sc_man.cpp index 4b9d710a3..9babe2e9c 100644 --- a/src/sc_man.cpp +++ b/src/sc_man.cpp @@ -195,9 +195,22 @@ void FScanner::OpenFile (const char *name) //========================================================================== void FScanner::OpenMem (const char *name, const char *buffer, int size) +{ + OpenString(name, FString(buffer, size)); +} + +//========================================================================== +// +// FScanner :: OpenString +// +// Like OpenMem, but takes a string directly. +// +//========================================================================== + +void FScanner::OpenString (const char *name, FString buffer) { Close (); - ScriptBuffer = FString(buffer, size); + ScriptBuffer = buffer; ScriptName = name; LumpNum = -1; PrepareScript (); diff --git a/src/sc_man.h b/src/sc_man.h index 3d9c2bec9..ba84cd00c 100644 --- a/src/sc_man.h +++ b/src/sc_man.h @@ -21,6 +21,7 @@ public: void Open(const char *lumpname); void OpenFile(const char *filename); void OpenMem(const char *name, const char *buffer, int size); + void OpenString(const char *name, FString buffer); void OpenLumpNum(int lump); void Close(); From dba76c1aea8fe8e9699d81eee67eeb95d383fa5d Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 18:32:45 -0500 Subject: [PATCH 134/144] Disable PCM-8 output when not using DirectSound - PCM-8 sounds like garbage with WASAPI and WaveOut, so force anything not DirectSound to use PCM-16 if PCM-8 is selected. --- src/sound/fmodsound.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/sound/fmodsound.cpp b/src/sound/fmodsound.cpp index b5af6a485..49d53117f 100644 --- a/src/sound/fmodsound.cpp +++ b/src/sound/fmodsound.cpp @@ -895,6 +895,15 @@ bool FMODSoundRenderer::Init() // Set software format eval = Enum_NumForName(SoundFormatNames, snd_output_format); format = eval >= 0 ? FMOD_SOUND_FORMAT(eval) : FMOD_SOUND_FORMAT_PCM16; + if (format == FMOD_SOUND_FORMAT_PCM8) + { + // PCM-8 sounds like garbage with anything but DirectSound. + FMOD_OUTPUTTYPE output; + if (FMOD_OK != Sys->getOutput(&output) || output != FMOD_OUTPUTTYPE_DSOUND) + { + format = FMOD_SOUND_FORMAT_PCM16; + } + } eval = Enum_NumForName(ResamplerNames, snd_resampler); resampler = eval >= 0 ? FMOD_DSP_RESAMPLER(eval) : FMOD_DSP_RESAMPLER_LINEAR; // These represented the frequency limits for hardware channels, which we never used anyway. From 7ee185340341eecf1d621b01176531cd011f7bb7 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 19:09:33 -0500 Subject: [PATCH 135/144] Remove OpenAL and Sound Manager output options for FMOD - OpenAL never actualy worked properly and was removed in later FMODs. - Sound Manager was deprecated by Apple long ago and is not supported for 64-bit applications. It was also removed in later FMODs. --- src/sound/fmodsound.cpp | 6 ------ wadsrc/static/menudef.txt | 2 -- 2 files changed, 8 deletions(-) diff --git a/src/sound/fmodsound.cpp b/src/sound/fmodsound.cpp index 49d53117f..1739556b4 100644 --- a/src/sound/fmodsound.cpp +++ b/src/sound/fmodsound.cpp @@ -165,9 +165,6 @@ static const FEnumList OutputNames[] = { "Windows Multimedia", FMOD_OUTPUTTYPE_WINMM }, { "WinMM", FMOD_OUTPUTTYPE_WINMM }, { "WaveOut", FMOD_OUTPUTTYPE_WINMM }, -#if FMOD_VERSION < 0x43400 - { "OpenAL", FMOD_OUTPUTTYPE_OPENAL }, -#endif { "WASAPI", FMOD_OUTPUTTYPE_WASAPI }, { "ASIO", FMOD_OUTPUTTYPE_ASIO }, @@ -182,9 +179,6 @@ static const FEnumList OutputNames[] = { "SDL", 666 }, // Mac -#if FMOD_VERSION < 0x43000 - { "Sound Manager", FMOD_OUTPUTTYPE_SOUNDMANAGER }, -#endif { "Core Audio", FMOD_OUTPUTTYPE_COREAUDIO }, { NULL, 0 } diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 07f841545..d62db3a75 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -1390,7 +1390,6 @@ OptionString SoundOutputsWindows "WASAPI", "Vista WASAPI" "ASIO", "ASIO" "WaveOut", "WaveOut" - "OpenAL", "OpenAL (very beta)" "No sound", "No sound" } @@ -1408,7 +1407,6 @@ OptionString SoundOutputsUnix OptionString SoundOutputsMac { - "Sound Manager", "Sound Manager" "Core Audio", "Core Audio" "No sound", "No sound" } From a7ff9478a7d45a0734c91f2980223ebba2524ce7 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 20:28:09 -0500 Subject: [PATCH 136/144] Fixed: S_PrecacheLevel() could create orphan channels - S_PrecacheLevel() must also mark currently playing sounds as used. If we don't, the sound could be unloaded and the underlying channel stopped without triggering a channel callback. That would leave the code in s_sound.cpp thinking the sound is still playing even though it isn't. - Added an invalid channel check to FMODSoundRenderer::StopChannel() so that orphan channels passed to it will be returned at least when S_StopAllChannels() is called. --- src/s_sound.cpp | 13 ++++++------- src/sound/fmodsound.cpp | 7 +++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/s_sound.cpp b/src/s_sound.cpp index 5b3d5457b..7b543c4e4 100644 --- a/src/s_sound.cpp +++ b/src/s_sound.cpp @@ -383,7 +383,7 @@ void S_Start () { // kill all playing sounds at start of level (trust me - a good idea) S_StopAllChannels(); - + // Check for local sound definitions. Only reload if they differ // from the previous ones. FString LocalSndInfo; @@ -487,6 +487,11 @@ void S_PrecacheLevel () { level.info->PrecacheSounds[i].MarkUsed(); } + // Don't unload sounds that are playing right now. + for (FSoundChan *chan = Channels; chan != NULL; chan = chan->NextChan) + { + chan->SoundID.MarkUsed(); + } for (i = 1; i < S_sfx.Size(); ++i) { @@ -2083,12 +2088,6 @@ void S_ChannelEnded(FISoundChannel *ichan) evicted = (pos < len); } } - /* - else - { - evicted = false; - } - */ if (!evicted) { S_ReturnChannel(schan); diff --git a/src/sound/fmodsound.cpp b/src/sound/fmodsound.cpp index 1739556b4..269720c48 100644 --- a/src/sound/fmodsound.cpp +++ b/src/sound/fmodsound.cpp @@ -2050,7 +2050,7 @@ FISoundChannel *FMODSoundRenderer::CommonChannelSetup(FMOD::Channel *chan, FISou //========================================================================== // -// FMODSoundRenderer :: StopSound +// FMODSoundRenderer :: StopChannel // //========================================================================== @@ -2058,7 +2058,10 @@ void FMODSoundRenderer::StopChannel(FISoundChannel *chan) { if (chan != NULL && chan->SysChannel != NULL) { - ((FMOD::Channel *)chan->SysChannel)->stop(); + if (((FMOD::Channel *)chan->SysChannel)->stop() == FMOD_ERR_INVALID_HANDLE) + { // The channel handle was invalid; pretend it ended. + S_ChannelEnded(chan); + } } } From 03c3621bb4d06547317985ea892c5ab6099f685c Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 22:13:49 -0500 Subject: [PATCH 137/144] Use a different var to track unset DTA_FillColor instead of a default value - If palette index 255 happens to be white (e.g. as in Hexen), trying to use white with DTA_FillColor would treat it as if you had never passed it to DrawTexture(). --- src/v_draw.cpp | 4 +++- src/v_video.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/v_draw.cpp b/src/v_draw.cpp index e2890841b..ce502c772 100644 --- a/src/v_draw.cpp +++ b/src/v_draw.cpp @@ -333,6 +333,7 @@ bool DCanvas::ParseDrawTextureTags (FTexture *img, double x, double y, DWORD tag int intval; bool translationset = false; bool virtBottom; + bool fillcolorset = false; if (img == NULL || img->UseType == FTexture::TEX_Null) { @@ -539,6 +540,7 @@ bool DCanvas::ParseDrawTextureTags (FTexture *img, double x, double y, DWORD tag case DTA_FillColor: parms->fillcolor = va_arg(tags, uint32); + fillcolorset = true; break; case DTA_Translation: @@ -711,7 +713,7 @@ bool DCanvas::ParseDrawTextureTags (FTexture *img, double x, double y, DWORD tag if (parms->style.BlendOp == 255) { - if (parms->fillcolor != ~0u) + if (fillcolorset) { if (parms->alphaChannel) { diff --git a/src/v_video.h b/src/v_video.h index 5250cdaa9..7593b7b4b 100644 --- a/src/v_video.h +++ b/src/v_video.h @@ -74,7 +74,7 @@ enum DTA_DestWidth, // width of area to draw to DTA_DestHeight, // height of area to draw to DTA_Alpha, // alpha value for translucency - DTA_FillColor, // color to stencil onto the destination + DTA_FillColor, // color to stencil onto the destination (RGB is the color for truecolor drawers, A is the palette index for paletted drawers) DTA_Translation, // translation table to recolor the source DTA_AlphaChannel, // bool: the source is an alpha channel; used with DTA_FillColor DTA_Clean, // bool: scale texture size and position by CleanXfac and CleanYfac From d6b8603cb6a762889a3586619e4a7ef7bea4fe14 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 22:27:56 -0500 Subject: [PATCH 138/144] Ignore sv_unlimited_pickup on items that stay - See http://forum.zdoom.org/viewtopic.php?f=2&t=47790 --- src/g_shared/a_pickups.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_shared/a_pickups.cpp b/src/g_shared/a_pickups.cpp index 2888ea2b6..5eda53ad6 100644 --- a/src/g_shared/a_pickups.cpp +++ b/src/g_shared/a_pickups.cpp @@ -593,7 +593,7 @@ bool AInventory::HandlePickup (AInventory *item) { if (item->GetClass() == GetClass()) { - if (Amount < MaxAmount || sv_unlimited_pickup) + if (Amount < MaxAmount || (sv_unlimited_pickup && !item->ShouldStay())) { if (Amount > 0 && Amount + item->Amount < 0) { From 0cbb3132e6612486d583c5ec08c6c6aaa8b95a01 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 22:35:38 -0500 Subject: [PATCH 139/144] Don't spam Dropped packet messages for disconnected players --- src/i_net.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i_net.cpp b/src/i_net.cpp index d3958e1e1..5957846d2 100644 --- a/src/i_net.cpp +++ b/src/i_net.cpp @@ -319,7 +319,11 @@ void PacketGet (void) } else if (c > 0) { //The packet is not from any in-game node, so we might as well discard it. - Printf("Dropped packet: Unknown host (%s:%d)\n", inet_ntoa(fromaddress.sin_addr), fromaddress.sin_port); + // Don't show the message for disconnect notifications. + if (c != 2 || TransmitBuffer[0] != PRE_FAKE || TransmitBuffer[1] != PRE_DISCONNECT) + { + DPrintf("Dropped packet: Unknown host (%s:%d)\n", inet_ntoa(fromaddress.sin_addr), fromaddress.sin_port); + } doomcom.remotenode = -1; return; } From ca16d99445f881ba3b2dac1a37f2fa720a07cde2 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 22:57:15 -0500 Subject: [PATCH 140/144] Fixed: FOptionMenuItem::GetIndent() did not handle localized strings --- src/menu/optionmenu.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/menu/optionmenu.cpp b/src/menu/optionmenu.cpp index 9a7715265..57e69cfab 100644 --- a/src/menu/optionmenu.cpp +++ b/src/menu/optionmenu.cpp @@ -489,7 +489,13 @@ bool FOptionMenuItem::MouseEvent(int type, int x, int y) int FOptionMenuItem::GetIndent() { - return mCentered? 0 : SmallFont->StringWidth(mLabel); + if (mCentered) + { + return 0; + } + const char *label = mLabel; + if (*label == '$') label = GStrings(label+1); + return SmallFont->StringWidth(label); } void FOptionMenuItem::drawLabel(int indent, int y, EColorRange color, bool grayed) From 8d501fdb9f1003ba839f697ec4c27dc9d5dc8f4c Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 22 Apr 2015 23:22:27 -0500 Subject: [PATCH 141/144] Fix some issues with changing player viewheight at runtime - Viewheight change was delayed: Viewheight must be copied to player structure as well as the PlayerPawn. Not sure if should actually use deltaviewheight to spread the change out over a few tics instead of being instant. - Viewheight not preserved when travelling: player->viewheight must be restored from pawn->ViewHeight, because the temporary player set it back to the default viewheight. --- src/fragglescript/t_cmd.cpp | 1 + src/g_level.cpp | 1 + src/p_acs.cpp | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/src/fragglescript/t_cmd.cpp b/src/fragglescript/t_cmd.cpp index 190c6b984..74f366357 100644 --- a/src/fragglescript/t_cmd.cpp +++ b/src/fragglescript/t_cmd.cpp @@ -169,6 +169,7 @@ void FS_EmulateCmd(char * string) { // No, this is not correct. But this is the way Legacy WADs expect it to be handled! if (players[i].mo != NULL) players[i].mo->ViewHeight = playerviewheight; + players[i].viewheight = playerviewheight; players[i].Uncrouch(); } while (sc.GetString()) diff --git a/src/g_level.cpp b/src/g_level.cpp index fd6d8049a..713205f6f 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1229,6 +1229,7 @@ void G_FinishTravel () pawn->lastenemy = NULL; pawn->player->mo = pawn; pawn->player->camera = pawn; + pawn->player->viewheight = pawn->ViewHeight; pawn->flags2 &= ~MF2_BLASTED; DObject::StaticPointerSubstitution (oldpawn, pawn); oldpawn->Destroy(); diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 111fb99ba..43d7c7bd5 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -3899,7 +3899,13 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value) case APROP_ViewHeight: if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn))) + { static_cast(actor)->ViewHeight = value; + if (actor->player != NULL) + { + actor->player->viewheight = value; + } + } break; case APROP_AttackZOffset: From a54404074a290db80cb6789f273cf8715eef94ac Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 23 Apr 2015 20:09:12 +0200 Subject: [PATCH 142/144] - fixed: IDs that map to nothing must be removed from the spawn/conversation ID maps. --- src/p_things.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/p_things.cpp b/src/p_things.cpp index faf1091d5..50e15a1a8 100644 --- a/src/p_things.cpp +++ b/src/p_things.cpp @@ -659,8 +659,12 @@ void InitClassMap(FClassMap &themap, SpawnMap &thedata) pair->Value.filename.GetChars(), pair->Value.linenum, pair->Value.classname.GetChars()); error++; } + themap.Insert(pair->Key, cls); + } + else + { + themap.Remove(pair->Key); } - themap.Insert(pair->Key, cls); } if (error > 0) { From 6a6836b1e7a4e558313ffd630b839ddaf890bb46 Mon Sep 17 00:00:00 2001 From: Chronos Ouroboros Date: Thu, 23 Apr 2015 15:11:54 -0300 Subject: [PATCH 143/144] Added SpiralOffset to railgun functions. --- src/p_effect.cpp | 4 ++-- src/p_effect.h | 2 +- src/p_local.h | 2 +- src/p_map.cpp | 4 ++-- src/thingdef/thingdef_codeptr.cpp | 10 ++++++---- wadsrc/static/actors/actor.txt | 2 +- wadsrc/static/actors/shared/inventory.txt | 2 +- 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/p_effect.cpp b/src/p_effect.cpp index 5633b4bff..1b7ce0bc8 100644 --- a/src/p_effect.cpp +++ b/src/p_effect.cpp @@ -586,7 +586,7 @@ void P_DrawSplash2 (int count, fixed_t x, fixed_t y, fixed_t z, angle_t angle, i } } -void P_DrawRailTrail (AActor *source, const FVector3 &start, const FVector3 &end, int color1, int color2, float maxdiff, int flags, const PClass *spawnclass, angle_t angle, int duration, float sparsity, float drift) +void P_DrawRailTrail (AActor *source, const FVector3 &start, const FVector3 &end, int color1, int color2, float maxdiff, int flags, const PClass *spawnclass, angle_t angle, int duration, float sparsity, float drift, int SpiralOffset) { double length, lengthsquared; int steps, i; @@ -678,7 +678,7 @@ void P_DrawRailTrail (AActor *source, const FVector3 &start, const FVector3 &end color1 = color1 == 0 ? -1 : ParticleColor(color1); pos = start; - deg = FAngle(270); + deg = FAngle(SpiralOffset); for (i = spiral_steps; i; i--) { particle_t *p = NewParticle (); diff --git a/src/p_effect.h b/src/p_effect.h index 755dd9ff3..6ca9dfea9 100644 --- a/src/p_effect.h +++ b/src/p_effect.h @@ -88,7 +88,7 @@ void P_RunEffects (void); void P_RunEffect (AActor *actor, int effects); -void P_DrawRailTrail (AActor *source, const FVector3 &start, const FVector3 &end, int color1, int color2, float maxdiff = 0, int flags = 0, const PClass *spawnclass = NULL, angle_t angle = 0, int duration = 35, float sparsity = 1.0, float drift = 1.0); +void P_DrawRailTrail (AActor *source, const FVector3 &start, const FVector3 &end, int color1, int color2, float maxdiff = 0, int flags = 0, const PClass *spawnclass = NULL, angle_t angle = 0, int duration = 35, float sparsity = 1.0, float drift = 1.0, int SpiralOffset = 270); void P_DrawSplash (int count, fixed_t x, fixed_t y, fixed_t z, angle_t angle, int kind); void P_DrawSplash2 (int count, fixed_t x, fixed_t y, fixed_t z, angle_t angle, int updown, int kind); void P_DisconnectEffect (AActor *actor); diff --git a/src/p_local.h b/src/p_local.h index d4571421b..682101e7f 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -474,7 +474,7 @@ void P_TraceBleed (int damage, AActor *target); // random direction version bool P_HitFloor (AActor *thing); bool P_HitWater (AActor *thing, sector_t *sec, fixed_t splashx = FIXED_MIN, fixed_t splashy = FIXED_MIN, fixed_t splashz=FIXED_MIN, bool checkabove = false, bool alert = true); void P_CheckSplash(AActor *self, fixed_t distance); -void P_RailAttack (AActor *source, int damage, int offset_xy, fixed_t offset_z = 0, int color1 = 0, int color2 = 0, float maxdiff = 0, int flags = 0, const PClass *puff = NULL, angle_t angleoffset = 0, angle_t pitchoffset = 0, fixed_t distance = 8192*FRACUNIT, int duration = 0, float sparsity = 1.0, float drift = 1.0, const PClass *spawnclass = NULL); // [RH] Shoot a railgun +void P_RailAttack (AActor *source, int damage, int offset_xy, fixed_t offset_z = 0, int color1 = 0, int color2 = 0, float maxdiff = 0, int flags = 0, const PClass *puff = NULL, angle_t angleoffset = 0, angle_t pitchoffset = 0, fixed_t distance = 8192*FRACUNIT, int duration = 0, float sparsity = 1.0, float drift = 1.0, const PClass *spawnclass = NULL, int SpiralOffset = 270); // [RH] Shoot a railgun enum // P_RailAttack / A_RailAttack / A_CustomRailgun / P_DrawRailTrail flags { diff --git a/src/p_map.cpp b/src/p_map.cpp index 1ad1728ce..6370fa849 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4140,7 +4140,7 @@ static ETraceStatus ProcessRailHit(FTraceResults &res, void *userdata) // // //========================================================================== -void P_RailAttack(AActor *source, int damage, int offset_xy, fixed_t offset_z, int color1, int color2, float maxdiff, int railflags, const PClass *puffclass, angle_t angleoffset, angle_t pitchoffset, fixed_t distance, int duration, float sparsity, float drift, const PClass *spawnclass) +void P_RailAttack(AActor *source, int damage, int offset_xy, fixed_t offset_z, int color1, int color2, float maxdiff, int railflags, const PClass *puffclass, angle_t angleoffset, angle_t pitchoffset, fixed_t distance, int duration, float sparsity, float drift, const PClass *spawnclass, int SpiralOffset) { fixed_t vx, vy, vz; angle_t angle, pitch; @@ -4292,7 +4292,7 @@ void P_RailAttack(AActor *source, int damage, int offset_xy, fixed_t offset_z, i end.X = FIXED2FLOAT(trace.X); end.Y = FIXED2FLOAT(trace.Y); end.Z = FIXED2FLOAT(trace.Z); - P_DrawRailTrail(source, start, end, color1, color2, maxdiff, railflags, spawnclass, source->angle + angleoffset, duration, sparsity, drift); + P_DrawRailTrail(source, start, end, color1, color2, maxdiff, railflags, spawnclass, source->angle + angleoffset, duration, sparsity, drift, SpiralOffset); } //========================================================================== diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index a006d04a1..b4c6a219a 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -1495,7 +1495,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomPunch) //========================================================================== DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RailAttack) { - ACTION_PARAM_START(16); + ACTION_PARAM_START(17); ACTION_PARAM_INT(Damage, 0); ACTION_PARAM_INT(Spawnofs_XY, 1); ACTION_PARAM_BOOL(UseAmmo, 2); @@ -1512,6 +1512,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RailAttack) ACTION_PARAM_FLOAT(DriftSpeed, 13); ACTION_PARAM_CLASS(SpawnClass, 14); ACTION_PARAM_FIXED(Spawnofs_Z, 15); + ACTION_PARAM_INT(SpiralOffset, 16); if(Range==0) Range=8192*FRACUNIT; if(Sparsity==0) Sparsity=1.0; @@ -1540,7 +1541,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_RailAttack) slope = pr_crailgun.Random2() * (Spread_Z / 255); } - P_RailAttack (self, Damage, Spawnofs_XY, Spawnofs_Z, Color1, Color2, MaxDiff, Flags, PuffType, angle, slope, Range, Duration, Sparsity, DriftSpeed, SpawnClass); + P_RailAttack (self, Damage, Spawnofs_XY, Spawnofs_Z, Color1, Color2, MaxDiff, Flags, PuffType, angle, slope, Range, Duration, Sparsity, DriftSpeed, SpawnClass, SpiralOffset); } //========================================================================== @@ -1558,7 +1559,7 @@ enum DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun) { - ACTION_PARAM_START(16); + ACTION_PARAM_START(17); ACTION_PARAM_INT(Damage, 0); ACTION_PARAM_INT(Spawnofs_XY, 1); ACTION_PARAM_COLOR(Color1, 2); @@ -1575,6 +1576,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun) ACTION_PARAM_FLOAT(DriftSpeed, 13); ACTION_PARAM_CLASS(SpawnClass, 14); ACTION_PARAM_FIXED(Spawnofs_Z, 15); + ACTION_PARAM_INT(SpiralOffset, 16); if(Range==0) Range=8192*FRACUNIT; if(Sparsity==0) Sparsity=1.0; @@ -1658,7 +1660,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomRailgun) slopeoffset = pr_crailgun.Random2() * (Spread_Z / 255); } - P_RailAttack (self, Damage, Spawnofs_XY, Spawnofs_Z, Color1, Color2, MaxDiff, Flags, PuffType, angleoffset, slopeoffset, Range, Duration, Sparsity, DriftSpeed, SpawnClass); + P_RailAttack (self, Damage, Spawnofs_XY, Spawnofs_Z, Color1, Color2, MaxDiff, Flags, PuffType, angleoffset, slopeoffset, Range, Duration, Sparsity, DriftSpeed, SpawnClass, SpiralOffset); self->x = saved_x; self->y = saved_y; diff --git a/wadsrc/static/actors/actor.txt b/wadsrc/static/actors/actor.txt index 7d8fad5bf..8a31b05c0 100644 --- a/wadsrc/static/actors/actor.txt +++ b/wadsrc/static/actors/actor.txt @@ -210,7 +210,7 @@ ACTOR Actor native //: Thinker action native A_Jump(int chance = 256, state label, ...); action native A_CustomMissile(class missiletype, float spawnheight = 32, int spawnofs_xy = 0, float angle = 0, int flags = 0, float pitch = 0, int ptr = AAPTR_TARGET); action native A_CustomBulletAttack(float spread_xy, float spread_z, int numbullets, int damageperbullet, class pufftype = "BulletPuff", float range = 0, int flags = 0, int ptr = AAPTR_TARGET); - action native A_CustomRailgun(int damage, int spawnofs_xy = 0, color color1 = "", color color2 = "", int flags = 0, bool aim = false, float maxdiff = 0, class pufftype = "BulletPuff", float spread_xy = 0, float spread_z = 0, float range = 0, int duration = 0, float sparsity = 1.0, float driftspeed = 1.0, class spawnclass = "none", float spawnofs_z = 0); + action native A_CustomRailgun(int damage, int spawnofs_xy = 0, color color1 = "", color color2 = "", int flags = 0, bool aim = false, float maxdiff = 0, class pufftype = "BulletPuff", float spread_xy = 0, float spread_z = 0, float range = 0, int duration = 0, float sparsity = 1.0, float driftspeed = 1.0, class spawnclass = "none", float spawnofs_z = 0, int spiraloffset = 270); action native A_JumpIfHealthLower(int health, state label, int ptr_selector = AAPTR_DEFAULT); action native A_JumpIfCloser(float distance, state label); action native A_JumpIfTracerCloser(float distance, state label); diff --git a/wadsrc/static/actors/shared/inventory.txt b/wadsrc/static/actors/shared/inventory.txt index 7860b9387..0c106417b 100644 --- a/wadsrc/static/actors/shared/inventory.txt +++ b/wadsrc/static/actors/shared/inventory.txt @@ -11,7 +11,7 @@ ACTOR Inventory native action native A_CustomPunch(int damage, bool norandom = false, int flags = CPF_USEAMMO, class pufftype = "BulletPuff", float range = 0, float lifesteal = 0, int lifestealmax = 0, class armorbonustype = "ArmorBonus"); action native A_FireBullets(float spread_xy, float spread_z, int numbullets, int damageperbullet, class pufftype = "BulletPuff", int flags = 1, float range = 0); action native A_FireCustomMissile(class missiletype, float angle = 0, bool useammo = true, int spawnofs_xy = 0, float spawnheight = 0, bool aimatangle = false, float pitch = 0); - action native A_RailAttack(int damage, int spawnofs_xy = 0, int useammo = true, color color1 = "", color color2 = "", int flags = 0, float maxdiff = 0, class pufftype = "BulletPuff", float spread_xy = 0, float spread_z = 0, float range = 0, int duration = 0, float sparsity = 1.0, float driftspeed = 1.0, class spawnclass = "none", float spawnofs_z = 0); + action native A_RailAttack(int damage, int spawnofs_xy = 0, int useammo = true, color color1 = "", color color2 = "", int flags = 0, float maxdiff = 0, class pufftype = "BulletPuff", float spread_xy = 0, float spread_z = 0, float range = 0, int duration = 0, float sparsity = 1.0, float driftspeed = 1.0, class spawnclass = "none", float spawnofs_z = 0, int spiraloffset = 270); action native A_Light(int extralight); action native A_Light0(); action native A_Light1(); From 920a4fbf4595ab4f677c19aeb90464b8bdf118ce Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 23 Apr 2015 21:27:36 +0200 Subject: [PATCH 144/144] - fixed: The HashTags function considered sector and line #0 invalid. --- src/p_tags.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_tags.cpp b/src/p_tags.cpp index 7e958dcca..d5c03ec9d 100644 --- a/src/p_tags.cpp +++ b/src/p_tags.cpp @@ -163,7 +163,7 @@ void FTagManager::HashTags() // Proceed from last to first so that lower targets appear first for (int i = allTags.Size() - 1; i >= 0; i--) { - if (allTags[i].target > 0) // only link valid entries + if (allTags[i].target >= 0) // only link valid entries { int hash = ((unsigned int)allTags[i].tag) % FTagManager::TAG_HASH_SIZE; allTags[i].nexttag = TagHashFirst[hash]; @@ -173,7 +173,7 @@ void FTagManager::HashTags() for (int i = allIDs.Size() - 1; i >= 0; i--) { - if (allIDs[i].target > 0) // only link valid entries + if (allIDs[i].target >= 0) // only link valid entries { int hash = ((unsigned int)allIDs[i].tag) % FTagManager::TAG_HASH_SIZE; allIDs[i].nexttag = IDHashFirst[hash];