From fc0c8e0787c8a2f9db018bd3da67af926b585c0f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 30 Dec 2022 22:09:33 +0100 Subject: [PATCH] - NOHITJIBS flag. --- source/core/thingdef_data.cpp | 1 + source/games/duke/src/constants.h | 1 + source/games/duke/src/sectors_d.cpp | 23 +++++++++---------- source/games/duke/src/sectors_r.cpp | 23 +++++++++---------- .../zscript/games/duke/actors/commander.zs | 1 + .../games/duke/actors/dukeweapons/freezer.zs | 1 + .../zscript/games/duke/actors/greenslime.zs | 1 + .../static/zscript/games/duke/actors/mech.zs | 3 +++ .../games/duke/actors/redneckenemies.zs | 1 + 9 files changed, 31 insertions(+), 24 deletions(-) diff --git a/source/core/thingdef_data.cpp b/source/core/thingdef_data.cpp index e12dff0c9..b8a45558b 100644 --- a/source/core/thingdef_data.cpp +++ b/source/core/thingdef_data.cpp @@ -195,6 +195,7 @@ static FFlagDef DukeActorFlagDefs[] = DEFINE_FLAG(SFLAG3, MOVE_NOPLAYERINTERACT, DDukeActor, flags3), DEFINE_FLAG(SFLAG3, MAGMAIMMUNE, DDukeActor, flags3), DEFINE_FLAG(SFLAG3, DESTRUCTOIMMUNE, DDukeActor, flags3), + DEFINE_FLAG(SFLAG3, NOHITJIBS, DDukeActor, flags3), }; diff --git a/source/games/duke/src/constants.h b/source/games/duke/src/constants.h index 4c4dd17a0..8c07e3760 100644 --- a/source/games/duke/src/constants.h +++ b/source/games/duke/src/constants.h @@ -440,6 +440,7 @@ enum sflags3_t SFLAG3_MOVE_NOPLAYERINTERACT = 0x04000000, SFLAG3_MAGMAIMMUNE = 0x08000000, SFLAG3_DESTRUCTOIMMUNE = 0x10000000, + SFLAG3_NOHITJIBS = 0x20000000, }; using EDukeFlags3 = TFlags; diff --git a/source/games/duke/src/sectors_d.cpp b/source/games/duke/src/sectors_d.cpp index 3c187e8d5..f6b8e10b8 100644 --- a/source/games/duke/src/sectors_d.cpp +++ b/source/games/duke/src/sectors_d.cpp @@ -173,20 +173,19 @@ void checkhitdefault_d(DDukeActor* targ, DDukeActor* proj) if (proj->spr.picnum == DTILE_RPG) proj->spr.extra <<= 1; - if ((targ->spr.picnum != DTILE_DRONE) && (targ->spr.picnum != DTILE_ROTATEGUN) && (targ->spr.picnum != DTILE_COMMANDER) && targ->spr.picnum != DTILE_GREENSLIME) - if (proj->spr.picnum != DTILE_FREEZEBLAST) + if (!(targ->flags3 & SFLAG3_NOHITJIBS) && !(proj->flags3 & SFLAG3_NOHITJIBS)) + { + auto spawned = spawn(proj, DukeJibs6Class); + if (spawned) { - auto spawned = spawn(proj, DukeJibs6Class); - if (spawned) - { - if (proj->spr.pal == 6) - spawned->spr.pal = 6; - spawned->spr.pos.Z += 4; - spawned->vel.X = 1; - spawned->spr.scale = DVector2(0.375, 0.375); - spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2); - } + if (proj->spr.pal == 6) + spawned->spr.pal = 6; + spawned->spr.pos.Z += 4; + spawned->vel.X = 1; + spawned->spr.scale = DVector2(0.375, 0.375); + spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2); } + } auto Owner = proj->GetOwner(); diff --git a/source/games/duke/src/sectors_r.cpp b/source/games/duke/src/sectors_r.cpp index 3bb27e1ff..a896dac3f 100644 --- a/source/games/duke/src/sectors_r.cpp +++ b/source/games/duke/src/sectors_r.cpp @@ -171,20 +171,19 @@ void checkhitdefault_r(DDukeActor* targ, DDukeActor* proj) if (proj->spr.picnum == RTILE_RPG) proj->spr.extra <<= 1; else if (isRRRA() && proj->spr.picnum == RTILE_RPG2) proj->spr.extra <<= 1; - if ((targ->spr.picnum != RTILE_DRONE)) - if (proj->spr.picnum != RTILE_FREEZEBLAST) + if (!(targ->flags3 & SFLAG3_NOHITJIBS) && !(proj->flags3 & SFLAG3_NOHITJIBS)) + { + auto spawned = spawn(proj, DukeJibs6Class); + if (spawned) { - auto spawned = spawn(proj, DukeJibs6Class); - if (spawned) - { - if (proj->spr.pal == 6) - spawned->spr.pal = 6; - spawned->spr.pos.Z += 4; - spawned->vel.X = 1; - spawned->spr.scale = DVector2(0.375, 0.375); - spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2); - } + if (proj->spr.pal == 6) + spawned->spr.pal = 6; + spawned->spr.pos.Z += 4; + spawned->vel.X = 1; + spawned->spr.scale = DVector2(0.375, 0.375); + spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2); } + } auto Owner = proj->GetOwner(); diff --git a/wadsrc/static/zscript/games/duke/actors/commander.zs b/wadsrc/static/zscript/games/duke/actors/commander.zs index 7eb8ff55f..a837b747b 100644 --- a/wadsrc/static/zscript/games/duke/actors/commander.zs +++ b/wadsrc/static/zscript/games/duke/actors/commander.zs @@ -9,6 +9,7 @@ class DukeCommander : DukeActor +FLOATING; +SHOOTCENTERED; +NORANDOMANGLEWHENBLOCKED; + +NOHITJIBS; gutsoffset -24; falladjustz 0; floating_floordist 8; diff --git a/wadsrc/static/zscript/games/duke/actors/dukeweapons/freezer.zs b/wadsrc/static/zscript/games/duke/actors/dukeweapons/freezer.zs index fbf722f0b..754e89648 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeweapons/freezer.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeweapons/freezer.zs @@ -12,6 +12,7 @@ class DukeFreezeBlast : DukeProjectile +FULLBRIGHT; +FREEZEDAMAGE; +REFLECTIVE; + +NOHITJIBS; } override bool postmoveeffect(CollisionData coll) diff --git a/wadsrc/static/zscript/games/duke/actors/greenslime.zs b/wadsrc/static/zscript/games/duke/actors/greenslime.zs index 256468028..c5c822cba 100644 --- a/wadsrc/static/zscript/games/duke/actors/greenslime.zs +++ b/wadsrc/static/zscript/games/duke/actors/greenslime.zs @@ -8,6 +8,7 @@ class DukeGreenSlime : DukeActor +DONTDIVEALIVE; +FORCESECTORSHADE; +SHRINKAUTOAIM; + +NOHITJIBS; sparkoffset -8; } diff --git a/wadsrc/static/zscript/games/duke/actors/mech.zs b/wadsrc/static/zscript/games/duke/actors/mech.zs index c09ca8c24..7798b6c83 100644 --- a/wadsrc/static/zscript/games/duke/actors/mech.zs +++ b/wadsrc/static/zscript/games/duke/actors/mech.zs @@ -9,6 +9,7 @@ class DukeDrone : DukeActor +FLOATING; +QUICKALTERANG; +NOJIBS; + +NOHITJIBS; falladjustz 0; floating_floordist 30; floating_ceilingdist 50; @@ -28,6 +29,7 @@ class DukeTurret : DukeActor +INTERNAL_BADGUY; +KILLCOUNT; +NOVERTICALMOVE; + +NOHITJIBS; aimoffset 32; } @@ -54,6 +56,7 @@ class DukeRotateGun : DukeActor +SHOOTCENTERED; +NOVERTICALMOVE; +MOVE_NOPLAYERINTERACT; + +NOHITJIBS; sparkoffset -8; aimoffset 32; shootzoffset 0; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs index 3a40ee2f8..f39dfb236 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs @@ -456,6 +456,7 @@ class RedneckMosquito : DukeActor +FLOATING; +QUICKALTERANG; +NOJIBS; + +NOHITJIBS; falladjustz 0; floating_floordist 30; floating_ceilingdist 50;