mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 20:42:11 +00:00
- two more flags to get sprite indices out of movecrack.
# Conflicts: # source/games/duke/src/constants.h
This commit is contained in:
parent
d3f2d50088
commit
fba8f54bb3
8 changed files with 28 additions and 22 deletions
|
@ -955,7 +955,7 @@ void detonate(DDukeActor *actor, int explosion)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void movemasterswitch(DDukeActor *actor, int spectype1, int spectype2)
|
||||
void movemasterswitch(DDukeActor *actor)
|
||||
{
|
||||
if (actor->spr.yvel == 1)
|
||||
{
|
||||
|
@ -985,7 +985,7 @@ void movemasterswitch(DDukeActor *actor, int spectype1, int spectype2)
|
|||
}
|
||||
else if (effector->spr.statnum == STAT_STANDABLE)
|
||||
{
|
||||
if (effector->spr.picnum == spectype1 || effector->spr.picnum == spectype2) // SEENINE and OOZFILTER
|
||||
if (actorflag(effector, SFLAG2_BRIGHTEXPLODE)) // SEENINE and OOZFILTER
|
||||
{
|
||||
effector->spr.shade = -31;
|
||||
}
|
||||
|
|
|
@ -725,7 +725,7 @@ void movefallers_d(void)
|
|||
j = fi.ifhitbyweapon(act);
|
||||
if (j >= 0)
|
||||
{
|
||||
if (j == FIREEXT || j == RPG || j == RADIUSEXPLOSION || j == SEENINE || j == OOZFILTER)
|
||||
if (gs.actorinfo[j].flags2 & SFLAG2_EXPLOSIVE)
|
||||
{
|
||||
if (act->spr.extra <= 0)
|
||||
{
|
||||
|
@ -984,12 +984,12 @@ static void movecrack(DDukeActor* actor)
|
|||
actor->temp_data[0] = actor->spr.cstat;
|
||||
actor->temp_data[1] = actor->spr.ang;
|
||||
int j = fi.ifhitbyweapon(actor);
|
||||
if (j == FIREEXT || j == RPG || j == RADIUSEXPLOSION || j == SEENINE || j == OOZFILTER)
|
||||
if (gs.actorinfo[j].flags2 & SFLAG2_EXPLOSIVE)
|
||||
{
|
||||
DukeStatIterator it(STAT_STANDABLE);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
if (actor->spr.hitag == a1->spr.hitag && (a1->spr.picnum == OOZFILTER || a1->spr.picnum == SEENINE))
|
||||
if (actor->spr.hitag == a1->spr.hitag && actorflag(a1, SFLAG2_BRIGHTEXPLODE))
|
||||
if (a1->spr.shade != -32)
|
||||
a1->spr.shade = -32;
|
||||
}
|
||||
|
@ -1030,7 +1030,7 @@ static void movefireext(DDukeActor* actor)
|
|||
DukeStatIterator it(STAT_STANDABLE);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
if (actor->spr.hitag == a1->spr.hitag && (a1->spr.picnum == OOZFILTER || a1->spr.picnum == SEENINE))
|
||||
if (actor->spr.hitag == a1->spr.hitag && actorflag(a1, SFLAG2_BRIGHTEXPLODE))
|
||||
if (a1->spr.shade != -32)
|
||||
a1->spr.shade = -32;
|
||||
}
|
||||
|
@ -1233,7 +1233,7 @@ void movestandables_d(void)
|
|||
|
||||
else if (picnum == MASTERSWITCH)
|
||||
{
|
||||
movemasterswitch(act, SEENINE, OOZFILTER);
|
||||
movemasterswitch(act);
|
||||
}
|
||||
|
||||
else if (picnum == VIEWSCREEN || picnum == VIEWSCREEN2)
|
||||
|
|
|
@ -650,7 +650,7 @@ void movefallers_r(void)
|
|||
int j = fi.ifhitbyweapon(act);
|
||||
if (j >= 0)
|
||||
{
|
||||
if (j == RPG || (isRRRA() && j == RPG2) || j == RADIUSEXPLOSION || j == SEENINE || j == OOZFILTER)
|
||||
if (gs.actorinfo[j].flags2 & SFLAG2_EXPLOSIVE)
|
||||
{
|
||||
if (act->spr.extra <= 0)
|
||||
{
|
||||
|
@ -740,12 +740,12 @@ static void movecrack(DDukeActor* actor)
|
|||
actor->temp_data[0] = actor->spr.cstat;
|
||||
actor->temp_data[1] = actor->spr.ang;
|
||||
int j = fi.ifhitbyweapon(actor);
|
||||
if (j == RPG || (isRRRA() && j == RPG2) || j == RADIUSEXPLOSION || j == SEENINE || j == OOZFILTER)
|
||||
if (gs.actorinfo[j].flags2 & SFLAG2_EXPLOSIVE)
|
||||
{
|
||||
DukeStatIterator it(STAT_STANDABLE);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
if (actor->spr.hitag == a1->spr.hitag && (a1->spr.picnum == OOZFILTER || a1->spr.picnum == SEENINE))
|
||||
if (actor->spr.hitag == a1->spr.hitag && actorflag(a1, SFLAG2_BRIGHTEXPLODE))
|
||||
if (a1->spr.shade != -32)
|
||||
a1->spr.shade = -32;
|
||||
}
|
||||
|
@ -869,7 +869,7 @@ void movestandables_r(void)
|
|||
|
||||
else if (picnum == MASTERSWITCH)
|
||||
{
|
||||
movemasterswitch(act, SEENINE, OOZFILTER);
|
||||
movemasterswitch(act);
|
||||
}
|
||||
|
||||
else if (picnum == TRASH)
|
||||
|
|
|
@ -337,6 +337,8 @@ enum sflags2_t
|
|||
SFLAG2_NOROTATEWITHSECTOR = 0x00000002,
|
||||
SFLAG2_SHOWWALLSPRITEONMAP = 0x00000004,
|
||||
SFLAG2_NOFLOORPAL = 0x00000008,
|
||||
SFLAG2_EXPLOSIVE = 0x00000010,
|
||||
SFLAG2_BRIGHTEXPLODE = 0x00000020,
|
||||
};
|
||||
|
||||
using EDukeFlags2 = TFlags<sflags2_t, uint32_t>;
|
||||
|
|
|
@ -214,6 +214,8 @@ void initactorflags_d()
|
|||
setflag(SFLAG2_NOROTATEWITHSECTOR, { LASERLINE });
|
||||
setflag(SFLAG2_SHOWWALLSPRITEONMAP, { LASERLINE });
|
||||
setflag(SFLAG2_NOFLOORPAL, { TRIPBOMB, LASERLINE });
|
||||
setflag(SFLAG2_EXPLOSIVE, { FIREEXT, RPG, RADIUSEXPLOSION, SEENINE, OOZFILTER });
|
||||
setflag(SFLAG2_BRIGHTEXPLODE, { SEENINE, OOZFILTER });
|
||||
|
||||
if (isWorldTour())
|
||||
{
|
||||
|
|
|
@ -107,7 +107,7 @@ void initactorflags_r()
|
|||
TOUGHGAL });
|
||||
|
||||
|
||||
for (auto &fa : gs.actorinfo)
|
||||
for (auto& fa : gs.actorinfo)
|
||||
{
|
||||
fa.falladjustz = 24 << 8;
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ void initactorflags_r()
|
|||
gs.actorinfo[DRONE].falladjustz = 0;
|
||||
|
||||
|
||||
setflag(SFLAG_INTERNAL_BADGUY|SFLAG_KILLCOUNT, {
|
||||
setflag(SFLAG_INTERNAL_BADGUY | SFLAG_KILLCOUNT, {
|
||||
BOULDER,
|
||||
BOULDER1,
|
||||
EGG,
|
||||
|
@ -145,9 +145,9 @@ void initactorflags_r()
|
|||
COOT,
|
||||
COOTSTAYPUT,
|
||||
SHARK,
|
||||
VIXEN});
|
||||
VIXEN });
|
||||
|
||||
if (isRRRA()) setflag(SFLAG_INTERNAL_BADGUY|SFLAG_KILLCOUNT, {
|
||||
if (isRRRA()) setflag(SFLAG_INTERNAL_BADGUY | SFLAG_KILLCOUNT, {
|
||||
SBSWIPE,
|
||||
BIKERB,
|
||||
BIKERBV2,
|
||||
|
@ -163,14 +163,14 @@ void initactorflags_r()
|
|||
CHEERBOAT,
|
||||
RABBIT,
|
||||
MAMA,
|
||||
UFO1_RRRA});
|
||||
else setflag(SFLAG_INTERNAL_BADGUY|SFLAG_KILLCOUNT, {
|
||||
UFO1_RRRA });
|
||||
else setflag(SFLAG_INTERNAL_BADGUY | SFLAG_KILLCOUNT, {
|
||||
SBMOVE,
|
||||
UFO1_RR,
|
||||
UFO2,
|
||||
UFO3,
|
||||
UFO4,
|
||||
UFO5});
|
||||
UFO5 });
|
||||
|
||||
// Why does the pig count as kill? Let's undo that.
|
||||
gs.actorinfo[PIG].flags &= ~SFLAG_KILLCOUNT;
|
||||
|
@ -178,7 +178,7 @@ void initactorflags_r()
|
|||
|
||||
gs.actorinfo[DRONE].flags |= SFLAG_NOWATERDIP;
|
||||
gs.actorinfo[VIXEN].flags |= SFLAG_NOCANSEECHECK;
|
||||
if (isRRRA())
|
||||
if (isRRRA())
|
||||
{
|
||||
setflag(SFLAG_KILLCOUNT, { ROCK, ROCK2 }); //???
|
||||
setflag(SFLAG_NODAMAGEPUSH, { HULK, MAMA, BILLYPLAY, COOTPLAY, MAMACLOUD });
|
||||
|
@ -225,7 +225,7 @@ void initactorflags_r()
|
|||
FIREVASE,
|
||||
NUKEBARREL,
|
||||
NUKEBARRELDENTED,
|
||||
NUKEBARRELLEAKED
|
||||
NUKEBARRELLEAKED
|
||||
});
|
||||
|
||||
setflag(SFLAG_NOINTERPOLATE, { CRANEPOLE });
|
||||
|
@ -240,6 +240,9 @@ void initactorflags_r()
|
|||
setflag(SFLAG_SE24_NOCARRY, { BULLETHOLE, BOLT1, BOLT1 + 1,BOLT1 + 2, BOLT1 + 3, CRANE, CRANE1, CRANE2, BARBROKE });
|
||||
setflag(SFLAG_SE24_REMOVE, { BLOODPOOL, PUKE, FOOTPRINTS, FOOTPRINTS2, FOOTPRINTS3 });
|
||||
setflag(SFLAG_NOFALLER, { CRACK1, CRACK2, CRACK3, CRACK4 });
|
||||
setflag(SFLAG2_EXPLOSIVE, {RPG, RADIUSEXPLOSION, SEENINE, OOZFILTER });
|
||||
if (isRRRA()) setflag(SFLAG2_EXPLOSIVE, { RPG2 });
|
||||
setflag(SFLAG2_BRIGHTEXPLODE, { SEENINE, OOZFILTER });
|
||||
|
||||
// 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)
|
||||
|
|
|
@ -35,7 +35,7 @@ void movecrane(DDukeActor* i, int crane);
|
|||
void movefountain(DDukeActor* i, int fountain);
|
||||
void moveflammable(DDukeActor* i, int pool);
|
||||
void detonate(DDukeActor* i, int explosion);
|
||||
void movemasterswitch(DDukeActor* i, int spectype1, int spectype2);
|
||||
void movemasterswitch(DDukeActor* i);
|
||||
void movetrash(DDukeActor* i);
|
||||
void movewaterdrip(DDukeActor* i, int drip);
|
||||
void movedoorshock(DDukeActor* i);
|
||||
|
|
|
@ -533,7 +533,6 @@ x(SHOTGUNSHELL, 1704)
|
|||
x(RPGMUZZLEFLASH, 1714)
|
||||
x(CATLITE, 1721)
|
||||
x(HANDHOLDINGLASER, 1732)
|
||||
x(LASERLINE, 1736)
|
||||
x(HANDHOLDINGACCESS, 1737)
|
||||
x(HANDREMOTE, 1739)
|
||||
x(TIP, 1745)
|
||||
|
|
Loading…
Reference in a new issue