mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-26 10:44:17 +00:00
- cleanup of Duke's actor flags.
This commit is contained in:
parent
e892de21ec
commit
da5a92852f
7 changed files with 225 additions and 206 deletions
|
@ -2892,7 +2892,9 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
|
|||
DukeSectIterator it(actor->sector());
|
||||
while (auto a2 = it.Next())
|
||||
{
|
||||
if (a2->spr.statnum != 10 && a2->sector()->lotag != 2 && a2->spr.picnum != SECTOREFFECTOR && a2->spr.picnum != LOCATORS)
|
||||
if (a2->spr.statnum != STAT_PLAYER && a2->sector()->lotag != 2 &&
|
||||
(a2->spr.picnum != SECTOREFFECTOR || a2->spr.lotag == SE_49_POINT_LIGHT || a2->spr.lotag == SE_50_SPOT_LIGHT) &&
|
||||
a2->spr.picnum != LOCATORS)
|
||||
{
|
||||
rotatepoint(actor->spr.pos.vec2, a2->spr.pos.vec2, q, &a2->spr.pos.vec2);
|
||||
|
||||
|
@ -4035,7 +4037,7 @@ DDukeActor* ifhitsectors(sectortype* sect)
|
|||
DukeStatIterator it(STAT_MISC);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
if (actorflag(a1, SFLAG2_TRIGGER_IFHITSECTOR) && sect == a1->sector())
|
||||
if (actorflag(a1, SFLAG_TRIGGER_IFHITSECTOR) && sect == a1->sector())
|
||||
return a1;
|
||||
}
|
||||
return nullptr;
|
||||
|
@ -4836,16 +4838,14 @@ void getglobalz(DDukeActor* actor)
|
|||
{
|
||||
if( actor->spr.statnum != STAT_PROJECTILE)
|
||||
{
|
||||
actor->aflags |= SFLAG_NOFLOORSHADOW;
|
||||
//actor->dispicnum = -4; // No shadows on actors
|
||||
actor->dispicnum = -4; // No shadows on actors
|
||||
actor->spr.xvel = -256;
|
||||
ssp(actor, CLIPMASK0);
|
||||
}
|
||||
}
|
||||
else if(lz.actor()->isPlayer() && badguy(actor) )
|
||||
{
|
||||
actor->aflags |= SFLAG_NOFLOORSHADOW;
|
||||
//actor->dispicnum = -4; // No shadows on actors
|
||||
actor->dispicnum = -4; // No shadows on actors
|
||||
actor->spr.xvel = -256;
|
||||
ssp(actor, CLIPMASK0);
|
||||
}
|
||||
|
@ -5276,7 +5276,7 @@ void movefta(void)
|
|||
|
||||
// SFLAG_MOVEFTA_CHECKSEE is set for all actors in Duke.
|
||||
if (act->spr.pal == 33 || actorflag(act, SFLAG_MOVEFTA_CHECKSEE) ||
|
||||
(actorflag(act, SFLAG2_MOVEFTA_CHECKSEEWITHPAL8) && act->spr.pal == 8) ||
|
||||
(actorflag(act, SFLAG_MOVEFTA_CHECKSEEWITHPAL8) && act->spr.pal == 8) ||
|
||||
(bcos(act->spr.ang) * (px - sx) + bsin(act->spr.ang) * (py - sy) >= 0))
|
||||
{
|
||||
int r1 = krand();
|
||||
|
@ -5294,7 +5294,7 @@ void movefta(void)
|
|||
|
||||
if (canseeme)
|
||||
{
|
||||
if (actorflag(act, SFLAG2_MOVEFTA_MAKESTANDABLE))
|
||||
if (actorflag(act, SFLAG_MOVEFTA_MAKESTANDABLE))
|
||||
{
|
||||
if (act->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->sector()->ceilingshade;
|
||||
|
@ -5320,7 +5320,7 @@ void movefta(void)
|
|||
else act->spr.shade = act->sector()->floorshade;
|
||||
|
||||
// wakeup is an RR feature, this flag will later allow it to use in Duke, too.
|
||||
if (actorflag(act, SFLAG2_MOVEFTA_WAKEUPCHECK))
|
||||
if (actorflag(act, SFLAG_MOVEFTA_WAKEUPCHECK))
|
||||
{
|
||||
if (wakeup(act, p))
|
||||
{
|
||||
|
|
|
@ -719,7 +719,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
|
|||
if (!isRRRA() && h->spr.picnum == SBMOVE)
|
||||
t->shade = -127;
|
||||
|
||||
if (h->spr.statnum == 13 || badguy(h) || (h->spr.picnum == APLAYER && h->GetOwner()))
|
||||
if (h->spr.statnum == STAT_DUMMYPLAYER || badguy(h) || (h->spr.picnum == APLAYER && h->GetOwner()))
|
||||
if ((h->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0 && t->statnum != 99)
|
||||
if (h->spr.picnum != EXPLOSION2 && h->spr.picnum != DOMELITE && h->spr.picnum != TORNADO && h->spr.picnum != EXPLOSION3 && (h->spr.picnum != SBMOVE || isRRRA()))
|
||||
{
|
||||
|
|
|
@ -291,28 +291,32 @@ enum amoveflags_t
|
|||
antifaceplayerslow = 32768
|
||||
};
|
||||
|
||||
enum aflags_t
|
||||
{
|
||||
AFLAG_USEACTIVATOR = 0x00000001,
|
||||
};
|
||||
|
||||
enum sflags_t
|
||||
{
|
||||
SFLAG_SHADOW = 0x00000001,
|
||||
SFLAG_NVG = 0x00000002,
|
||||
SFLAG_INVENTORY = 0x00000004,
|
||||
SFLAG_ADULT = 0x00000008,
|
||||
SFLAG_SHRINKAUTOAIM = 0x00000010,
|
||||
SFLAG_BADGUY = 0x00000020,
|
||||
SFLAG_NOPAL = 0x00000040,
|
||||
SFLAG_FORCEAUTOAIM = 0x00000080,
|
||||
SFLAG_BOSS = 0x00000100,
|
||||
SFLAG_USEACTIVATOR = 0x00000200,
|
||||
SFLAG_NOFLOORSHADOW = 0x00001000, // for temp. internal use, per-tile flag not checked
|
||||
SFLAG_BADGUYSTAYPUT = 0x00008000,
|
||||
SFLAG_GREENSLIMEFOOD = 0x00800000,
|
||||
SFLAG_NODAMAGEPUSH = 0x00100000,
|
||||
SFLAG_NOWATERDIP = 0x00200000,
|
||||
SFLAG_INTERNAL_BADGUY = 0x08000000, // a separate flag is needed for the internal ones because SFLAG_BADGUY has additional semantics.
|
||||
SFLAG_KILLCOUNT = 0x10000000,
|
||||
SFLAG_NOCANSEECHECK = 0x20000000,
|
||||
SFLAG_HITRADIUSCHECK = 0x40000000,
|
||||
SFLAG_MOVEFTA_CHECKSEE = 0x80000000,
|
||||
SFLAG_INVENTORY = 0x00000001,
|
||||
SFLAG_SHRINKAUTOAIM = 0x00000002,
|
||||
SFLAG_BADGUY = 0x00000004,
|
||||
SFLAG_FORCEAUTOAIM = 0x00000008,
|
||||
SFLAG_BOSS = 0x00000010,
|
||||
SFLAG_BADGUYSTAYPUT = 0x00000020,
|
||||
SFLAG_GREENSLIMEFOOD = 0x00800040,
|
||||
SFLAG_NODAMAGEPUSH = 0x00000080,
|
||||
SFLAG_NOWATERDIP = 0x00000100,
|
||||
SFLAG_INTERNAL_BADGUY = 0x00000200, // a separate flag is needed for the internal ones because SFLAG_BADGUY has additional semantics.
|
||||
SFLAG_KILLCOUNT = 0x00000400,
|
||||
SFLAG_NOCANSEECHECK = 0x00000800,
|
||||
SFLAG_HITRADIUSCHECK = 0x00001000,
|
||||
SFLAG_MOVEFTA_CHECKSEE = 0x00002000,
|
||||
SFLAG_MOVEFTA_MAKESTANDABLE = 0x00004000,
|
||||
SFLAG_TRIGGER_IFHITSECTOR = 0x00008000,
|
||||
SFLAG_MOVEFTA_WAKEUPCHECK = 0x00010000,
|
||||
SFLAG_MOVEFTA_CHECKSEEWITHPAL8 = 0x00020000, // let's hope this can be done better later. For now this was what blocked merging the Duke and RR variants of movefta
|
||||
|
||||
};
|
||||
|
||||
using EDukeFlags1 = TFlags<sflags_t, uint32_t>;
|
||||
|
@ -320,10 +324,6 @@ DEFINE_TFLAGS_OPERATORS(EDukeFlags1)
|
|||
|
||||
enum sflags2_t
|
||||
{
|
||||
SFLAG2_MOVEFTA_MAKESTANDABLE = 0x00000001,
|
||||
SFLAG2_TRIGGER_IFHITSECTOR = 0x00000002,
|
||||
SFLAG2_MOVEFTA_WAKEUPCHECK = 0x00000004,
|
||||
SFLAG2_MOVEFTA_CHECKSEEWITHPAL8 = 0x00000008, // let's hope this can be done better later. For now this was what blocked merging the Duke and RR variants of movefta
|
||||
|
||||
};
|
||||
|
||||
|
@ -332,7 +332,8 @@ DEFINE_TFLAGS_OPERATORS(EDukeFlags2)
|
|||
|
||||
enum
|
||||
{
|
||||
TFLAG_WALLSWITCH = 1
|
||||
TFLAG_WALLSWITCH = 1,
|
||||
TFLAG_ADULT = 2,
|
||||
};
|
||||
|
||||
enum
|
||||
|
|
|
@ -40,118 +40,49 @@ BEGIN_DUKE_NS
|
|||
|
||||
void initactorflags_d()
|
||||
{
|
||||
gs.actorinfo[COMMANDER].gutsoffset = -(24 << 8);
|
||||
|
||||
for (auto &fa : gs.actorinfo)
|
||||
{
|
||||
fa.falladjustz = 24 << 8;
|
||||
}
|
||||
gs.actorinfo[OCTABRAIN].falladjustz = gs.actorinfo[COMMANDER].falladjustz = gs.actorinfo[DRONE].falladjustz = 0;
|
||||
|
||||
setflag(SFLAG_INTERNAL_BADGUY, {
|
||||
SHARK,
|
||||
RECON,
|
||||
DRONE,
|
||||
LIZTROOPONTOILET,
|
||||
LIZTROOPJUSTSIT,
|
||||
LIZTROOPSTAYPUT,
|
||||
LIZTROOPSHOOT,
|
||||
LIZTROOPJETPACK,
|
||||
LIZTROOPDUCKING,
|
||||
LIZTROOPRUNNING,
|
||||
LIZTROOP,
|
||||
OCTABRAIN,
|
||||
COMMANDER,
|
||||
COMMANDERSTAYPUT,
|
||||
PIGCOP,
|
||||
EGG,
|
||||
PIGCOPSTAYPUT,
|
||||
PIGCOPDIVE,
|
||||
LIZMAN,
|
||||
LIZMANSPITTING,
|
||||
LIZMANFEEDING,
|
||||
LIZMANJUMP,
|
||||
ORGANTIC,
|
||||
BOSS1,
|
||||
BOSS2,
|
||||
BOSS3,
|
||||
BOSS4,
|
||||
GREENSLIME,
|
||||
GREENSLIME+1,
|
||||
GREENSLIME+2,
|
||||
GREENSLIME+3,
|
||||
GREENSLIME+4,
|
||||
GREENSLIME+5,
|
||||
GREENSLIME+6,
|
||||
GREENSLIME+7,
|
||||
RAT,
|
||||
ROTATEGUN });
|
||||
|
||||
// Some flags taken from RedNukem's init code. This is a good start as any to reduce the insane dependency on tile numbers for making decisions in the play code. A lot more will be added here later.
|
||||
setflag(SFLAG_NODAMAGEPUSH, { TANK, BOSS1, BOSS2, BOSS3, BOSS4, RECON, ROTATEGUN });
|
||||
setflag(SFLAG_BOSS, { BOSS1, BOSS2, BOSS3, BOSS4, BOSS4STAYPUT, BOSS1STAYPUT });
|
||||
if (isWorldTour()) setflag(SFLAG_BOSS, { BOSS2STAYPUT, BOSS3STAYPUT, BOSS5, BOSS5STAYPUT });
|
||||
setflag(SFLAG_NOWATERDIP, { OCTABRAIN, COMMANDER, DRONE });
|
||||
setflag(SFLAG_GREENSLIMEFOOD, { LIZTROOP, LIZMAN, PIGCOP, NEWBEAST });
|
||||
|
||||
if (isWorldTour())
|
||||
{
|
||||
setflag(SFLAG_INTERNAL_BADGUY, { FIREFLY });
|
||||
setflag(SFLAG_INTERNAL_BADGUY|SFLAG_NODAMAGEPUSH|SFLAG_BOSS, { BOSS5 });
|
||||
}
|
||||
|
||||
settileflag(TFLAG_WALLSWITCH, {
|
||||
HANDPRINTSWITCH,
|
||||
HANDPRINTSWITCH+1,
|
||||
HANDPRINTSWITCH + 1,
|
||||
ALIENSWITCH,
|
||||
ALIENSWITCH+1,
|
||||
ALIENSWITCH + 1,
|
||||
MULTISWITCH,
|
||||
MULTISWITCH+1,
|
||||
MULTISWITCH+2,
|
||||
MULTISWITCH+3,
|
||||
MULTISWITCH + 1,
|
||||
MULTISWITCH + 2,
|
||||
MULTISWITCH + 3,
|
||||
ACCESSSWITCH,
|
||||
ACCESSSWITCH2,
|
||||
PULLSWITCH,
|
||||
PULLSWITCH+1,
|
||||
PULLSWITCH + 1,
|
||||
HANDSWITCH,
|
||||
HANDSWITCH+1,
|
||||
HANDSWITCH + 1,
|
||||
SLOTDOOR,
|
||||
SLOTDOOR+1,
|
||||
SLOTDOOR + 1,
|
||||
LIGHTSWITCH,
|
||||
LIGHTSWITCH+1,
|
||||
LIGHTSWITCH + 1,
|
||||
SPACELIGHTSWITCH,
|
||||
SPACELIGHTSWITCH+1,
|
||||
SPACELIGHTSWITCH + 1,
|
||||
SPACEDOORSWITCH,
|
||||
SPACEDOORSWITCH+1,
|
||||
SPACEDOORSWITCH + 1,
|
||||
FRANKENSTINESWITCH,
|
||||
FRANKENSTINESWITCH+1,
|
||||
FRANKENSTINESWITCH + 1,
|
||||
LIGHTSWITCH2,
|
||||
LIGHTSWITCH2+1,
|
||||
LIGHTSWITCH2 + 1,
|
||||
POWERSWITCH1,
|
||||
POWERSWITCH1+1,
|
||||
POWERSWITCH1 + 1,
|
||||
LOCKSWITCH1,
|
||||
LOCKSWITCH1+1,
|
||||
LOCKSWITCH1 + 1,
|
||||
POWERSWITCH2,
|
||||
POWERSWITCH2+1,
|
||||
POWERSWITCH2 + 1,
|
||||
DIPSWITCH,
|
||||
DIPSWITCH+1,
|
||||
DIPSWITCH + 1,
|
||||
DIPSWITCH2,
|
||||
DIPSWITCH2+1,
|
||||
DIPSWITCH2 + 1,
|
||||
TECHSWITCH,
|
||||
TECHSWITCH+1,
|
||||
TECHSWITCH + 1,
|
||||
DIPSWITCH3,
|
||||
DIPSWITCH3+1});
|
||||
DIPSWITCH3 + 1 });
|
||||
|
||||
setflag(SFLAG_INVENTORY, {
|
||||
FIRSTAID,
|
||||
STEROIDS,
|
||||
HEATSENSOR,
|
||||
BOOTS,
|
||||
JETPACK,
|
||||
HOLODUKE,
|
||||
AIRTANK });
|
||||
|
||||
setflag(SFLAG_ADULT, {
|
||||
settileflag(TFLAG_ADULT, {
|
||||
FEM1,
|
||||
FEM2,
|
||||
FEM3,
|
||||
|
@ -213,6 +144,76 @@ void initactorflags_d()
|
|||
4498,
|
||||
4957 });
|
||||
|
||||
|
||||
gs.actorinfo[COMMANDER].gutsoffset = -(24 << 8);
|
||||
|
||||
for (auto &fa : gs.actorinfo)
|
||||
{
|
||||
fa.falladjustz = 24 << 8;
|
||||
}
|
||||
gs.actorinfo[OCTABRAIN].falladjustz = gs.actorinfo[COMMANDER].falladjustz = gs.actorinfo[DRONE].falladjustz = 0;
|
||||
|
||||
setflag(SFLAG_INTERNAL_BADGUY, {
|
||||
SHARK,
|
||||
RECON,
|
||||
DRONE,
|
||||
LIZTROOPONTOILET,
|
||||
LIZTROOPJUSTSIT,
|
||||
LIZTROOPSTAYPUT,
|
||||
LIZTROOPSHOOT,
|
||||
LIZTROOPJETPACK,
|
||||
LIZTROOPDUCKING,
|
||||
LIZTROOPRUNNING,
|
||||
LIZTROOP,
|
||||
OCTABRAIN,
|
||||
COMMANDER,
|
||||
COMMANDERSTAYPUT,
|
||||
PIGCOP,
|
||||
EGG,
|
||||
PIGCOPSTAYPUT,
|
||||
PIGCOPDIVE,
|
||||
LIZMAN,
|
||||
LIZMANSPITTING,
|
||||
LIZMANFEEDING,
|
||||
LIZMANJUMP,
|
||||
ORGANTIC,
|
||||
BOSS1,
|
||||
BOSS2,
|
||||
BOSS3,
|
||||
BOSS4,
|
||||
GREENSLIME,
|
||||
GREENSLIME+1,
|
||||
GREENSLIME+2,
|
||||
GREENSLIME+3,
|
||||
GREENSLIME+4,
|
||||
GREENSLIME+5,
|
||||
GREENSLIME+6,
|
||||
GREENSLIME+7,
|
||||
RAT,
|
||||
ROTATEGUN });
|
||||
|
||||
// Some flags taken from RedNukem's init code. This is a good start as any to reduce the insane dependency on tile numbers for making decisions in the play code. A lot more will be added here later.
|
||||
setflag(SFLAG_NODAMAGEPUSH, { TANK, BOSS1, BOSS2, BOSS3, BOSS4, RECON, ROTATEGUN });
|
||||
setflag(SFLAG_BOSS, { BOSS1, BOSS2, BOSS3, BOSS4, BOSS4STAYPUT, BOSS1STAYPUT });
|
||||
if (isWorldTour()) setflag(SFLAG_BOSS, { BOSS2STAYPUT, BOSS3STAYPUT, BOSS5, BOSS5STAYPUT });
|
||||
setflag(SFLAG_NOWATERDIP, { OCTABRAIN, COMMANDER, DRONE });
|
||||
setflag(SFLAG_GREENSLIMEFOOD, { LIZTROOP, LIZMAN, PIGCOP, NEWBEAST });
|
||||
|
||||
if (isWorldTour())
|
||||
{
|
||||
setflag(SFLAG_INTERNAL_BADGUY, { FIREFLY });
|
||||
setflag(SFLAG_INTERNAL_BADGUY|SFLAG_NODAMAGEPUSH|SFLAG_BOSS, { BOSS5 });
|
||||
}
|
||||
|
||||
setflag(SFLAG_INVENTORY, {
|
||||
FIRSTAID,
|
||||
STEROIDS,
|
||||
HEATSENSOR,
|
||||
BOOTS,
|
||||
JETPACK,
|
||||
HOLODUKE,
|
||||
AIRTANK });
|
||||
|
||||
setflag(SFLAG_SHRINKAUTOAIM, {
|
||||
GREENSLIME,
|
||||
GREENSLIME + 1,
|
||||
|
@ -243,9 +244,9 @@ void initactorflags_d()
|
|||
STRIPEBALL
|
||||
});
|
||||
|
||||
setflag(SFLAG2_TRIGGER_IFHITSECTOR, { EXPLOSION2 });
|
||||
setflag(SFLAG_TRIGGER_IFHITSECTOR, { EXPLOSION2 });
|
||||
|
||||
setflag(SFLAG2_MOVEFTA_MAKESTANDABLE, {
|
||||
setflag(SFLAG_MOVEFTA_MAKESTANDABLE, {
|
||||
RUBBERCAN,
|
||||
EXPLODINGBARREL,
|
||||
WOODENHORSE,
|
||||
|
|
|
@ -34,6 +34,79 @@ BEGIN_DUKE_NS
|
|||
|
||||
void initactorflags_r()
|
||||
{
|
||||
settileflag(TFLAG_WALLSWITCH, {
|
||||
HANDPRINTSWITCH,
|
||||
HANDPRINTSWITCH + 1,
|
||||
ALIENSWITCH,
|
||||
ALIENSWITCH + 1,
|
||||
MULTISWITCH,
|
||||
MULTISWITCH + 1,
|
||||
MULTISWITCH + 2,
|
||||
MULTISWITCH + 3,
|
||||
ACCESSSWITCH,
|
||||
ACCESSSWITCH2,
|
||||
PULLSWITCH,
|
||||
PULLSWITCH + 1,
|
||||
HANDSWITCH,
|
||||
HANDSWITCH + 1,
|
||||
SLOTDOOR,
|
||||
SLOTDOOR + 1,
|
||||
LIGHTSWITCH,
|
||||
LIGHTSWITCH + 1,
|
||||
SPACELIGHTSWITCH,
|
||||
SPACELIGHTSWITCH + 1,
|
||||
SPACEDOORSWITCH,
|
||||
SPACEDOORSWITCH + 1,
|
||||
FRANKENSTINESWITCH,
|
||||
FRANKENSTINESWITCH + 1,
|
||||
LIGHTSWITCH2,
|
||||
LIGHTSWITCH2 + 1,
|
||||
POWERSWITCH1,
|
||||
POWERSWITCH1 + 1,
|
||||
LOCKSWITCH1,
|
||||
LOCKSWITCH1 + 1,
|
||||
POWERSWITCH2,
|
||||
POWERSWITCH2 + 1,
|
||||
DIPSWITCH,
|
||||
DIPSWITCH + 1,
|
||||
DIPSWITCH2,
|
||||
DIPSWITCH2 + 1,
|
||||
TECHSWITCH,
|
||||
TECHSWITCH + 1,
|
||||
DIPSWITCH3,
|
||||
DIPSWITCH3 + 1,
|
||||
NUKEBUTTON,
|
||||
NUKEBUTTON + 1 });
|
||||
if (isRRRA()) settileflag(TFLAG_WALLSWITCH, {
|
||||
MULTISWITCH2,
|
||||
MULTISWITCH2 + 1,
|
||||
MULTISWITCH2 + 2,
|
||||
MULTISWITCH2 + 3,
|
||||
RRTILE8464,
|
||||
RRTILE8464 + 1 });
|
||||
|
||||
settileflag(TFLAG_ADULT, {
|
||||
FEM10,
|
||||
NAKED1,
|
||||
FEMMAG1,
|
||||
FEMMAG2,
|
||||
STATUE,
|
||||
STATUEFLASH,
|
||||
OOZ,
|
||||
WALLBLOOD1,
|
||||
WALLBLOOD2,
|
||||
WALLBLOOD3,
|
||||
WALLBLOOD4,
|
||||
WALLBLOOD5,
|
||||
SUSHIPLATE1,
|
||||
SUSHIPLATE2,
|
||||
SUSHIPLATE3,
|
||||
SUSHIPLATE4,
|
||||
DOLPHIN1,
|
||||
DOLPHIN2,
|
||||
TOUGHGAL });
|
||||
|
||||
|
||||
for (auto &fa : gs.actorinfo)
|
||||
{
|
||||
fa.falladjustz = 24 << 8;
|
||||
|
@ -117,57 +190,6 @@ void initactorflags_r()
|
|||
setflag(SFLAG_NODAMAGEPUSH, { HULK, SBMOVE });
|
||||
}
|
||||
|
||||
settileflag(TFLAG_WALLSWITCH, {
|
||||
HANDPRINTSWITCH,
|
||||
HANDPRINTSWITCH+1,
|
||||
ALIENSWITCH,
|
||||
ALIENSWITCH+1,
|
||||
MULTISWITCH,
|
||||
MULTISWITCH+1,
|
||||
MULTISWITCH+2,
|
||||
MULTISWITCH+3,
|
||||
ACCESSSWITCH,
|
||||
ACCESSSWITCH2,
|
||||
PULLSWITCH,
|
||||
PULLSWITCH+1,
|
||||
HANDSWITCH,
|
||||
HANDSWITCH+1,
|
||||
SLOTDOOR,
|
||||
SLOTDOOR+1,
|
||||
LIGHTSWITCH,
|
||||
LIGHTSWITCH+1,
|
||||
SPACELIGHTSWITCH,
|
||||
SPACELIGHTSWITCH+1,
|
||||
SPACEDOORSWITCH,
|
||||
SPACEDOORSWITCH+1,
|
||||
FRANKENSTINESWITCH,
|
||||
FRANKENSTINESWITCH+1,
|
||||
LIGHTSWITCH2,
|
||||
LIGHTSWITCH2+1,
|
||||
POWERSWITCH1,
|
||||
POWERSWITCH1+1,
|
||||
LOCKSWITCH1,
|
||||
LOCKSWITCH1+1,
|
||||
POWERSWITCH2,
|
||||
POWERSWITCH2+1,
|
||||
DIPSWITCH,
|
||||
DIPSWITCH+1,
|
||||
DIPSWITCH2,
|
||||
DIPSWITCH2+1,
|
||||
TECHSWITCH,
|
||||
TECHSWITCH+1,
|
||||
DIPSWITCH3,
|
||||
DIPSWITCH3+1,
|
||||
NUKEBUTTON,
|
||||
NUKEBUTTON+1});
|
||||
if (isRRRA()) settileflag(TFLAG_WALLSWITCH, {
|
||||
MULTISWITCH2,
|
||||
MULTISWITCH2+1,
|
||||
MULTISWITCH2+2,
|
||||
MULTISWITCH2+3,
|
||||
RRTILE8464,
|
||||
RRTILE8464+1});
|
||||
|
||||
setflag(SFLAG_INVENTORY, {
|
||||
FIRSTAID,
|
||||
STEROIDS,
|
||||
|
@ -177,27 +199,6 @@ void initactorflags_r()
|
|||
HOLODUKE,
|
||||
AIRTANK });
|
||||
|
||||
setflag(SFLAG_ADULT, {
|
||||
FEM10,
|
||||
NAKED1,
|
||||
FEMMAG1,
|
||||
FEMMAG2,
|
||||
STATUE,
|
||||
STATUEFLASH,
|
||||
OOZ,
|
||||
WALLBLOOD1,
|
||||
WALLBLOOD2,
|
||||
WALLBLOOD3,
|
||||
WALLBLOOD4,
|
||||
WALLBLOOD5,
|
||||
SUSHIPLATE1,
|
||||
SUSHIPLATE2,
|
||||
SUSHIPLATE3,
|
||||
SUSHIPLATE4,
|
||||
DOLPHIN1,
|
||||
DOLPHIN2,
|
||||
TOUGHGAL });
|
||||
|
||||
setflag(SFLAG_HITRADIUSCHECK, {
|
||||
STATUEFLASH,
|
||||
BOWLINGPIN,
|
||||
|
@ -212,9 +213,9 @@ void initactorflags_r()
|
|||
CHEERSTAYPUT, MINIONBOAT, HULKBOAT, CHEERBOAT, RABBIT, COOTPLAY, BILLYPLAY, MAKEOUT, MAMA });
|
||||
}
|
||||
|
||||
setflag(SFLAG2_TRIGGER_IFHITSECTOR, { EXPLOSION2, EXPLOSION3 });
|
||||
setflag(SFLAG_TRIGGER_IFHITSECTOR, { EXPLOSION2, EXPLOSION3 });
|
||||
|
||||
setflag(SFLAG2_MOVEFTA_MAKESTANDABLE, {
|
||||
setflag(SFLAG_MOVEFTA_MAKESTANDABLE, {
|
||||
RUBBERCAN,
|
||||
EXPLODINGBARREL,
|
||||
WOODENHORSE,
|
||||
|
@ -230,12 +231,12 @@ void initactorflags_r()
|
|||
// Animals were not supposed to have this, but due to a coding bug the logic was unconditional for everything in the game.
|
||||
for (auto& ainf : gs.actorinfo)
|
||||
{
|
||||
ainf.flags2 |= SFLAG2_MOVEFTA_WAKEUPCHECK;
|
||||
ainf.flags |= SFLAG_MOVEFTA_WAKEUPCHECK;
|
||||
}
|
||||
|
||||
if (isRRRA())
|
||||
{
|
||||
setflag(SFLAG2_MOVEFTA_CHECKSEEWITHPAL8, { MINION });
|
||||
setflag(SFLAG_MOVEFTA_CHECKSEEWITHPAL8, { MINION });
|
||||
}
|
||||
|
||||
gs.actorinfo[RPG2].flags |= SFLAG_FORCEAUTOAIM;
|
||||
|
|
|
@ -913,7 +913,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
case SE_16_REACTOR://That rotating blocker reactor thing
|
||||
case SE_26://ESCELATOR
|
||||
case SE_30_TWO_WAY_TRAIN://No rotational subways
|
||||
|
||||
{
|
||||
if (actor->spr.lotag == 0)
|
||||
{
|
||||
if (sectp->lotag == 30)
|
||||
|
@ -926,7 +926,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
|
||||
|
||||
bool found = false;
|
||||
if (actors) for(auto act2 : *actors)
|
||||
if (actors) for (auto act2 : *actors)
|
||||
{
|
||||
if (act2->spr.statnum < MAXSTATUS)
|
||||
if (act2->spr.picnum == SECTOREFFECTOR &&
|
||||
|
@ -1017,6 +1017,21 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
actor->temp_data[5] = actor->sector()->getfloorslope();
|
||||
actor->sector()->setfloorslope(0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SE_49_POINT_LIGHT:
|
||||
case SE_50_SPOT_LIGHT:
|
||||
{
|
||||
DukeSectIterator it(actor->sector());
|
||||
while (auto itActor = it.Next())
|
||||
{
|
||||
if (itActor->spr.picnum == ACTIVATOR || itActor->spr.picnum == ACTIVATORLOCKED)
|
||||
actor->aflags |= AFLAG_USEACTIVATOR;
|
||||
}
|
||||
ChangeActorStat(actor, STAT_LIGHT);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
switch (actor->spr.lotag)
|
||||
|
|
|
@ -31,9 +31,10 @@ class DDukeActor : public DCoreActor
|
|||
DECLARE_CLASS(DDukeActor, DCoreActor)
|
||||
HAS_OBJECT_POINTERS
|
||||
public:
|
||||
TObjPtr<DDukeActor*> ownerActor, hitOwnerActor;
|
||||
|
||||
uint8_t cgg;
|
||||
uint8_t spriteextra; // moved here for easier maintenance. This was originally a hacked in field in the sprite structure called 'filler'.
|
||||
TObjPtr<DDukeActor*> ownerActor, hitOwnerActor;
|
||||
short attackertype, ang, extra, movflag;
|
||||
short tempang, dispicnum;
|
||||
short timetosleep;
|
||||
|
|
Loading…
Reference in a new issue