- 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, MAGMAIMMUNE, 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_MAGMAIMMUNE = 0x08000000,
SFLAG3_DESTRUCTOIMMUNE = 0x10000000,
SFLAG3_NOHITJIBS = 0x20000000,
};
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 ((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();

View file

@ -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();

View file

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

View file

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

View file

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

View file

@ -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;

View file

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