From 1bc9de1cf0ef478c7ab895526e14a9f65bd258c8 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 30 Dec 2022 18:05:44 +0100 Subject: [PATCH] - the last picnums in actors_r.cpp --- source/core/thingdef_data.cpp | 1 + source/games/duke/src/actors_r.cpp | 33 +++---------------- source/games/duke/src/classnames.h | 2 ++ source/games/duke/src/constants.h | 1 + .../zscript/games/duke/actors/controllers.zs | 2 ++ .../static/zscript/games/duke/actors/coot.zs | 1 + .../zscript/games/duke/actors/player.zs | 9 ++--- .../games/duke/actors/redneckenemies.zs | 1 + 8 files changed, 17 insertions(+), 33 deletions(-) diff --git a/source/core/thingdef_data.cpp b/source/core/thingdef_data.cpp index 67990e658..e12dff0c9 100644 --- a/source/core/thingdef_data.cpp +++ b/source/core/thingdef_data.cpp @@ -194,6 +194,7 @@ static FFlagDef DukeActorFlagDefs[] = DEFINE_FLAG(SFLAG3, NOVERTICALMOVE, DDukeActor, flags3), DEFINE_FLAG(SFLAG3, MOVE_NOPLAYERINTERACT, DDukeActor, flags3), DEFINE_FLAG(SFLAG3, MAGMAIMMUNE, DDukeActor, flags3), + DEFINE_FLAG(SFLAG3, DESTRUCTOIMMUNE, DDukeActor, flags3), }; diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index 85c0f3c51..67a0a966c 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -666,7 +666,7 @@ void moveeffectors_r(void) //STATNUM 3 handle_se02(act); break; - //Flashing sector lights after reactor RTILE_EXPLOSION2 + //Flashing sector lights after reactor explosion case SE_3_RANDOM_LIGHTS_AFTER_SHOT_OUT: handle_se03(act); break; @@ -815,21 +815,6 @@ void moveeffectors_r(void) //STATNUM 3 } -//--------------------------------------------------------------------------- -// -// game specific part of makeitfall. -// -//--------------------------------------------------------------------------- - -double adjustfall(DDukeActor *actor, double c) -{ - if ((actor->spr.picnum == RTILE_BIKERB || actor->spr.picnum == RTILE_CHEERB) && c == gs.gravity) - c = gs.gravity * 0.25; - else if (actor->spr.picnum == RTILE_BIKERBV2 && c == gs.gravity) - c = gs.gravity * 0.125; - return c; -} - //--------------------------------------------------------------------------- // // @@ -873,7 +858,7 @@ void destroyit(DDukeActor *actor) DukeSectIterator it1(actor->sector()); while (auto a2 = it1.Next()) { - if (a2->spr.picnum == RTILE_DESTROYTAGS) + if (a2->GetClass() == RedneckDestroyTagsClass) { lotag = a2->spr.lotag; spr = a2; @@ -890,7 +875,7 @@ void destroyit(DDukeActor *actor) DukeSectIterator its(it_sect); while (auto a3 = its.Next()) { - if (a3->spr.picnum == RTILE_DESTRUCTO) + if (a3->GetClass() == RedneckDestructoClass) { a3->attackertype = DukeShotSparkClass; a3->hitextra = 1; @@ -949,18 +934,8 @@ void destroyit(DDukeActor *actor) it1.Reset(actor->sector()); while (auto a2 = it1.Next()) { - switch (a2->spr.picnum) - { - case RTILE_DESTRUCTO: - case RTILE_DESTROYTAGS: - case RTILE_TORNADO: - case RTILE_APLAYER: - case RTILE_COOT: - break; - default: + if (!(a2->flags3 & SFLAG3_DESTRUCTOIMMUNE)) a2->Destroy(); - break; - } } } diff --git a/source/games/duke/src/classnames.h b/source/games/duke/src/classnames.h index b35d60edb..d55e1ce46 100644 --- a/source/games/duke/src/classnames.h +++ b/source/games/duke/src/classnames.h @@ -118,3 +118,5 @@ xx(DukePlayerBase) xx(DukePlayerPawn) xx(RedneckRock) xx(RedneckRock2) +xx(RedneckDestroyTags) +xx(RedneckDestructo) diff --git a/source/games/duke/src/constants.h b/source/games/duke/src/constants.h index 9c448ad2f..4c4dd17a0 100644 --- a/source/games/duke/src/constants.h +++ b/source/games/duke/src/constants.h @@ -439,6 +439,7 @@ enum sflags3_t SFLAG3_NOVERTICALMOVE = 0x02000000, SFLAG3_MOVE_NOPLAYERINTERACT = 0x04000000, SFLAG3_MAGMAIMMUNE = 0x08000000, + SFLAG3_DESTRUCTOIMMUNE = 0x10000000, }; using EDukeFlags3 = TFlags; diff --git a/wadsrc/static/zscript/games/duke/actors/controllers.zs b/wadsrc/static/zscript/games/duke/actors/controllers.zs index 9bf8d001a..45170835d 100644 --- a/wadsrc/static/zscript/games/duke/actors/controllers.zs +++ b/wadsrc/static/zscript/games/duke/actors/controllers.zs @@ -250,6 +250,7 @@ class RedneckDestructo : DukeActor { default { + +DESTRUCTOIMMUNE; pic "DESTRUCTO"; statnum STAT_DESTRUCT; } @@ -265,6 +266,7 @@ class RedneckDestroyTags : DukeActor { default { + +DESTRUCTOIMMUNE; pic "DESTROYTAGS"; } override void Initialize() diff --git a/wadsrc/static/zscript/games/duke/actors/coot.zs b/wadsrc/static/zscript/games/duke/actors/coot.zs index acd78e4af..3fe49e982 100644 --- a/wadsrc/static/zscript/games/duke/actors/coot.zs +++ b/wadsrc/static/zscript/games/duke/actors/coot.zs @@ -5,6 +5,7 @@ class RedneckCoot : DukeActor pic "COOT"; +INTERNAL_BADGUY; +KILLCOUNT; + +DESTRUCTOIMMUNE; } override void PlayFTASound() diff --git a/wadsrc/static/zscript/games/duke/actors/player.zs b/wadsrc/static/zscript/games/duke/actors/player.zs index b0b50ce36..ed4015138 100644 --- a/wadsrc/static/zscript/games/duke/actors/player.zs +++ b/wadsrc/static/zscript/games/duke/actors/player.zs @@ -1,15 +1,16 @@ class DukePlayerBase : DukeActor -{ -} - -class DukePlayerPawn : DukePlayerBase { default { pic "APLAYER"; + +DESTRUCTOIMMUNE; } } +class DukePlayerPawn : DukePlayerBase +{ +} + class DukePlayerOnWater : DukeActor { default diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs index 2ead9e726..3a40ee2f8 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs @@ -402,6 +402,7 @@ class RedneckTornado : DukeActor default { pic "TORNADO"; + +DESTRUCTOIMMUNE; +INTERNAL_BADGUY; +NOHITSCANHIT; }