- NOHITJIBS flag.

This commit is contained in:
Christoph Oelckers 2022-12-30 22:09:33 +01:00
parent 91ee3cb7b8
commit fc0c8e0787
9 changed files with 31 additions and 24 deletions

View file

@ -195,6 +195,7 @@ static FFlagDef DukeActorFlagDefs[] =
DEFINE_FLAG(SFLAG3, MOVE_NOPLAYERINTERACT, DDukeActor, flags3), DEFINE_FLAG(SFLAG3, MOVE_NOPLAYERINTERACT, DDukeActor, flags3),
DEFINE_FLAG(SFLAG3, MAGMAIMMUNE, DDukeActor, flags3), DEFINE_FLAG(SFLAG3, MAGMAIMMUNE, DDukeActor, flags3),
DEFINE_FLAG(SFLAG3, DESTRUCTOIMMUNE, DDukeActor, flags3), DEFINE_FLAG(SFLAG3, DESTRUCTOIMMUNE, DDukeActor, flags3),
DEFINE_FLAG(SFLAG3, NOHITJIBS, DDukeActor, flags3),
}; };

View file

@ -440,6 +440,7 @@ enum sflags3_t
SFLAG3_MOVE_NOPLAYERINTERACT = 0x04000000, SFLAG3_MOVE_NOPLAYERINTERACT = 0x04000000,
SFLAG3_MAGMAIMMUNE = 0x08000000, SFLAG3_MAGMAIMMUNE = 0x08000000,
SFLAG3_DESTRUCTOIMMUNE = 0x10000000, SFLAG3_DESTRUCTOIMMUNE = 0x10000000,
SFLAG3_NOHITJIBS = 0x20000000,
}; };
using EDukeFlags3 = TFlags<sflags3_t, uint32_t>; using EDukeFlags3 = TFlags<sflags3_t, uint32_t>;

View file

@ -173,20 +173,19 @@ void checkhitdefault_d(DDukeActor* targ, DDukeActor* proj)
if (proj->spr.picnum == DTILE_RPG) proj->spr.extra <<= 1; 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 (!(targ->flags3 & SFLAG3_NOHITJIBS) && !(proj->flags3 & SFLAG3_NOHITJIBS))
if (proj->spr.picnum != DTILE_FREEZEBLAST) {
auto spawned = spawn(proj, DukeJibs6Class);
if (spawned)
{ {
auto spawned = spawn(proj, DukeJibs6Class); if (proj->spr.pal == 6)
if (spawned) spawned->spr.pal = 6;
{ spawned->spr.pos.Z += 4;
if (proj->spr.pal == 6) spawned->vel.X = 1;
spawned->spr.pal = 6; spawned->spr.scale = DVector2(0.375, 0.375);
spawned->spr.pos.Z += 4; spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2);
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(); auto Owner = proj->GetOwner();

View file

@ -171,20 +171,19 @@ void checkhitdefault_r(DDukeActor* targ, DDukeActor* proj)
if (proj->spr.picnum == RTILE_RPG) proj->spr.extra <<= 1; if (proj->spr.picnum == RTILE_RPG) proj->spr.extra <<= 1;
else if (isRRRA() && proj->spr.picnum == RTILE_RPG2) proj->spr.extra <<= 1; else if (isRRRA() && proj->spr.picnum == RTILE_RPG2) proj->spr.extra <<= 1;
if ((targ->spr.picnum != RTILE_DRONE)) if (!(targ->flags3 & SFLAG3_NOHITJIBS) && !(proj->flags3 & SFLAG3_NOHITJIBS))
if (proj->spr.picnum != RTILE_FREEZEBLAST) {
auto spawned = spawn(proj, DukeJibs6Class);
if (spawned)
{ {
auto spawned = spawn(proj, DukeJibs6Class); if (proj->spr.pal == 6)
if (spawned) spawned->spr.pal = 6;
{ spawned->spr.pos.Z += 4;
if (proj->spr.pal == 6) spawned->vel.X = 1;
spawned->spr.pal = 6; spawned->spr.scale = DVector2(0.375, 0.375);
spawned->spr.pos.Z += 4; spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2);
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(); auto Owner = proj->GetOwner();

View file

@ -9,6 +9,7 @@ class DukeCommander : DukeActor
+FLOATING; +FLOATING;
+SHOOTCENTERED; +SHOOTCENTERED;
+NORANDOMANGLEWHENBLOCKED; +NORANDOMANGLEWHENBLOCKED;
+NOHITJIBS;
gutsoffset -24; gutsoffset -24;
falladjustz 0; falladjustz 0;
floating_floordist 8; floating_floordist 8;

View file

@ -12,6 +12,7 @@ class DukeFreezeBlast : DukeProjectile
+FULLBRIGHT; +FULLBRIGHT;
+FREEZEDAMAGE; +FREEZEDAMAGE;
+REFLECTIVE; +REFLECTIVE;
+NOHITJIBS;
} }
override bool postmoveeffect(CollisionData coll) override bool postmoveeffect(CollisionData coll)

View file

@ -8,6 +8,7 @@ class DukeGreenSlime : DukeActor
+DONTDIVEALIVE; +DONTDIVEALIVE;
+FORCESECTORSHADE; +FORCESECTORSHADE;
+SHRINKAUTOAIM; +SHRINKAUTOAIM;
+NOHITJIBS;
sparkoffset -8; sparkoffset -8;
} }

View file

@ -9,6 +9,7 @@ class DukeDrone : DukeActor
+FLOATING; +FLOATING;
+QUICKALTERANG; +QUICKALTERANG;
+NOJIBS; +NOJIBS;
+NOHITJIBS;
falladjustz 0; falladjustz 0;
floating_floordist 30; floating_floordist 30;
floating_ceilingdist 50; floating_ceilingdist 50;
@ -28,6 +29,7 @@ class DukeTurret : DukeActor
+INTERNAL_BADGUY; +INTERNAL_BADGUY;
+KILLCOUNT; +KILLCOUNT;
+NOVERTICALMOVE; +NOVERTICALMOVE;
+NOHITJIBS;
aimoffset 32; aimoffset 32;
} }
@ -54,6 +56,7 @@ class DukeRotateGun : DukeActor
+SHOOTCENTERED; +SHOOTCENTERED;
+NOVERTICALMOVE; +NOVERTICALMOVE;
+MOVE_NOPLAYERINTERACT; +MOVE_NOPLAYERINTERACT;
+NOHITJIBS;
sparkoffset -8; sparkoffset -8;
aimoffset 32; aimoffset 32;
shootzoffset 0; shootzoffset 0;

View file

@ -456,6 +456,7 @@ class RedneckMosquito : DukeActor
+FLOATING; +FLOATING;
+QUICKALTERANG; +QUICKALTERANG;
+NOJIBS; +NOJIBS;
+NOHITJIBS;
falladjustz 0; falladjustz 0;
floating_floordist 30; floating_floordist 30;
floating_ceilingdist 50; floating_ceilingdist 50;