From e9ce77c39efdda2be274086b0d9715b5cef92bb7 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Wed, 29 Sep 2021 10:51:59 -0400 Subject: [PATCH 01/12] - fix the ugly constants in udmf.cpp - namespace them to the file, and add comments depicting what they are --- src/maploader/udmf.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/maploader/udmf.cpp b/src/maploader/udmf.cpp index 256a119e62..f30ddc736e 100644 --- a/src/maploader/udmf.cpp +++ b/src/maploader/udmf.cpp @@ -112,13 +112,13 @@ static inline bool P_IsThingSpecial(int specnum) enum { - Dm=1, - Ht=2, - Hx=4, - St=8, - Zd=16, - Zdt=32, - Va=64, + Dm=1, // Doom + Ht=2, // Heretic + Hx=4, // Hexen + St=8, // Strife + Zd=16, // ZDoom + Zdt=32, // ZDoom Translated + Va=64, // Vavoom // will be extended later. Unknown namespaces will always be treated like the base // namespace for each game From a15d4e574d7856492b4344b02177f7a2d8addf51 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Wed, 29 Sep 2021 10:52:46 -0400 Subject: [PATCH 02/12] - oops forgot the namespace --- src/maploader/udmf.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/maploader/udmf.cpp b/src/maploader/udmf.cpp index f30ddc736e..642708d2a7 100644 --- a/src/maploader/udmf.cpp +++ b/src/maploader/udmf.cpp @@ -109,21 +109,22 @@ static inline bool P_IsThingSpecial(int specnum) return (specnum >= Thing_Projectile && specnum <= Thing_SpawnNoFog) || specnum == Thing_SpawnFacing || specnum == Thing_ProjectileIntercept || specnum == Thing_ProjectileAimed; } - -enum +namespace { - Dm=1, // Doom - Ht=2, // Heretic - Hx=4, // Hexen - St=8, // Strife - Zd=16, // ZDoom - Zdt=32, // ZDoom Translated - Va=64, // Vavoom - - // will be extended later. Unknown namespaces will always be treated like the base - // namespace for each game -}; + enum + { + Dm=1, // Doom + Ht=2, // Heretic + Hx=4, // Hexen + St=8, // Strife + Zd=16, // ZDoom + Zdt=32, // ZDoom Translated + Va=64, // Vavoom + // will be extended later. Unknown namespaces will always be treated like the base + // namespace for each game + }; +} #define CHECK_N(f) if (!(namespace_bits&(f))) break; //=========================================================================== From f517d33ecf6be0c61521b03664df8bffc3e1c022 Mon Sep 17 00:00:00 2001 From: Blue Shadow Date: Wed, 29 Sep 2021 06:50:30 +0300 Subject: [PATCH 03/12] - fixed A_Punch having a short attack range (take 2). The previous attempt to fix this did so partially; the range was fixed for AimLineAttack, but not for LineAttack, too. --- wadsrc/static/zscript/actors/doom/weaponfist.zs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wadsrc/static/zscript/actors/doom/weaponfist.zs b/wadsrc/static/zscript/actors/doom/weaponfist.zs index c1535f8c73..711ca97d93 100644 --- a/wadsrc/static/zscript/actors/doom/weaponfist.zs +++ b/wadsrc/static/zscript/actors/doom/weaponfist.zs @@ -66,9 +66,10 @@ extend class Actor damage *= 10; double ang = angle + Random2[Punch]() * (5.625 / 256); - double pitch = AimLineAttack (ang, MeleeRange + MELEEDELTA, null, 0., ALF_CHECK3D); + double range = MeleeRange + MELEEDELTA; + double pitch = AimLineAttack (ang, range, null, 0., ALF_CHECK3D); - LineAttack (ang, MeleeRange, pitch, damage, 'Melee', "BulletPuff", LAF_ISMELEEATTACK, t); + LineAttack (ang, range, pitch, damage, 'Melee', "BulletPuff", LAF_ISMELEEATTACK, t); // turn to face target if (t.linetarget) From b48e99637eb276c38543018f62cdd4866245241c Mon Sep 17 00:00:00 2001 From: arrowgent <57545549+arrowgent@users.noreply.github.com> Date: Sun, 26 Sep 2021 16:56:47 -0700 Subject: [PATCH 04/12] change version input in bug_report.yml remove dropdown list since i cant determine how to get a workflow to pull info from known releases --- .github/ISSUE_TEMPLATE/bug_report.yml | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 966d2d4dad..b157b4a638 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -11,26 +11,17 @@ body: ## Please fill out forms as cleanly as possible. #### Make sure that you have * properly edited & filled in the title of this bug report - - type: dropdown + - type: input id: version attributes: label: GZDoom version description: | What version are you using? - Run `gzdoom --version` + Run `gzdoom --version` or check in the console in game. Make sure to update to latest [release](https://github.com/coelckers/gzdoom/releases) version and test again before continuing. - multiple: false - options: - - 4.6.1 - - 4.6.0 - - 4.5.0 - - 4.4.2 - - 4.4.1 - - 4.4.0 - - Git - - Other + placeholder: "ex: GZDoom 4.0.0, Git version, Branch, other" validations: - required: true + required: false - type: dropdown id: gameid attributes: From 51faf8a9c6aa1644a38f48b1af60e34ae4bddc26 Mon Sep 17 00:00:00 2001 From: arrowgent <57545549+arrowgent@users.noreply.github.com> Date: Sun, 26 Sep 2021 16:56:51 -0700 Subject: [PATCH 05/12] change version input in feature_request.yml remove dropdown list since i cant determine how to get a workflow to pull info from known releases --- .github/ISSUE_TEMPLATE/feature_request.yml | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 6bf1d971ad..60c7440fe5 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -11,26 +11,17 @@ body: ## Please fill out forms as cleanly as possible. #### Make sure that you have * properly edited & filled in the title of this bug report - - type: dropdown + - type: input id: version attributes: label: GZDoom version description: | What version are you using? - Run `gzdoom --version` + Run `gzdoom --version` or check in the console in game. Make sure to update to latest [release](https://github.com/coelckers/gzdoom/releases) version and test again before continuing. - multiple: false - options: - - 4.6.1 - - 4.6.0 - - 4.5.0 - - 4.4.2 - - 4.4.1 - - 4.4.0 - - Git - - Other + placeholder: "ex: GZDoom 4.0.0, Git version, Branch, other" validations: - required: true + required: false - type: dropdown id: gameid attributes: From 457f7c31c3e481d08d640c36427bfe5daeb3624b Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Mon, 27 Sep 2021 19:40:57 +0200 Subject: [PATCH 06/12] Allow WorldUnloaded events to know the next map name (if any). --- src/events.cpp | 8 +++++--- src/events.h | 5 +++-- src/g_level.cpp | 6 +++--- wadsrc/static/zscript/events.zs | 2 ++ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/events.cpp b/src/events.cpp index 623d222039..a9362e03b3 100755 --- a/src/events.cpp +++ b/src/events.cpp @@ -294,11 +294,11 @@ void EventManager::WorldLoaded() } } -void EventManager::WorldUnloaded() +void EventManager::WorldUnloaded(const FString& nextmap) { for (DStaticEventHandler* handler = LastEventHandler; handler; handler = handler->prev) { - handler->WorldUnloaded(); + handler->WorldUnloaded(nextmap); } } @@ -629,6 +629,7 @@ DEFINE_FIELD_X(RenderEvent, FRenderEvent, Camera); DEFINE_FIELD_X(WorldEvent, FWorldEvent, IsSaveGame); DEFINE_FIELD_X(WorldEvent, FWorldEvent, IsReopen); +DEFINE_FIELD_X(WorldEvent, FWorldEvent, NextMap); DEFINE_FIELD_X(WorldEvent, FWorldEvent, Thing); DEFINE_FIELD_X(WorldEvent, FWorldEvent, Inflictor); DEFINE_FIELD_X(WorldEvent, FWorldEvent, Damage); @@ -769,13 +770,14 @@ void DStaticEventHandler::WorldLoaded() } } -void DStaticEventHandler::WorldUnloaded() +void DStaticEventHandler::WorldUnloaded(const FString& nextmap) { IFVIRTUAL(DStaticEventHandler, WorldUnloaded) { // don't create excessive DObjects if not going to be processed anyway if (isEmpty(func)) return; FWorldEvent e = owner->SetupWorldEvent(); + e.NextMap = nextmap; VMValue params[2] = { (DStaticEventHandler*)this, &e }; VMCall(func, params, 2, nullptr, 0); } diff --git a/src/events.h b/src/events.h index 86e8e941e8..f5ad75d88e 100755 --- a/src/events.h +++ b/src/events.h @@ -78,7 +78,7 @@ public: // void WorldLoaded(); - void WorldUnloaded(); + void WorldUnloaded(const FString& nextmap); void WorldThingSpawned(AActor* actor); void WorldThingDied(AActor* actor, AActor* inflictor); void WorldThingGround(AActor* actor, FState* st); @@ -144,6 +144,7 @@ struct FWorldEvent // for loaded/unloaded bool IsSaveGame = false; bool IsReopen = false; + FString NextMap; // for thingspawned, thingdied, thingdestroyed AActor* Thing = nullptr; // for thingdied AActor* Inflictor = nullptr; // can be null - for damagemobj @@ -232,7 +233,7 @@ struct EventManager // called right after the map has loaded (approximately same time as OPEN ACS scripts) void WorldLoaded(); // called when the map is about to unload (approximately same time as UNLOADING ACS scripts) - void WorldUnloaded(); + void WorldUnloaded(const FString& nextmap); // called around PostBeginPlay of each actor. void WorldThingSpawned(AActor* actor); // called after AActor::Die of each actor. diff --git a/src/g_level.cpp b/src/g_level.cpp index 6468dd29df..5247c49686 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -468,7 +468,7 @@ void G_InitNew (const char *mapname, bool bTitleLevel) // did we have any level before? if (primaryLevel->info != nullptr) - staticEventManager.WorldUnloaded(); + staticEventManager.WorldUnloaded(FString()); // [MK] don't pass the new map, as it's not a level transition if (!savegamerestore) { @@ -701,10 +701,10 @@ void FLevelLocals::ChangeLevel(const char *levelname, int position, int inflags, for (auto Level : AllLevels()) { // Todo: This must be exolicitly sandboxed! - Level->localEventManager->WorldUnloaded(); + Level->localEventManager->WorldUnloaded(nextlevel); } // [ZZ] unsafe world unload (changemap != map) - staticEventManager.WorldUnloaded(); + staticEventManager.WorldUnloaded(nextlevel); unloading = false; STAT_ChangeLevel(nextlevel, this); diff --git a/wadsrc/static/zscript/events.zs b/wadsrc/static/zscript/events.zs index 6db6fb1e28..7492ea2b00 100644 --- a/wadsrc/static/zscript/events.zs +++ b/wadsrc/static/zscript/events.zs @@ -15,6 +15,8 @@ struct WorldEvent native play version("2.4") native readonly bool IsSaveGame; // this will be true if we are re-entering the hub level. native readonly bool IsReopen; + // for unloaded, name of next map (if any) + native readonly String NextMap; // for thingspawned/thingdied/thingdestroyed/thingground native readonly Actor Thing; // for thingdied. can be null From 6da9f00e6e038cfc084206d39113ff009aab99c4 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Oct 2021 09:00:24 +0200 Subject: [PATCH 07/12] - allow "INDEXFON" as an alias for "INDEXFONT". --- src/common/fonts/v_font.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/common/fonts/v_font.cpp b/src/common/fonts/v_font.cpp index 1305fc413b..0042f48c3e 100644 --- a/src/common/fonts/v_font.cpp +++ b/src/common/fonts/v_font.cpp @@ -94,6 +94,7 @@ FFont *V_GetFont(const char *name, const char *fontlumpname) { if (!stricmp(name, "DBIGFONT")) name = "BigFont"; else if (!stricmp(name, "CONFONT")) name = "ConsoleFont"; // several mods have used the name CONFONT directly and effectively duplicated the font. + else if (!stricmp(name, "INDEXFON")) name = "IndexFont"; // Same here - for whatever reason some people had to use its 8 character name... FFont *font = FFont::FindFont (name); if (font == nullptr) { @@ -873,6 +874,7 @@ void V_InitFonts() NewSmallFont = CreateHexLumpFont2("NewSmallFont", lump); CurrentConsoleFont = NewConsoleFont; ConFont = V_GetFont("ConsoleFont", "CONFONT"); + V_GetFont("IndexFont", "INDEXFON"); // detect potential replacements for this one. } void V_LoadTranslations() From 88be3b8a1b8a938dbbe8c74b6e4104965ad10db2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Oct 2021 13:09:39 +0200 Subject: [PATCH 08/12] - fixed base class for DShape2DBufferInfo. --- src/common/2d/v_2ddrawer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/2d/v_2ddrawer.h b/src/common/2d/v_2ddrawer.h index ebcef61421..74d5935a63 100644 --- a/src/common/2d/v_2ddrawer.h +++ b/src/common/2d/v_2ddrawer.h @@ -243,7 +243,7 @@ public: bool mIsFirstPass = true; }; -struct DShape2DBufferInfo : NoVirtualRefCountedBase +struct DShape2DBufferInfo : RefCountedBase { TArray buffers; bool needsVertexUpload = true; From b4d03501aff8b7ff8318f562a00a6ef89adb9eb1 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Oct 2021 14:01:27 +0200 Subject: [PATCH 09/12] - be a bit more aggressive with the GC when not running the game loop. Since most CheckGC calls are within the main game ticker, the engine can accumulate a lot of data when creating/deleting objects in the menu or other UI parts and never manage to collect everything --- src/common/objects/dobject.cpp | 3 +++ src/common/objects/dobjgc.cpp | 1 + src/common/objects/dobjgc.h | 10 +++++++++- src/g_game.cpp | 9 +++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/common/objects/dobject.cpp b/src/common/objects/dobject.cpp index 9f4a164e44..8516229dee 100644 --- a/src/common/objects/dobject.cpp +++ b/src/common/objects/dobject.cpp @@ -229,6 +229,7 @@ DObject::DObject () ObjNext = GC::Root; GCNext = nullptr; GC::Root = this; + GC::AllocCount++; } DObject::DObject (PClass *inClass) @@ -238,6 +239,7 @@ DObject::DObject (PClass *inClass) ObjNext = GC::Root; GCNext = nullptr; GC::Root = this; + GC::AllocCount++; } //========================================================================== @@ -275,6 +277,7 @@ DObject::~DObject () void DObject::Release() { + if (GC::AllocCount > 0) GC::AllocCount--; DObject **probe; // Unlink this object from the GC list. diff --git a/src/common/objects/dobjgc.cpp b/src/common/objects/dobjgc.cpp index 9afa0b0af0..58b27c4b76 100644 --- a/src/common/objects/dobjgc.cpp +++ b/src/common/objects/dobjgc.cpp @@ -108,6 +108,7 @@ namespace GC size_t AllocBytes; size_t Threshold; size_t Estimate; +size_t AllocCount; DObject *Gray; DObject *Root; DObject *SoftRoots; diff --git a/src/common/objects/dobjgc.h b/src/common/objects/dobjgc.h index e3f8b85b14..d01e52cf63 100644 --- a/src/common/objects/dobjgc.h +++ b/src/common/objects/dobjgc.h @@ -43,6 +43,9 @@ namespace GC // Number of bytes currently allocated through M_Malloc/M_Realloc. extern size_t AllocBytes; + // Number of allocated objects since last CheckGC call. + extern size_t AllocCount; + // Amount of memory to allocate before triggering a collection. extern size_t Threshold; @@ -105,10 +108,15 @@ namespace GC } // Check if it's time to collect, and do a collection step if it is. - static inline void CheckGC() + static inline bool CheckGC() { + AllocCount = 0; if (AllocBytes >= Threshold) + { Step(); + return true; + } + return false; } // Forces a collection to start now. diff --git a/src/g_game.cpp b/src/g_game.cpp index fdbc18aa80..f394d1a855 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -1316,6 +1316,15 @@ void G_Ticker () default: break; } + // Do some more aggressive GC maintenance when the game ticker is inactive. + if ((gamestate != GS_LEVEL && gamestate != GS_TITLELEVEL) || paused || P_CheckTickerPaused()) + { + size_t ac = std::max(10, GC::AllocCount); + for (size_t i = 0; i < ac; i++) + { + if (!GC::CheckGC()) break; + } + } // [MK] Additional ticker for UI events right after all others primaryLevel->localEventManager->PostUiTick(); From 6bf487dac356e55803ec2eba784a7cc3501a4940 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Oct 2021 15:44:42 +0200 Subject: [PATCH 10/12] - fixed wrong state being checked for dynamic light updating. --- src/playsim/p_mobj.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/playsim/p_mobj.cpp b/src/playsim/p_mobj.cpp index 8ca3867661..7416221270 100644 --- a/src/playsim/p_mobj.cpp +++ b/src/playsim/p_mobj.cpp @@ -584,7 +584,7 @@ bool AActor::SetState (FState *newstate, bool nofunction) newstate = newstate->GetNextState(); } while (tics == 0); - if (GetInfo()->LightAssociations.Size() || (newstate && newstate->Light > 0)) + if (GetInfo()->LightAssociations.Size() || (state && state->Light > 0)) { flags8 |= MF8_RECREATELIGHTS; Level->flags3 |= LEVEL3_LIGHTCREATED; From 6e9e75c02ccc76883eb5ed5b29f0537ff615d652 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Oct 2021 15:54:08 +0200 Subject: [PATCH 11/12] - disallow changing the line spacing for option menus. With the VGA font this makes no sense anymore. --- src/common/menu/menudef.cpp | 3 ++- wadsrc/static/menudef.txt | 12 ------------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/src/common/menu/menudef.cpp b/src/common/menu/menudef.cpp index 2803497817..ef3397df08 100644 --- a/src/common/menu/menudef.cpp +++ b/src/common/menu/menudef.cpp @@ -910,7 +910,7 @@ static void ParseOptionSettings(FScanner &sc) else if (sc.Compare("Linespacing")) { sc.MustGetNumber(); - OptionSettings.mLinespacing = sc.Number; + // ignored } else if (sc.Compare("LabelOffset")) { @@ -1402,6 +1402,7 @@ void M_ParseMenuDefs() DefaultOptionMenuSettings = Create(); DefaultListMenuSettings->Reset(); DefaultOptionMenuSettings->Reset(); + OptionSettings.mLinespacing = 17; int IWADMenu = fileSystem.CheckNumForName("MENUDEF", ns_global, fileSystem.GetIwadNum()); diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 8e7a316db9..a5878a3c68 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -344,18 +344,6 @@ OptionValue AutoOffOn 1, "$OPTVAL_ON" } -OptionMenuSettings -{ - // These can be overridden if a different menu fonts requires it. - Linespacing 17 - /* - IfGame(Heretic, Hexen) - { - Linespacing 9 - } - */ -} - DefaultOptionMenu { Position -15 From 3c961a2aa26ec8548b15b066d74fc8d89a09bdca Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Oct 2021 18:16:37 +0200 Subject: [PATCH 12/12] - avoid multiple Dehacked mappings to the same function. Due to some MBF21 related changes these would cause interference. Instead the two affected functions, A_NailBomb and A_RadiusDamage are now separate script functions that just call A_Explode with the correct parameters. --- src/gamedata/d_dehacked.cpp | 18 ------------------ wadsrc/static/dehsupp.txt | 3 +-- wadsrc/static/zscript/actors/attacks.zs | 12 ++++++++++++ wadsrc/static/zscript/actors/player/player.zs | 2 +- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/gamedata/d_dehacked.cpp b/src/gamedata/d_dehacked.cpp index 85c167fe00..a82146ad54 100644 --- a/src/gamedata/d_dehacked.cpp +++ b/src/gamedata/d_dehacked.cpp @@ -764,22 +764,6 @@ static void CreateLineEffectFunc(FunctionCallEmitter &emitters, int value1, int emitters.AddParameterIntConst(value2); // tag } -// No misc, but it's basically A_Explode with an added effect -static void CreateNailBombFunc(FunctionCallEmitter &emitters, int value1, int value2, MBFParamState* state) -{ // A_Explode - // This one does not actually have MBF-style parameters. But since - // we're aliasing it to an extension of A_Explode... - emitters.AddParameterIntConst(-1); // damage - emitters.AddParameterIntConst(-1); // distance - emitters.AddParameterIntConst(1); // flags (1=XF_HURTSOURCE) - emitters.AddParameterIntConst(0); // alert - emitters.AddParameterIntConst(0); // fulldamagedistance - emitters.AddParameterIntConst(30); // nails - emitters.AddParameterIntConst(10); // naildamage - emitters.AddParameterPointerConst(PClass::FindClass(NAME_BulletPuff)); // itemtype - emitters.AddParameterIntConst(NAME_None); // damage type -} - static void CreateSpawnObjectFunc(FunctionCallEmitter& emitters, int value1, int value2, MBFParamState* state) { state->ValidateArgCount(8, "A_SpawnObject"); @@ -936,7 +920,6 @@ static void (*MBFCodePointerFactories[])(FunctionCallEmitter&, int, int, MBFPara { // Die and Detonate are not in this list because these codepointers have // no dehacked arguments and therefore do not need special handling. - // NailBomb has no argument but is implemented as new parameters for A_Explode. CreateMushroomFunc, CreateSpawnFunc, CreateTurnFunc, @@ -945,7 +928,6 @@ static void (*MBFCodePointerFactories[])(FunctionCallEmitter&, int, int, MBFPara CreatePlaySoundFunc, CreateRandomJumpFunc, CreateLineEffectFunc, - CreateNailBombFunc, CreateSpawnObjectFunc, CreateMonsterProjectileFunc, CreateMonsterBulletAttackFunc, diff --git a/wadsrc/static/dehsupp.txt b/wadsrc/static/dehsupp.txt index 744e65dc0e..8525d11644 100644 --- a/wadsrc/static/dehsupp.txt +++ b/wadsrc/static/dehsupp.txt @@ -1193,12 +1193,11 @@ Aliases A_PlaySound, A_PlaySound, A_RandomJump, A_Jump, A_LineEffect, A_LineEffect, - A_NailBomb, A_Explode, A_SpawnObject, MBF21_SpawnObject, A_MonsterProjectile, MBF21_MonsterProjectile, A_MonsterBulletAttack, MBF21_MonsterBulletAttack, A_MonsterMeleeAttack, MBF21_MonsterMeleeAttack, - A_RadiusDamage, A_Explode, + A_RadiusDamage, A_RadiusDamage, A_HealChase, MBF21_HealChase, A_SeekTracer, A_SeekerMissile, A_FindTracer, A_FindTracer, diff --git a/wadsrc/static/zscript/actors/attacks.zs b/wadsrc/static/zscript/actors/attacks.zs index 102451abdc..edefdd24fe 100644 --- a/wadsrc/static/zscript/actors/attacks.zs +++ b/wadsrc/static/zscript/actors/attacks.zs @@ -616,6 +616,18 @@ extend class Actor return count; } + deprecated("2.3", "For Dehacked use only") + void A_NailBomb() + { + A_Explode(nails:30); + } + + deprecated("2.3", "For Dehacked use only") + void A_RadiusDamage(int dam, int dist) + { + A_Explode(dam, dist); + } + //========================================================================== // // A_RadiusThrust diff --git a/wadsrc/static/zscript/actors/player/player.zs b/wadsrc/static/zscript/actors/player/player.zs index a3f94408f3..c5795537a5 100644 --- a/wadsrc/static/zscript/actors/player/player.zs +++ b/wadsrc/static/zscript/actors/player/player.zs @@ -2084,7 +2084,7 @@ class PlayerPawn : Actor me.GiveDefaultInventory(); } } - + //=========================================================================== // // FWeaponSlot :: PickWeapon