- moved some common utilities into the backend.

This commit is contained in:
Christoph Oelckers 2021-11-26 21:52:01 +01:00
parent bbb860ccf3
commit b7a5ea8ef6
27 changed files with 320 additions and 388 deletions

View file

@ -288,6 +288,34 @@ public:
}
};
using CoreSectIterator = TSectIterator<DCoreActor>;
inline void ChangeActorStat(DCoreActor* actor, int stat)
{
changespritestat(actor->GetSpriteIndex(), stat);
}
inline void ChangeActorSect(DCoreActor* actor, sectortype* sect)
{
changespritesect(actor->GetSpriteIndex(), sector.IndexOf(sect));
}
inline int SetActorZ(DCoreActor* actor, const vec3_t* newpos)
{
return setspritez(actor->GetSpriteIndex(), newpos);
}
inline int SetActor(DCoreActor* actor, const vec3_t* newpos)
{
return setsprite(actor->GetSpriteIndex(), newpos);
}
inline int SetActor(DCoreActor* actor, const vec3_t& newpos)
{
return setsprite(actor->GetSpriteIndex(), &newpos);
}
[[deprecated]]
inline int hitscan(const vec3_t* sv, int sectnum, int vx, int vy, int vz, hitdata_t* hitinfo, unsigned cliptype)

View file

@ -6278,7 +6278,7 @@ void actCheckFlares()
int y = pTarget->y + mulscale30r(Sin(pXSprite->goalAng + pTarget->ang), pTarget->clipdist * 2);
int z = pTarget->z + pXSprite->targetZ;
vec3_t pos = { x, y, z };
setActorPos(actor, &pos);
SetActor(actor, &pos);
actor->xvel = target->xvel;
actor->yvel = target->yvel;
actor->zvel = target->zvel;
@ -6325,7 +6325,7 @@ DBloodActor* actSpawnSprite(sectortype* pSector, int x, int y, int z, int nStat,
DBloodActor* actor = InsertSprite(pSector, nStat);
vec3_t pos = { x, y, z };
setActorPos(actor, &pos);
SetActor(actor, &pos);
spritetype* pSprite = &actor->s();
pSprite->type = kSpriteDecoration;
if (setextra && !actor->hasX())
@ -6395,7 +6395,7 @@ DBloodActor* actSpawnDude(DBloodActor* source, int nType, int a3, int a4)
pSprite2->type = nType;
pSprite2->ang = angle;
vec3_t pos = { x, y, z };
setActorPos(spawned, &pos);
SetActor(spawned, &pos);
pSprite2->cstat |= 0x1101;
pSprite2->clipdist = getDudeInfo(nDude + kDudeBase)->clipdist;
pXSprite2->health = getDudeInfo(nDude + kDudeBase)->startHealth << 4;

View file

@ -1955,7 +1955,7 @@ DBloodActor* genDudeSpawn(DBloodActor* source, DBloodActor* actor, int nDist)
pDude->type = nType; pDude->ang = nAngle;
vec3_t pos = { x, y, z };
setActorPos(spawned, &pos);
SetActor(spawned, &pos);
pDude->cstat |= 0x1101; pDude->clipdist = dudeInfo[nType - kDudeBase].clipdist;
// inherit weapon, seq and sound settings.

View file

@ -185,18 +185,6 @@ inline void GetActorExtents(DBloodActor* actor, int* top, int* bottom)
GetSpriteExtents(&actor->s(), top, bottom);
}
inline DBloodActor* getUpperLink(int sect)
{
auto pSect = &sector[sect];
return pSect->upperLink;
}
inline DBloodActor* getLowerLink(int sect)
{
auto pSect = &sector[sect];
return pSect->lowerLink;
}
inline void sfxPlay3DSound(DBloodActor* pSprite, int soundId, int a3 = -1, int a4 = 0)
{
sfxPlay3DSound(&pSprite->s(), soundId, a3, a4);
@ -215,19 +203,9 @@ inline void ChangeActorStat(DBloodActor* actor, int stat)
ChangeSpriteStat(actor->GetSpriteIndex(), stat);
}
inline void ChangeActorSect(DBloodActor* actor, int stat)
{
ChangeSpriteSect(actor->GetSpriteIndex(), stat);
}
inline void ChangeActorSect(DBloodActor* actor, sectortype* stat)
{
ChangeSpriteSect(actor->GetSpriteIndex(), sectnum(stat));
}
inline void setActorPos(DBloodActor* actor, vec3_t* pos)
{
setsprite(actor->GetSpriteIndex(), pos);
}
END_BLD_NS

View file

@ -113,7 +113,7 @@ void InitMirrors(void)
auto secti = &sector[i];
if (secti->floorpicnum == 504)
{
auto link = getUpperLink(i);
auto link = secti->upperLink;
if (link == nullptr)
continue;
auto link2 = link->GetOwner();

View file

@ -288,7 +288,7 @@ static DBloodActor* nnExtSpawnDude(DBloodActor* sourceActor, DBloodActor* origin
}
vec3_t pos = { x, y, z };
setActorPos(pDudeActor, &pos);
SetActor(pDudeActor, &pos);
pDude->type = nType;
pDude->ang = angle;

View file

@ -158,17 +158,17 @@ void warpInit(void)
}
#endif
for (int i = 0; i < numsectors; i++)
for(auto& sect : sectors())
{
auto actor = getUpperLink(i);
auto actor = sect.upperLink;
if (actor && actor->hasX())
{
spritetype *pSprite = &actor->s();
XSPRITE *pXSprite = &actor->x();
int nLink = pXSprite->data1;
for (int j = 0; j < numsectors; j++)
for(auto& sect : sectors())
{
auto actor2 = getLowerLink(j);
auto actor2 = sect.lowerLink;
if (actor2 && actor2->hasX())
{
spritetype *pSprite2 = &actor2->s();

View file

@ -216,8 +216,8 @@ static void geometryEffect(int cposx, int cposy, int cposz, binangle cang, fixed
DukeSectIterator it(tgsect);
while (auto act = it.Next())
{
changeactorsect(act, geosectorwarp[gs]);
setsprite(act, act->s->x -= geox[gs], act->s->y -= geoy[gs], act->s->z);
ChangeActorSect(act, geosectorwarp[gs]);
SetActor(act, { act->s->x -= geox[gs], act->s->y -= geoy[gs], act->s->z });
}
if (geosector[gs] == sectp)
{
@ -236,8 +236,8 @@ static void geometryEffect(int cposx, int cposy, int cposz, binangle cang, fixed
DukeSectIterator it(tgsect);
while (auto act = it.Next())
{
changeactorsect(act, geosector[gs]);
setsprite(act, act->s->x += geox[gs], act->s->y += geoy[gs], act->s->z);
ChangeActorSect(act, geosector[gs]);
SetActor(act, { act->s->x += geox[gs], act->s->y += geoy[gs], act->s->z });
}
}
fi.animatesprites(pm_tsprite, pm_spritesortcnt, cposx, cposy, cang.asbuild(), smoothratio);
@ -248,8 +248,8 @@ static void geometryEffect(int cposx, int cposy, int cposz, binangle cang, fixed
DukeSectIterator it(tgsect);
while (auto act = it.Next())
{
changeactorsect(act, geosectorwarp2[gs]);
setsprite(act, act->s->x -= geox2[gs], act->s->y -= geoy2[gs], act->s->z);
ChangeActorSect(act, geosectorwarp2[gs]);
SetActor(act, { act->s->x -= geox2[gs], act->s->y -= geoy2[gs], act->s->z });
}
if (geosector[gs] == sectp)
{
@ -268,8 +268,8 @@ static void geometryEffect(int cposx, int cposy, int cposz, binangle cang, fixed
DukeSectIterator it(tgsect);
while (auto act = it.Next())
{
changeactorsect(act, geosector[gs]);
setsprite(act, act->s->x += geox2[gs], act->s->y += geoy2[gs], act->s->z);
ChangeActorSect(act, geosector[gs]);
SetActor(act, { act->s->x += geox2[gs], act->s->y += geoy2[gs], act->s->z });
}
}
fi.animatesprites(pm_tsprite, pm_spritesortcnt, cposx, cposy, cang.asbuild(), smoothratio);

View file

@ -386,7 +386,7 @@ void movedummyplayers(void)
spri->x += (ps[p].pos.x - ps[p].oposx);
spri->y += (ps[p].pos.y - ps[p].oposy);
setsprite(act, spri->pos);
SetActor(act, spri->pos);
}
}
@ -416,7 +416,7 @@ void moveplayers(void)
spri->z = p->oposz + gs.playerheight;
spri->backupz();
spri->ang = p->angle.oang.asbuild();
setsprite(act, spri->pos);
SetActor(act, spri->pos);
}
else
{
@ -522,7 +522,7 @@ void moveplayers(void)
else
{
spri->ang = 2047 - (p->angle.ang.asbuild());
setsprite(act, spri->pos);
SetActor(act, spri->pos);
}
}
@ -662,7 +662,7 @@ void movecrane(DDukeActor *actor, int crane)
case STAT_STANDABLE:
case STAT_PLAYER:
spri->ang = getangle(cpt.polex - spri->x, cpt.poley - spri->y);
setsprite(a2, cpt.polex, cpt.poley, a2->s->z);
SetActor(a2, { cpt.polex, cpt.poley, a2->s->z });
t[0]++;
return;
}
@ -779,7 +779,7 @@ void movecrane(DDukeActor *actor, int crane)
else if (t[0] == 9)
t[0] = 0;
setsprite(cpt.poleactor, spri->x, spri->y, spri->z - (34 << 8));
SetActor(cpt.poleactor, { spri->x, spri->y, spri->z - (34 << 8) });
auto Owner = actor->GetOwner();
if (Owner != nullptr || actor->IsActiveCrane())
@ -799,7 +799,7 @@ void movecrane(DDukeActor *actor, int crane)
if (Owner != nullptr)
{
setsprite(Owner, spri->pos);
SetActor(Owner, spri->pos);
Owner->s->opos = spri->pos;
@ -814,7 +814,7 @@ void movecrane(DDukeActor *actor, int crane)
ps[p].pos.x = spri->x - bcos(ang, -6);
ps[p].pos.y = spri->y - bsin(ang, -6);
ps[p].pos.z = spri->z + (2 << 8);
setsprite(ps[p].GetActor(), ps[p].pos.x, ps[p].pos.y, ps[p].pos.z);
SetActor(ps[p].GetActor(), ps[p].pos);
ps[p].setCursector(ps[p].GetActor()->s->sector());
}
}
@ -1012,7 +1012,7 @@ void movemasterswitch(DDukeActor *actor, int spectype1, int spectype2)
spri->picnum = 0; // give it a picnum without any behavior attached, just in case
spri->cstat |= CSTAT_SPRITE_INVISIBLE;
spri->cstat2 |= CSTAT2_SPRITE_NOFIND;
changeactorstat(actor, STAT_REMOVED);
ChangeActorStat(actor, STAT_REMOVED);
}
}
}
@ -2187,7 +2187,7 @@ bool money(DDukeActor* actor, int BLOODPOOL)
ssp(actor, CLIPMASK0);
if ((krand() & 3) == 0)
setsprite(actor, s->pos);
SetActor(actor, s->pos);
if (!s->insector())
{
@ -2245,11 +2245,11 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f
if (s->zvel > 1024 && s->zvel < 1280)
{
setsprite(actor, s->pos);
SetActor(actor, s->pos);
sectp = s->sector();
}
if (callsetsprite) setsprite(actor, s->pos);
if (callsetsprite) SetActor(actor, s->pos);
// this was after the slope calls, but we should avoid calling that for invalid sectors.
if (!s->insector())
@ -2517,7 +2517,7 @@ void glasspieces(DDukeActor* actor)
s->xrepeat >>= 1;
s->yrepeat >>= 1;
if (rnd(96))
setsprite(actor, s->pos);
SetActor(actor, s->pos);
t[0]++;//Number of bounces
}
else if (t[0] == 3)
@ -2554,7 +2554,7 @@ void scrap(DDukeActor* actor, int SCRAP1, int SCRAP6)
if (s->zvel > 1024 && s->zvel < 1280)
{
setsprite(actor, s->pos);
SetActor(actor, s->pos);
sectp = s->sector();
}
@ -2590,7 +2590,7 @@ void scrap(DDukeActor* actor, int SCRAP1, int SCRAP6)
auto spawned = spawn(actor, s->yvel);
if (spawned)
{
setsprite(spawned, s->pos);
SetActor(spawned, s->pos);
getglobalz(spawned);
spawned->s->hitag = spawned->s->lotag = 0;
}
@ -2910,7 +2910,7 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
ps[p].pos.y = s->y;
ps[p].setCursector(s->sector());
setsprite(ps[p].GetActor(), s->pos);
SetActor(ps[p].GetActor(), s->pos);
quickkill(&ps[p]);
}
}
@ -2977,7 +2977,7 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
}
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
if ((sc->floorz - sc->ceilingz) < (108 << 8))
{
@ -2994,7 +2994,7 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
ps[p].oposy = ps[p].pos.y = s->y;
ps[p].setCursector(s->sector());
setsprite(ps[p].GetActor(), s->pos);
SetActor(ps[p].GetActor(), s->pos);
quickkill(&ps[p]);
}
}
@ -3097,7 +3097,7 @@ void handle_se30(DDukeActor *actor, int JIBS6)
ps[p].pos.y = s->y;
ps[p].setCursector(s->sector());
setsprite(ps[p].GetActor(), s->pos);
SetActor(ps[p].GetActor(), s->pos);
quickkill(&ps[p]);
}
}
@ -3144,7 +3144,7 @@ void handle_se30(DDukeActor *actor, int JIBS6)
}
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
if ((sc->floorz - sc->ceilingz) < (108 << 8))
{
@ -3164,7 +3164,7 @@ void handle_se30(DDukeActor *actor, int JIBS6)
ps[p].setCursector(s->sector());
setsprite(ps[p].GetActor(), s->pos);
SetActor(ps[p].GetActor(), s->pos);
quickkill(&ps[p]);
}
}
@ -3262,11 +3262,11 @@ void handle_se02(DDukeActor* actor)
{
sj->x += m;
sj->y += x;
setsprite(a2, sj->pos);
SetActor(a2, sj->pos);
}
}
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
}
}
@ -3480,7 +3480,7 @@ void handle_se05(DDukeActor* actor, int FIRELASER)
sc->ceilingz += s->zvel;
actor->temp_sect->ceilingz += s->zvel;
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
}
//---------------------------------------------------------------------------
@ -3644,7 +3644,7 @@ void handle_se11(DDukeActor *actor)
t[2] += k;
t[4] += k;
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
for(auto& wal : wallsofsector(sc))
{
@ -3658,7 +3658,7 @@ void handle_se11(DDukeActor *actor)
t[2] -= k;
t[4] -= k;
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
return;
}
}
@ -3669,7 +3669,7 @@ void handle_se11(DDukeActor *actor)
t[4] = 0;
t[2] &= 0xffffff00;
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
}
}
}
@ -3865,7 +3865,7 @@ void handle_se15(DDukeActor* actor)
}
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
}
}
@ -3911,7 +3911,7 @@ void handle_se16(DDukeActor* actor, int REACTOR, int REACTOR2)
else sc->ceilingz -= 512;
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
}
//---------------------------------------------------------------------------
@ -4007,7 +4007,7 @@ void handle_se17(DDukeActor* actor)
ps[p].truecz = act3->ceilingz;
ps[p].bobcounter = 0;
changeactorsect(act3, spr2->sector());
ChangeActorSect(act3, spr2->sector());
ps[p].setCursector(spr2->sector());
}
else if (spr3->statnum != STAT_EFFECTOR)
@ -4018,8 +4018,8 @@ void handle_se17(DDukeActor* actor)
spr3->backupz();
changeactorsect(act3, spr2->sector());
setsprite(act3, spr3->pos);
ChangeActorSect(act3, spr2->sector());
SetActor(act3, spr3->pos);
act3->floorz = spr2->sector()->floorz;
act3->ceilingz = spr2->sector()->ceilingz;
@ -4264,7 +4264,7 @@ void handle_se20(DDukeActor* actor)
{
a2->s->x += x;
a2->s->y += l;
setsprite(a2, a2->s->pos);
SetActor(a2, a2->s->pos);
if (a2->sector()->floorstat & 2)
if (a2->s->statnum == 2)
makeitfall(a2);
@ -4284,7 +4284,7 @@ void handle_se20(DDukeActor* actor)
ps[p].oposx = ps[p].pos.x;
ps[p].oposy = ps[p].pos.y;
setsprite(ps[p].GetActor(), ps[p].pos.x, ps[p].pos.y, ps[p].pos.z + gs.playerheight);
SetActor(ps[p].GetActor(), { ps[p].pos.x, ps[p].pos.y, ps[p].pos.z + gs.playerheight });
}
sc->addfloorxpan(-x / 8.f);
@ -4388,7 +4388,7 @@ void handle_se26(DDukeActor* actor)
a2->s->x += l;
a2->s->y += x;
a2->s->z += s->zvel;
setsprite(a2, a2->s->pos);
SetActor(a2, a2->s->pos);
}
}
@ -4401,7 +4401,7 @@ void handle_se26(DDukeActor* actor)
}
ms(actor);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
}
//---------------------------------------------------------------------------
@ -4519,7 +4519,7 @@ void handle_se24(DDukeActor *actor, const int16_t *list1, const int16_t *list2,
s2->x += x >> shift;
s2->y += l >> shift;
setsprite(a2, s2->pos);
SetActor(a2, s2->pos);
if (s2->sector()->floorstat & 2)
if (s2->statnum == 2)
@ -4672,7 +4672,7 @@ void handle_se35(DDukeActor *actor, int SMALLSMOKE, int EXPLOSION2)
{
spawned->s->xvel = 96 + (krand() & 127);
ssp(spawned, CLIPMASK0);
setsprite(spawned, spawned->s->pos);
SetActor(spawned, spawned->s->pos);
if (rnd(16))
spawn(actor, EXPLOSION2);
}
@ -5294,7 +5294,7 @@ void fall_common(DDukeActor *actor, int playernum, int JIBS6, int DRONE, int BLO
auto sect = s->sector();
pushmove(&s->pos, &sect, 128, (4 << 8), (4 << 8), CLIPMASK0);
if (sect != s->sector() && sect != nullptr)
changeactorsect(actor, sect);
ChangeActorSect(actor, sect);
S_PlayActorSound(thud, actor);
}

View file

@ -535,7 +535,7 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
spri->y += (ychange * TICSPERFRAME) >> 2;
spri->z += (zchange * TICSPERFRAME) >> 2;
if (bg)
setsprite(actor, spri->x, spri->y, spri->z);
SetActor(actor, spri->pos);
return result.setNone();
}
@ -573,7 +573,7 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
spri->ang = (krand()&2047);
else if ((actor->temp_data[0]&3) == 1 && spri->picnum != COMMANDER)
spri->ang = (krand()&2047);
setsprite(actor,spri->pos);
SetActor(actor,spri->pos);
if (dasectp == nullptr) dasectp = &sector[0];
return result.setSector(dasectp);
}
@ -591,7 +591,7 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
if (dasectp != nullptr)
if (dasectp != spri->sector())
changeactorsect(actor, dasectp);
ChangeActorSect(actor, dasectp);
int daz = spri->z + ((zchange * TICSPERFRAME) >> 3);
if ((daz > actor->ceilingz) && (daz <= actor->floorz))
spri->z = daz;
@ -758,13 +758,13 @@ void movefta_d(void)
else s->shade = s->sector()->floorshade;
act->timetosleep = 0;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
default:
act->timetosleep = 0;
check_fta_sounds_d(act);
changeactorstat(act, STAT_ACTOR);
ChangeActorStat(act, STAT_ACTOR);
break;
}
else act->timetosleep = 0;
@ -1104,7 +1104,7 @@ static void movetripbomb(DDukeActor *actor)
auto curSect = s->sector();
updatesectorneighbor(s->x, s->y, &curSect, 2048);
changeactorsect(actor, curSect);
ChangeActorSect(actor, curSect);
DDukeActor* hit;
x = hitasprite(actor, &hit);
@ -1121,7 +1121,7 @@ static void movetripbomb(DDukeActor *actor)
auto spawned = spawn(actor, LASERLINE);
if (spawned)
{
setsprite(spawned, spawned->s->pos);
SetActor(spawned, spawned->s->pos);
spawned->s->hitag = s->hitag;
spawned->temp_data[1] = spawned->s->z;
@ -1139,10 +1139,10 @@ static void movetripbomb(DDukeActor *actor)
if (curSect == nullptr)
break;
changeactorsect(actor, curSect);
ChangeActorSect(actor, curSect);
// this is a hack to work around the LASERLINE sprite's art tile offset
changeactorsect(spawned, curSect);
ChangeActorSect(spawned, curSect);
}
}
}
@ -1150,7 +1150,7 @@ static void movetripbomb(DDukeActor *actor)
actor->temp_data[0]++;
s->x = actor->temp_data[3]; s->y = actor->temp_data[4];
s->z += (3 << 8);
changeactorsect(actor, oldSect);
ChangeActorSect(actor, oldSect);
actor->temp_data[3] = 0;
if (hit && lTripBombControl & TRIPBOMB_TRIPWIRE)
{
@ -1168,13 +1168,13 @@ static void movetripbomb(DDukeActor *actor)
s->x += bcos(actor->temp_data[5], -9);
s->y += bsin(actor->temp_data[5], -9);
s->z -= (3 << 8);
setsprite(actor, s->pos);
SetActor(actor, s->pos);
x = hitasprite(actor, nullptr);
s->x = actor->temp_data[3]; s->y = actor->temp_data[4];
s->z += (3 << 8);
setsprite(actor, s->x, s->y, s->z);
SetActor(actor, s->pos);
if (actor->lastvx != x && lTripBombControl & TRIPBOMB_TRIPWIRE)
{
@ -1571,7 +1571,7 @@ static bool movefireball(DDukeActor* actor)
FireProj proj = { spr->x, spr->y, spr->z, spr->xvel, spr->yvel, spr->zvel };
fire.Insert(ball->GetSpriteIndex(), proj);
changeactorstat(ball, STAT_PROJECTILE);
ChangeActorStat(ball, STAT_PROJECTILE);
}
}
actor->temp_data[0]++;
@ -1665,7 +1665,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const vec3_t &oldpos)
}
else
{
setsprite(proj, oldpos);
SetActor(proj, oldpos);
fi.checkhitwall(proj, wal, s->x, s->y, s->z, s->picnum);
if (s->picnum == FREEZEBLAST)
@ -1693,7 +1693,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const vec3_t &oldpos)
static bool weaponhitsector(DDukeActor* proj, const vec3_t& oldpos, bool fireball)
{
auto s = proj->s;
setsprite(proj, oldpos);
SetActor(proj, oldpos);
if (s->zvel < 0)
{
@ -2046,7 +2046,7 @@ void movetransports_d(void)
ps[p].bobposy = ps[p].oposy = ps[p].pos.y = Owner->s->y;
ps[p].oposz = ps[p].pos.z = Owner->s->z - gs.playerheight;
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
ps[p].setCursector(spr2->sector());
if (spr->pal == 0)
@ -2075,7 +2075,7 @@ void movetransports_d(void)
auto pa = ps[p].GetActor();
pa->s->opos = ps[p].pos;
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
ps[p].setCursector(Owner->sector());
break;
@ -2127,8 +2127,8 @@ void movetransports_d(void)
ps[p].transporter_hold = -2;
ps[p].setCursector(Owner->sector());
changeactorsect(act2, Owner->sector());
setsprite(ps[p].GetActor(), ps[p].pos.x, ps[p].pos.y, ps[p].pos.z + gs.playerheight);
ChangeActorSect(act2, Owner->sector());
SetActor(ps[p].GetActor(), { ps[p].pos.x, ps[p].pos.y, ps[p].pos.z + gs.playerheight });
if ((krand() & 255) < 32)
spawn(act2, WATERSPLASH2);
@ -2256,7 +2256,7 @@ void movetransports_d(void)
Owner->temp_data[0] = 13;
}
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
}
}
else
@ -2267,7 +2267,7 @@ void movetransports_d(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
}
break;
case 1:
@ -2277,7 +2277,7 @@ void movetransports_d(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
break;
case 2:
@ -2287,7 +2287,7 @@ void movetransports_d(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
break;
}
@ -2345,7 +2345,7 @@ static void greenslime(DDukeActor *actor)
if (actor->timetosleep > SLEEPTIME)
{
actor->timetosleep = 0;
changeactorstat(actor, 2);
ChangeActorStat(actor, 2);
return;
}
}
@ -2400,7 +2400,7 @@ static void greenslime(DDukeActor *actor)
return;
}
setsprite(actor, s->pos);
SetActor(actor, s->pos);
s->ang = ps[p].angle.ang.asbuild();
@ -2782,12 +2782,12 @@ static void flamethrowerflame(DDukeActor *actor)
}
else if (coll.type == kHitWall)
{
setsprite(actor, dax, day, daz);
SetActor(actor, { dax, day, daz });
fi.checkhitwall(actor, coll.hitWall, s->x, s->y, s->z, s->picnum);
}
else if (coll.type == kHitSector)
{
setsprite(actor, dax, day, daz);
SetActor(actor, { dax, day, daz });
if (s->zvel < 0)
fi.checkhitceiling(s->sector());
}
@ -3841,7 +3841,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
if ((badguy(actor) && spr->extra <= 0) || (spr->ox != spr->x) || (spr->oy != spr->y))
{
spr->backupvec2();
setsprite(actor, spr->pos);
SetActor(actor, spr->pos);
}
return;
}
@ -4037,7 +4037,7 @@ void checktimetosleep_d(DDukeActor *actor)
if (actor->timetosleep > 1)
actor->timetosleep--;
else if (actor->timetosleep == 1)
changeactorstat(actor, STAT_ZOMBIEACTOR);
ChangeActorStat(actor, STAT_ZOMBIEACTOR);
break;
}
}

View file

@ -519,7 +519,7 @@ void moveminecart(void)
{
auto sj = a2->s;
if (badguy(sj))
setsprite(a2, cx, cy, sj->z);
SetActor(a2, { cx, cy, sj->z });
}
}
}

View file

@ -379,7 +379,7 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
spri->y += (ychange * TICSPERFRAME) >> 2;
spri->z += (zchange * TICSPERFRAME) >> 2;
if (bg)
setsprite(actor, spri->x, spri->y, spri->z);
SetActor(actor, spri->pos);
return result.setNone();
}
@ -404,7 +404,7 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
spri->ang = (krand() & 2047);
else if ((actor->temp_data[0] & 3) == 1)
spri->ang = (krand() & 2047);
setsprite(actor, spri->pos);
SetActor(actor, spri->pos);
if (dasectp == nullptr) dasectp = &sector[0];
return result.setSector(dasectp);
}
@ -422,7 +422,7 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
if (dasectp)
if ((dasectp != spri->sector()))
changeactorsect(actor, dasectp);
ChangeActorSect(actor, dasectp);
int daz = spri->z + ((zchange * TICSPERFRAME) >> 3);
if ((daz > actor->ceilingz) && (daz <= actor->floorz))
spri->z = daz;
@ -579,7 +579,7 @@ void movefta_r(void)
else s->shade = s->sector()->floorshade;
act->timetosleep = 0;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
default:
#if 0
@ -588,7 +588,7 @@ void movefta_r(void)
#endif
act->timetosleep = 0;
check_fta_sounds_r(act);
changeactorstat(act, STAT_ACTOR);
ChangeActorStat(act, STAT_ACTOR);
break;
}
else act->timetosleep = 0;
@ -606,7 +606,7 @@ void movefta_r(void)
{
act->timetosleep = 0;
check_fta_sounds_r(act);
changeactorstat(act, STAT_ACTOR);
ChangeActorStat(act, STAT_ACTOR);
}
}
}
@ -1223,7 +1223,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const vec3_t& oldpos)
}
else
{
setsprite(proj, oldpos);
SetActor(proj, oldpos);
fi.checkhitwall(proj, wal, s->x, s->y, s->z, s->picnum);
if (!isRRRA() && s->picnum == FREEZEBLAST)
@ -1292,7 +1292,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const vec3_t& oldpos)
bool weaponhitsector(DDukeActor *proj, const vec3_t& oldpos)
{
auto s = proj->s;
setsprite(proj, oldpos);
SetActor(proj, oldpos);
if (isRRRA() && proj->GetOwner() && proj->GetOwner()->s->picnum == MAMA)
{
@ -1626,7 +1626,7 @@ void movetransports_r(void)
ps[p].bobposy = ps[p].oposy = ps[p].pos.y = Owner->s->y;
ps[p].oposz = ps[p].pos.z = Owner->s->z - (gs.playerheight - (4 << 8));
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
ps[p].setCursector(spr2->sector());
auto beam = spawn(Owner, TRANSPORTERBEAM);
@ -1649,7 +1649,7 @@ void movetransports_r(void)
else ps[p].pos.z = Owner->s->z + 6144;
ps[p].oposz = ps[p].pos.z;
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
ps[p].setCursector(Owner->sector());
break;
@ -1714,7 +1714,7 @@ void movetransports_r(void)
ps[p].transporter_hold = -2;
ps[p].setCursector(Owner->sector());
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
if ((krand() & 255) < 32)
spawn(ps[p].GetActor(), WATERSPLASH2);
@ -1728,7 +1728,7 @@ void movetransports_r(void)
ps[p].transporter_hold = -2;
ps[p].setCursector(Owner->sector());
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
}
}
break;
@ -1857,7 +1857,7 @@ void movetransports_r(void)
Owner->temp_data[0] = 13;
}
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
}
}
else
@ -1868,7 +1868,7 @@ void movetransports_r(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
}
break;
case ST_1_ABOVE_WATER:
@ -1878,7 +1878,7 @@ void movetransports_r(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
break;
case ST_2_UNDERWATER:
@ -1888,7 +1888,7 @@ void movetransports_r(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
break;
@ -1900,7 +1900,7 @@ void movetransports_r(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
movesprite_ex(act2, MulScale(spr2->xvel, bcos(spr2->ang), 14),
MulScale(spr2->xvel, bsin(spr2->ang), 14), 0, CLIPMASK1, coll);
@ -1914,7 +1914,7 @@ void movetransports_r(void)
spr2->backupz();
changeactorsect(act2, Owner->sector());
ChangeActorSect(act2, Owner->sector());
movesprite_ex(act2, MulScale(spr2->xvel, bcos(spr2->ang), 14),
MulScale(spr2->xvel, bsin(spr2->ang), 14), 0, CLIPMASK1, coll);
@ -2094,7 +2094,7 @@ static void rrra_specialstats()
}
else if (s->extra == 200)
{
setsprite(act, s->x, s->y, s->sector()->floorz - 10);
SetActor(act, { s->x, s->y, s->sector()->floorz - 10 });
s->extra = 1;
s->picnum = PIG + 11;
spawn(act, TRANSPORTERSTAR);
@ -2483,7 +2483,7 @@ void rr_specialstats()
ps[p].bobposy = ps[p].oposy = ps[p].pos.y = act2->s->y;
ps[p].oposz = ps[p].pos.z = act2->s->z - (36 << 8);
auto pact = ps[p].GetActor();
changeactorsect(pact, act2->sector());
ChangeActorSect(pact, act2->sector());
ps[p].setCursector(pact->sector());
S_PlayActorSound(70, act2);
deletesprite(act2);
@ -3031,7 +3031,7 @@ void moveactors_r(void)
getglobalz(act);
if (sectp->lotag == 1)
{
setsprite(act,s->x,s->y,act->floorz+(16<<8));
SetActor(act, { s->x,s->y,act->floorz + (16 << 8) });
}
break;
@ -3804,7 +3804,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
if ((badguy(actor) && spr->extra <= 0) || (spr->ox != spr->x) || (spr->oy != spr->y))
{
spr->backupvec2();
setsprite(actor, spr->pos);
SetActor(actor, spr->pos);
}
if (badguy(actor) && spr->extra <= 0)
{
@ -4248,7 +4248,7 @@ void checktimetosleep_r(DDukeActor *actor)
if (actor->timetosleep > 1)
actor->timetosleep--;
else if (actor->timetosleep == 1)
changeactorstat(actor, STAT_ZOMBIEACTOR);
ChangeActorStat(actor, STAT_ZOMBIEACTOR);
break;
}
}

View file

@ -100,7 +100,7 @@ static int ccmd_spawn(CCmdFuncPtr parm)
if (set & 2) spawned->s->cstat = (uint16_t)cstat;
if (set & 4) spawned->s->ang = ang;
if (set & 8) {
if (setsprite(spawned, x, y, z) < 0)
if (SetActor(spawned, { x, y, z }) < 0)
{
Printf("spawn: Sprite can't be spawned into null space\n");
deletesprite(spawned);

View file

@ -20,38 +20,6 @@ inline int player_struct::GetPlayerNum()
return GetActor()->s->yvel;
}
// Refactoring helpers/intermediates
inline void changeactorstat(DDukeActor* a, int newstat)
{
::changespritestat(a->GetSpriteIndex(), newstat);
}
inline void changeactorsect(DDukeActor* a, int newsect)
{
::changespritesect(a->GetSpriteIndex(), newsect);
}
inline void changeactorsect(DDukeActor* a, sectortype* newsect)
{
::changespritesect(a->GetSpriteIndex(), sectnum(newsect));
}
inline int setsprite(DDukeActor* a, int x, int y, int z)
{
return ::setsprite(a->GetSpriteIndex(), x, y, z);
}
inline int setsprite(DDukeActor* a, const vec3_t& pos)
{
return ::setsprite(a->GetSpriteIndex(), pos.x, pos.y, pos.z);
}
// see comment for changespritestat.
inline int setsprite(int i, int x, int y, int z)
{
return ::setsprite(i, x, y, z);
}
inline int ActorToScriptIndex(DDukeActor* a)
{
if (!a) return -1;

View file

@ -1197,14 +1197,6 @@ void DoActor(bool bSet, int lVar1, int lLabelID, int lVar2, DDukeActor* sActor,
if (bSet) spr->yoffset = lValue;
else SetGameVarID(lVar2, spr->yoffset, sActor, sPlayer);
break;
case ACTOR_SECTNUM:
if (bSet) changespritesect(iActor, lValue);
else SetGameVarID(lVar2, spr->sectnum, sActor, sPlayer);
break;
case ACTOR_STATNUM:
if (bSet) changespritestat(iActor, lValue);
else SetGameVarID(lVar2, spr->statnum, sActor, sPlayer);
break;
case ACTOR_ANG:
if (bSet) spr->ang = lValue;
else SetGameVarID(lVar2, spr->ang, sActor, sPlayer);
@ -2210,7 +2202,7 @@ int ParseState::parse(void)
g_sp->z = ps[g_p].oposz = ps[g_p].pos.z;
g_sp->backuppos();
updatesector(ps[g_p].pos.x, ps[g_p].pos.y, &ps[g_p].cursector);
setsprite(ps[g_p].GetActor(), ps[g_p].pos.x, ps[g_p].pos.y, ps[g_p].pos.z + gs.playerheight);
SetActor(ps[g_p].GetActor(), { ps[g_p].pos.x, ps[g_p].pos.y, ps[g_p].pos.z + gs.playerheight });
g_sp->cstat = 257;
g_sp->shade = -12;
@ -3694,7 +3686,7 @@ void LoadActor(DDukeActor *actor, int p, int x)
if (actor->timetosleep > 1)
actor->timetosleep--;
else if (actor->timetosleep == 1)
changeactorstat(actor, STAT_ZOMBIEACTOR);
ChangeActorStat(actor, STAT_ZOMBIEACTOR);
}
else if (actor->s->statnum == 6)
@ -3802,7 +3794,7 @@ void execute(DDukeActor *actor,int p,int x)
if (actor->timetosleep > 1)
actor->timetosleep--;
else if (actor->timetosleep == 1)
changeactorstat(actor, STAT_ZOMBIEACTOR);
ChangeActorStat(actor, STAT_ZOMBIEACTOR);
}
else if (actor->s->statnum == STAT_STANDABLE)

View file

@ -1041,7 +1041,7 @@ void shootbloodsplat(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i
spawned->s->z = hit.hitpos.z;
spawned->s->cstat |= (krand() & 4);
ssp(spawned, CLIPMASK0);
setsprite(spawned, spawned->s->pos);
SetActor(spawned, spawned->s->pos);
if (s->picnum == OOZFILTER || s->picnum == NEWBEAST)
spawned->s->pal = 6;
}

View file

@ -3038,7 +3038,7 @@ HORIZONLY:
p->pos.x += p->posxv >> 14;
p->pos.y += p->posyv >> 14;
updatesector(p->pos.x, p->pos.y, &p->cursector);
changeactorsect(pact, p->cursector);
ChangeActorSect(pact, p->cursector);
}
else
clipmove(p->pos, &p->cursector, p->posxv, p->posyv, 164, (4 << 8), ii, CLIPMASK0, clip);
@ -3065,7 +3065,7 @@ HORIZONLY:
}
// RBG***
setsprite(pact, p->pos.x, p->pos.y, p->pos.z + gs.playerheight);
SetActor(pact, { p->pos.x, p->pos.y, p->pos.z + gs.playerheight });
if (psectlotag < 3)
{
@ -3086,7 +3086,7 @@ HORIZONLY:
S_PlayActorSound(DUKE_ONWATER, pact);
if (p->cursector != s->sector())
changeactorsect(pact, p->cursector);
ChangeActorSect(pact, p->cursector);
if (ud.clipping == 0)
j = (pushmove(&p->pos, &p->cursector, 164L, (4L << 8), (4L << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);

View file

@ -3795,7 +3795,7 @@ HORIZONLY:
p->pos.x += p->posxv >> 14;
p->pos.y += p->posyv >> 14;
updatesector(p->pos.x, p->pos.y, &p->cursector);
changeactorsect(pact, p->cursector);
ChangeActorSect(pact, p->cursector);
}
else
clipmove(p->pos, &p->cursector, p->posxv, p->posyv, 164, (4 << 8), i, CLIPMASK0, clip);
@ -3854,7 +3854,7 @@ HORIZONLY:
S_PlayActorSound(404, clip.actor());
else
check_fta_sounds_r(clip.actor());
changeactorstat(clip.actor(), 1);
ChangeActorStat(clip.actor(), 1);
}
}
else if (!isRRRA() && clip.actor()->s->picnum == RRTILE3410)
@ -3895,7 +3895,7 @@ HORIZONLY:
}
// RBG***
setsprite(pact, p->pos.x, p->pos.y, p->pos.z + gs.playerheight);
SetActor(pact, { p->pos.x, p->pos.y, p->pos.z + gs.playerheight });
if (psectlotag == 800 && (!isRRRA() || !p->lotag800kill))
{
@ -3924,7 +3924,7 @@ HORIZONLY:
S_PlayActorSound(DUKE_ONWATER, pact);
if (p->cursector != s->sector())
changeactorsect(pact, p->cursector);
ChangeActorSect(pact, p->cursector);
int j;
if (ud.clipping == 0)

View file

@ -1427,12 +1427,12 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
auto sp = s->sector();
pushmove(&s->pos, &sp, 128L, (4 << 8), (4 << 8), CLIPMASK0);
if (sp != s->sector() && sp != nullptr)
changeactorsect(targ, sp);
ChangeActorSect(targ, sp);
}
if (s->statnum == 2)
{
changeactorstat(targ, 1);
ChangeActorStat(targ, 1);
targ->timetosleep = SLEEPTIME;
}
if ((s->xrepeat < 24 || s->picnum == SHARK) && pspr->picnum == SHRINKSPARK) return;

View file

@ -320,7 +320,7 @@ void operaterespawns_r(int low)
}
case RRTILE7424:
if (isRRRA() && !ud.monsters_off)
changeactorstat(act, 119);
ChangeActorStat(act, 119);
break;
}
@ -1723,7 +1723,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
case RRTILE8166:
case RRTILE8167:
case RRTILE8168:
changeactorstat(targ, STAT_MISC);
ChangeActorStat(targ, STAT_MISC);
s->picnum = RRTILE5063;
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
break;
@ -1734,7 +1734,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
case RRTILE8593:
case RRTILE8594:
case RRTILE8595:
changeactorstat(targ, STAT_MISC);
ChangeActorStat(targ, STAT_MISC);
s->picnum = RRTILE8588;
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
break;
@ -2393,7 +2393,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
if (s->statnum == 2)
{
changeactorstat(targ, 1);
ChangeActorStat(targ, 1);
targ->timetosleep = SLEEPTIME;
}
}

View file

@ -248,7 +248,7 @@ void spawninitdefault(DDukeActor* actj, DDukeActor *act)
{
// make it go away...
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
return;
}
@ -261,7 +261,7 @@ void spawninitdefault(DDukeActor* actj, DDukeActor *act)
if (ud.monsters_off == 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
return;
}
@ -278,15 +278,15 @@ void spawninitdefault(DDukeActor* actj, DDukeActor *act)
{
if (actj->s->picnum == RESPAWN)
act->tempang = sp->pal = actj->s->pal;
changeactorstat(act, STAT_ACTOR);
ChangeActorStat(act, STAT_ACTOR);
}
else changeactorstat(act, STAT_ZOMBIEACTOR);
else ChangeActorStat(act, STAT_ZOMBIEACTOR);
}
else
{
sp->clipdist = 40;
act->SetOwner(act);
changeactorstat(act, STAT_ACTOR);
ChangeActorStat(act, STAT_ACTOR);
}
act->timetosleep = 0;
@ -334,9 +334,9 @@ void spawntransporter(DDukeActor *actj, DDukeActor* acti, bool beam)
sp->ang = spj->ang;
sp->xvel = 128;
changeactorstat(acti, STAT_MISC);
ChangeActorStat(acti, STAT_MISC);
ssp(acti, CLIPMASK0);
setsprite(acti, sp->x, sp->y, sp->z);
SetActor(acti, sp->pos);
}
//---------------------------------------------------------------------------
@ -362,18 +362,18 @@ int spawnbloodpoolpart1(DDukeActor* acti)
updatesector(sp->x - 108, sp->y + 108, &s1);
if (s1 && s1->floorz != sp->sector()->floorz)
{
sp->xrepeat = sp->yrepeat = 0; changeactorstat(acti, STAT_MISC); return true;
sp->xrepeat = sp->yrepeat = 0; ChangeActorStat(acti, STAT_MISC); return true;
}
}
else { sp->xrepeat = sp->yrepeat = 0; changeactorstat(acti, STAT_MISC); return true; }
else { sp->xrepeat = sp->yrepeat = 0; ChangeActorStat(acti, STAT_MISC); return true; }
}
else { sp->xrepeat = sp->yrepeat = 0; changeactorstat(acti, STAT_MISC); return true; }
else { sp->xrepeat = sp->yrepeat = 0; ChangeActorStat(acti, STAT_MISC); return true; }
}
else { sp->xrepeat = sp->yrepeat = 0; changeactorstat(acti, STAT_MISC); return true; }
else { sp->xrepeat = sp->yrepeat = 0; ChangeActorStat(acti, STAT_MISC); return true; }
if (sp->sector()->lotag == 1)
{
changeactorstat(acti, STAT_MISC);
ChangeActorStat(acti, STAT_MISC);
return true;
}
return false;
@ -405,7 +405,7 @@ void initfootprint(DDukeActor* actj, DDukeActor* acti)
updatesector(sp->x - 84, sp->y + 84, &s1);
if (s1 && s1->floorz != sp->sector()->floorz)
{
sp->xrepeat = sp->yrepeat = 0; changeactorstat(acti, STAT_MISC); return;
sp->xrepeat = sp->yrepeat = 0; ChangeActorStat(acti, STAT_MISC); return;
}
}
else { sp->xrepeat = sp->yrepeat = 0; return; }
@ -423,7 +423,7 @@ void initfootprint(DDukeActor* actj, DDukeActor* acti)
sp->xrepeat = sp->yrepeat = 32;
insertspriteq(acti);
changeactorstat(acti, STAT_MISC);
ChangeActorStat(acti, STAT_MISC);
}
//---------------------------------------------------------------------------
@ -475,7 +475,7 @@ void initshell(DDukeActor* actj, DDukeActor* acti, bool isshell)
sp->xrepeat = sp->yrepeat = isRR() && isshell? 2 : 4;
changeactorstat(acti, STAT_MISC);
ChangeActorStat(acti, STAT_MISC);
}
}
@ -522,14 +522,14 @@ void initcrane(DDukeActor* actj, DDukeActor* acti, int CRANEPOLE)
ss->z = sp->z;
ss->shade = sp->shade;
setsprite(act, ss->pos);
SetActor(act, ss->pos);
break;
}
}
acti->SetOwner(nullptr);
sp->extra = 8;
changeactorstat(acti, STAT_STANDABLE);
ChangeActorStat(acti, STAT_STANDABLE);
}
//---------------------------------------------------------------------------
@ -563,7 +563,7 @@ void initwaterdrip(DDukeActor* actj, DDukeActor* actor)
}
sp->xrepeat = 24;
sp->yrepeat = 24;
changeactorstat(actor, STAT_STANDABLE);
ChangeActorStat(actor, STAT_STANDABLE);
}
@ -581,7 +581,7 @@ int initreactor(DDukeActor* actj, DDukeActor* actor, bool isrecon)
if (sp->lotag > ud.player_skill)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(actor, STAT_MISC);
ChangeActorStat(actor, STAT_MISC);
return true;
}
if (!isRR() || actorflag(actor, SFLAG_KILLCOUNT)) // Duke is just like Doom - Bad guys always count as kill.
@ -590,7 +590,7 @@ int initreactor(DDukeActor* actj, DDukeActor* actor, bool isrecon)
if (ud.monsters_off == 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(actor, STAT_MISC);
ChangeActorStat(actor, STAT_MISC);
return false;
}
sp->extra = 130;
@ -603,13 +603,13 @@ int initreactor(DDukeActor* actj, DDukeActor* actor, bool isrecon)
if (ud.multimode < 2 && sp->pal != 0)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(actor, STAT_MISC);
ChangeActorStat(actor, STAT_MISC);
return false;
}
sp->pal = 0;
sp->shade = -17;
changeactorstat(actor, 2);
ChangeActorStat(actor, 2);
return false;
}
@ -654,7 +654,7 @@ void spawneffector(DDukeActor* actor)
t[4] = sectp->floorz == sp->z;
sp->cstat = 0;
changeactorstat(actor, STAT_TRANSPORT);
ChangeActorStat(actor, STAT_TRANSPORT);
return;
case SE_1_PIVOT:
actor->SetOwner(nullptr);
@ -968,7 +968,7 @@ void spawneffector(DDukeActor* actor)
sp->picnum = 0;
sp->cstat2 = CSTAT2_SPRITE_NOFIND;
sp->cstat = CSTAT_SPRITE_INVISIBLE;
changeactorsect(actor, STAT_REMOVED);
ChangeActorStat(actor, STAT_REMOVED);
Printf("Found lonely Sector Effector (lotag 0) at (%d,%d)\n", sp->x, sp->y);
return;
}
@ -1075,9 +1075,9 @@ void spawneffector(DDukeActor* actor)
if ((!isRR() && actor->s->lotag >= 40 && actor->s->lotag <= 45) ||
(isRRRA() && actor->s->lotag >= 150 && actor->s->lotag <= 155))
changeactorstat(actor, STAT_RAROR);
ChangeActorStat(actor, STAT_RAROR);
else
changeactorstat(actor, STAT_EFFECTOR);
ChangeActorStat(actor, STAT_EFFECTOR);
}

View file

@ -90,7 +90,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if ((sp->lotag > ud.player_skill) || ud.monsters_off)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
else
@ -103,15 +103,15 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (spj) {
act->timetosleep = 0;
check_fta_sounds_d(act);
changeactorstat(act, 1);
ChangeActorStat(act, 1);
}
else
changeactorstat(act, 2);
ChangeActorStat(act, 2);
}
return act;
case FIREFLYFLYINGEFFECT:
act->SetOwner(actj);
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
sp->xrepeat = 16;
sp->yrepeat = 16;
return act;
@ -119,21 +119,21 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (spj->xrepeat < 30)
return act;
act->SetOwner(actj);
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
sp->x += krand() % 512 - 256;
sp->y += krand() % 512 - 256;
sp->xrepeat = 16;
sp->yrepeat = 16;
return act;
case WHISPYSMOKE:
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
sp->x += krand() % 256 - 128;
sp->y += krand() % 256 - 128;
sp->xrepeat = 20;
sp->yrepeat = 20;
return act;
case SERIOUSSAM:
changeactorstat(act, 2);
ChangeActorStat(act, 2);
sp->cstat = 257;
sp->extra = 150;
return act;
@ -147,12 +147,12 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
break;
case FOF:
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case WATERSPLASH2:
if (spj)
{
setsprite(act, spj->x, spj->y, spj->z);
SetActor(act, spj->pos);
sp->xrepeat = sp->yrepeat = 8 + (krand() & 7);
}
else sp->xrepeat = sp->yrepeat = 16 + (krand() & 15);
@ -203,7 +203,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
case DUKETORSO:
case DUKEGUN:
case DUKELEG:
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case TONGUE:
if (spj)
@ -211,7 +211,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->z -= PHEIGHT_DUKE;
sp->zvel = 256 - (krand() & 511);
sp->xvel = 64 - (krand() & 127);
changeactorstat(act, 4);
ChangeActorStat(act, 4);
break;
case NATURALLIGHTNING:
sp->cstat &= ~257;
@ -231,7 +231,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
}
else sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
@ -250,19 +250,19 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
}
if (spj) sp->ang = actj->temp_data[5] + 512;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case FORCESPHERE:
if (!spj)
{
sp->cstat = 32768;
changeactorstat(act, 2);
ChangeActorStat(act, 2);
}
else
{
sp->xrepeat = sp->yrepeat = 1;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
}
break;
@ -271,7 +271,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->z -= (26 << 8);
if (spj && spj->pal == 6)
sp->pal = 6;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case LAVAPOOL:
if (!isWorldTour()) // Twentieth Anniversary World Tour
@ -310,7 +310,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
case FECES:
if (spj)
sp->xrepeat = sp->yrepeat = 1;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case BLOODSPLAT1:
@ -324,14 +324,14 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (spj && spj->pal == 6)
sp->pal = 6;
insertspriteq(act);
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case TRIPBOMB:
if (sp->lotag > ud.player_skill)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
@ -355,7 +355,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->extra = 20;
sp->cstat |= 257;
}
changeactorstat(act, 2);
ChangeActorStat(act, 2);
break;
case HYDRENT:
@ -427,12 +427,12 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->cstat |= 257;
[[fallthrough]];
case OCEANSPRITE4:
changeactorstat(act, 0);
ChangeActorStat(act, 0);
break;
case FEMMAG1:
case FEMMAG2:
sp->cstat &= ~257;
changeactorstat(act, 0);
ChangeActorStat(act, 0);
break;
case DUKETAG:
case SIGN1:
@ -440,7 +440,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (ud.multimode < 2 && sp->pal)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
}
else sp->pal = 0;
break;
@ -462,7 +462,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
{
int j = sp->cstat & 60;
sp->cstat = j | 1;
changeactorstat(act, 0);
ChangeActorStat(act, 0);
break;
}
case FOOTPRINTS:
@ -507,7 +507,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->clipdist = 32;
}
changeactorstat(act, 2);
ChangeActorStat(act, 2);
break;
case DUKELYINGDEAD:
@ -546,7 +546,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->yvel = sp->hitag;
[[fallthrough]];
case WEATHERWARN:
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case SPOTLITE:
@ -568,7 +568,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = sp->yrepeat = 8;
sp->ang = krand() & 2047;
}
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case VIEWSCREEN:
@ -576,7 +576,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
act->SetOwner(act);
sp->lotag = 1;
sp->extra = 1;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case SHELL: //From the player
@ -591,11 +591,11 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (ud.multimode < 2 && sp->pal == 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
sp->cstat = 32768;
changeactorstat(act, 11);
ChangeActorStat(act, 11);
break;
case ONFIRE:
@ -657,7 +657,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->cstat |= 0x80;
}
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
@ -670,7 +670,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (sp->sector()->lotag != 2)
sp->cstat |= 32768;
}
changeactorstat(act, STAT_DUMMYPLAYER);
ChangeActorStat(act, STAT_DUMMYPLAYER);
break;
case APLAYER:
@ -680,9 +680,9 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (j == 2) j = 0;
if (ud.multimode < 2 || (ud.multimode > 1 && j != sp->lotag))
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
else
changeactorstat(act, STAT_PLAYER);
ChangeActorStat(act, STAT_PLAYER);
break;
}
case WATERBUBBLE:
@ -696,7 +696,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
}
else sp->xrepeat = sp->yrepeat = 32;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case CRANE:
@ -718,12 +718,12 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->yrepeat = 24;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case PLUG:
sp->lotag = 9999;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case TOUCHPLATE:
t[2] = sectp->floorz;
@ -734,7 +734,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (sp->pal && ud.multimode > 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
}
@ -744,7 +744,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
|| (sp->pal == 3 && (ud.multimode == 1 || (ud.multimode > 1 && ud.coop == 1)))) // Dukematch Only
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
}
@ -756,7 +756,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->hitag = 0;
}
sp->cstat |= 32768;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case BOLT1:
case BOLT1 + 1:
@ -773,14 +773,14 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (sp->picnum == MASTERSWITCH)
sp->cstat |= 32768;
sp->yvel = 0;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case TARGET:
case DUCK:
case LETTER:
sp->extra = 1;
sp->cstat |= 257;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case OCTABRAINSTAYPUT:
case LIZTROOPSTAYPUT:
@ -875,7 +875,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if ((sp->lotag > ud.player_skill) || ud.monsters_off == 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
else
@ -902,9 +902,9 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
{
act->timetosleep = 0;
check_fta_sounds_d(act);
changeactorstat(act, 1);
ChangeActorStat(act, 1);
}
else changeactorstat(act, 2);
else ChangeActorStat(act, 2);
}
if (sp->picnum == ROTATEGUN)
@ -914,7 +914,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
case LOCATORS:
sp->cstat |= 32768;
changeactorstat(act, 7);
ChangeActorStat(act, 7);
break;
case ACTIVATORLOCKED:
@ -922,13 +922,13 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->cstat = 32768;
if (sp->picnum == ACTIVATORLOCKED)
sp->sector()->lotag |= 16384;
changeactorstat(act, 8);
ChangeActorStat(act, 8);
break;
case DOORSHOCK:
sp->cstat |= 1 + 256;
sp->shade = -12;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case OOZ:
@ -943,7 +943,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
insertspriteq(act);
}
changeactorstat(act, 1);
ChangeActorStat(act, 1);
getglobalz(act);
@ -1022,7 +1022,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if ((ud.multimode < 2 && sp->pal != 0) || (sp->lotag > ud.player_skill))
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
@ -1037,7 +1037,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (ud.multimode > 1 && ud.coop != 1 && sp->picnum == ACCESSCARD)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
else
@ -1049,10 +1049,10 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->shade = -17;
if (spj) changeactorstat(act, STAT_ACTOR);
if (spj) ChangeActorStat(act, STAT_ACTOR);
else
{
changeactorstat(act, STAT_ZOMBIEACTOR);
ChangeActorStat(act, STAT_ZOMBIEACTOR);
makeitfall(act);
}
break;
@ -1068,12 +1068,12 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
case BOX:
sp->cstat = 257; // Make it hitable
sp->extra = 1;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case FLOORFLAME:
sp->shade = -127;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case BOUNCEMINE:
@ -1082,7 +1082,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = sp->yrepeat = 24;
sp->shade = -127;
sp->extra = gs.impact_damage << 2;
changeactorstat(act, STAT_ZOMBIEACTOR);
ChangeActorStat(act, STAT_ZOMBIEACTOR);
break;
case CAMERA1:
@ -1102,13 +1102,13 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (ud.multimode < 2 && sp->pal != 0)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
else sp->pal = 0;
if (sp->picnum == CAMERAPOLE || sp->picnum == GENERICPOLE) break;
sp->picnum = CAMERA1;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case STEAM:
if (spj)
@ -1121,7 +1121,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
}
[[fallthrough]];
case CEILINGSTEAM:
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case SECTOREFFECTOR:
@ -1142,7 +1142,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
else sp->cstat = 1 + 256;
sp->extra = gs.impact_damage << 2;
act->SetOwner(act);
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case CRACK1:
@ -1164,13 +1164,13 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (ud.multimode < 2 && sp->pal != 0)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
sp->pal = 0;
act->SetOwner(act);
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
sp->xvel = 8;
ssp(act, CLIPMASK0);
break;
@ -1210,7 +1210,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
if (ud.monsters_off == 1 && sp->picnum == EGG)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
}
else
{
@ -1220,12 +1220,12 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act)
ps[connecthead].max_actors_killed++;
}
sp->cstat = 257 | (krand() & 4);
changeactorstat(act, STAT_ZOMBIEACTOR);
ChangeActorStat(act, STAT_ZOMBIEACTOR);
}
break;
case TOILETWATER:
sp->shade = -16;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
}
return act;

View file

@ -62,11 +62,11 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->yrepeat = 0;
sp->clipdist = 0;
sp->extra = 0;
changeactorstat(act, STAT_BOWLING);
ChangeActorStat(act, STAT_BOWLING);
break;
case RRTILE3410:
sp->extra = 0;
changeactorstat(act, 107);
ChangeActorStat(act, 107);
break;
case RRTILE8450:
if (!isRRRA()) goto default_case;
@ -74,7 +74,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->yrepeat = 64;
sp->extra = sp->lotag;
sp->cstat |= 257;
changeactorstat(act, 116);
ChangeActorStat(act, 116);
break;
case PIG + 11:
if (!isRRRA()) goto default_case;
@ -83,7 +83,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->clipdist = 0;
sp->extra = 0;
sp->cstat = 0;
changeactorstat(act, 121);
ChangeActorStat(act, 121);
break;
case RRTILE8487:
case RRTILE8489:
@ -93,14 +93,14 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->extra = 0;
sp->cstat |= 257;
sp->hitag = 0;
changeactorstat(act, 117);
ChangeActorStat(act, 117);
break;
case RRTILE7424:
if (!isRRRA()) goto default_case;
sp->extra = 0;
sp->xrepeat = 0;
sp->yrepeat = 0;
changeactorstat(act, 11);
ChangeActorStat(act, 11);
break;
case RRTILE7936:
if (!isRRRA()) goto default_case;
@ -123,7 +123,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (!isRRRA()) goto default_case;
sp->lotag = 5;
sp->clipdist = 0;
changeactorstat(act, 123);
ChangeActorStat(act, 123);
break;
case RRTILE8704:
if (!isRRRA()) goto default_case;
@ -148,7 +148,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->clipdist = 0;
act->SetOwner(act);
sp->extra = 0;
changeactorstat(act, 115);
ChangeActorStat(act, 115);
break;
case RRTILE8593:
if (!isRRRA()) goto default_case;
@ -156,7 +156,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->clipdist = 0;
act->SetOwner(act);
sp->extra = 0;
changeactorstat(act, 122);
ChangeActorStat(act, 122);
break;
case RRTILE285:
case RRTILE286:
@ -173,7 +173,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->yrepeat = 0;
sp->clipdist = 0;
sp->lotag = 0;
changeactorstat(act, 106);
ChangeActorStat(act, 106);
break;
case RRTILE2460:
@ -204,7 +204,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
case MUD:
if (spj)
{
setsprite(act, spj->x, spj->y, spj->z);
SetActor(act, spj->pos);
sp->xrepeat = sp->yrepeat = 8 + (krand() & 7);
}
else sp->xrepeat = sp->yrepeat = 16 + (krand() & 15);
@ -282,7 +282,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->yrepeat = 54;
}
}
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case TONGUE:
if (spj)
@ -290,7 +290,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->z -= PHEIGHT_RR;
sp->zvel = 256 - (krand() & 511);
sp->xvel = 64 - (krand() & 127);
changeactorstat(act, 4);
ChangeActorStat(act, 4);
break;
case TRANSPORTERSTAR:
case TRANSPORTERBEAM:
@ -309,26 +309,26 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
}
else sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case FORCESPHERE:
if (!spj)
{
sp->cstat = 32768;
changeactorstat(act, 2);
ChangeActorStat(act, 2);
}
else
{
sp->xrepeat = sp->yrepeat = 1;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
}
break;
case BLOOD:
sp->xrepeat = sp->yrepeat = 4;
sp->z -= (26 << 8);
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case BLOODPOOL:
if (spawnbloodpoolpart1(act)) break;
@ -360,7 +360,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (spj && spj->pal == 6)
sp->pal = 6;
insertspriteq(act);
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case HYDRENT:
@ -416,19 +416,19 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
case PIPE6:
sp->clipdist = 32;
sp->cstat |= 257;
changeactorstat(act, 0);
ChangeActorStat(act, 0);
break;
case FEMMAG1:
case FEMMAG2:
sp->cstat &= ~257;
changeactorstat(act, 0);
ChangeActorStat(act, 0);
break;
case MASKWALL7:
{
int j = sp->cstat & 60;
sp->cstat = j | 1;
changeactorstat(act, 0);
ChangeActorStat(act, 0);
break;
}
case FOOTPRINTS:
@ -456,32 +456,32 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->cstat |= 257;
sp->clipdist = 32;
}
changeactorstat(act, 2);
ChangeActorStat(act, 2);
break;
case BOWLINGBALL:
sp->cstat = 256;
sp->clipdist = 64;
sp->xrepeat = 11;
sp->yrepeat = 9;
changeactorstat(act, 2);
ChangeActorStat(act, 2);
break;
case HENSTAND:
sp->cstat = 257;
sp->clipdist = 48;
sp->xrepeat = 21;
sp->yrepeat = 15;
changeactorstat(act, 2);
ChangeActorStat(act, 2);
break;
case RRTILE295:
sp->cstat |= 32768;
changeactorstat(act, 107);
ChangeActorStat(act, 107);
break;
case RRTILE296:
case RRTILE297:
sp->xrepeat = 64;
sp->yrepeat = 64;
sp->clipdist = 64;
changeactorstat(act, 108);
ChangeActorStat(act, 108);
break;
case RRTILE3190:
case RRTILE3191:
@ -491,7 +491,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = 32;
sp->yrepeat = 26;
sp->xvel = 32;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case RRTILE3120:
sp->cstat = 257;
@ -499,7 +499,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = 12;
sp->yrepeat = 10;
sp->xvel = 32;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case RRTILE3122:
sp->cstat = 257;
@ -507,7 +507,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = 8;
sp->yrepeat = 6;
sp->xvel = 16;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case RRTILE3123:
sp->cstat = 257;
@ -515,7 +515,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = 13;
sp->yrepeat = 13;
sp->xvel = 16;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case RRTILE3124:
sp->cstat = 257;
@ -523,7 +523,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = 17;
sp->yrepeat = 12;
sp->xvel = 32;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case RRTILE3132:
sp->cstat = 257;
@ -531,14 +531,14 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = 13;
sp->yrepeat = 10;
sp->xvel = 0;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case BOWLINGPIN:
sp->cstat = 257;
sp->clipdist = 48;
sp->xrepeat = 23;
sp->yrepeat = 23;
changeactorstat(act, 2);
ChangeActorStat(act, 2);
break;
case DUKELYINGDEAD:
if (spj && spj->picnum == APLAYER)
@ -568,7 +568,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
case MIKE:
if (sp->picnum == MIKE)
sp->yvel = sp->hitag;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case SPOTLITE:
@ -588,7 +588,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = sp->yrepeat = 8;
sp->ang = krand() & 2047;
}
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case SHELL: //From the player
@ -602,16 +602,16 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (ud.multimode < 2 && sp->pal == 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
sp->cstat = 32768;
changeactorstat(act, 11);
ChangeActorStat(act, 11);
break;
case SOUNDFX:
{
sp->cstat |= 32768;
changeactorstat(act, 2);
ChangeActorStat(act, 2);
}
break;
case EXPLOSION2:
@ -657,7 +657,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->z = x - (12 << 8);
}
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
@ -670,7 +670,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (sp->sector()->lotag != 2)
sp->cstat |= 32768;
}
changeactorstat(act, 13);
ChangeActorStat(act, 13);
break;
case APLAYER:
@ -680,9 +680,9 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (j == 2) j = 0;
if (ud.multimode < 2 || (ud.multimode > 1 && j != sp->lotag))
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
else
changeactorstat(act, 10);
ChangeActorStat(act, 10);
break;
}
case WATERBUBBLE:
@ -696,7 +696,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
}
else
sp->xrepeat = sp->yrepeat = 32;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
case CRANE:
initcrane(actj, act, CRANEPOLE);
@ -710,12 +710,12 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->xrepeat = 24;
sp->yrepeat = 24;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case PLUG:
sp->lotag = 9999;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case TOUCHPLATE:
t[2] = sectp->floorz;
@ -724,13 +724,13 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (sp->pal && ud.multimode > 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
[[fallthrough]];
case WATERBUBBLEMAKER:
sp->cstat |= 32768;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case BOLT1:
case BOLT1 + 1:
@ -743,7 +743,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (sp->picnum == MASTERSWITCH)
sp->cstat |= 32768;
sp->yvel = 0;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
// this is not really nice...
@ -1030,7 +1030,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if ((sp->lotag > ud.player_skill) || ud.monsters_off == 1)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
else
@ -1056,10 +1056,10 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
{
act->timetosleep = 0;
check_fta_sounds_r(act);
changeactorstat(act, STAT_ACTOR);
ChangeActorStat(act, STAT_ACTOR);
sp->shade = spj->shade;
}
else changeactorstat(act, STAT_ZOMBIEACTOR);
else ChangeActorStat(act, STAT_ZOMBIEACTOR);
}
@ -1067,7 +1067,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
case LOCATORS:
// sp->xrepeat=sp->yrepeat=0;
sp->cstat |= 32768;
changeactorstat(act, STAT_LOCATOR);
ChangeActorStat(act, STAT_LOCATOR);
break;
case ACTIVATORLOCKED:
@ -1076,13 +1076,13 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->cstat |= 32768;
if (sp->picnum == ACTIVATORLOCKED)
sectp->lotag ^= 16384;
changeactorstat(act, STAT_ACTIVATOR);
ChangeActorStat(act, STAT_ACTIVATOR);
break;
case DOORSHOCK:
sp->cstat |= 1 + 256;
sp->shade = -12;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case OOZ:
@ -1093,7 +1093,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (spj->picnum == NUKEBARREL)
sp->pal = 8;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
getglobalz(act);
@ -1179,7 +1179,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if ((ud.multimode < 2 && sp->pal != 0) || (sp->lotag > ud.player_skill))
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
@ -1194,7 +1194,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (ud.multimode > 1 && ud.coop != 1 && sp->picnum == ACCESSCARD)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
else
@ -1206,10 +1206,10 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
sp->shade = -17;
if (spj) changeactorstat(act, STAT_ACTOR);
if (spj) ChangeActorStat(act, STAT_ACTOR);
else
{
changeactorstat(act, STAT_ZOMBIEACTOR);
ChangeActorStat(act, STAT_ZOMBIEACTOR);
makeitfall(act);
}
switch (sp->picnum)
@ -1332,7 +1332,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
case TIRE:
sp->cstat = 257; // Make it hitable
sp->extra = 1;
changeactorstat(act, 6);
ChangeActorStat(act, 6);
break;
case CAMERA1:
@ -1349,13 +1349,13 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (ud.multimode < 2 && sp->pal != 0)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
else sp->pal = 0;
if (sp->picnum == CAMERAPOLE) break;
sp->picnum = CAMERA1;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case STEAM:
if (spj)
@ -1368,7 +1368,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
}
[[fallthrough]];
case CEILINGSTEAM:
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case SECTOREFFECTOR:
spawneffector(act);
@ -1386,7 +1386,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
else sp->cstat = 1 + 256;
sp->extra = gs.impact_damage << 2;
act->SetOwner(act);
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case CRACK1:
@ -1398,13 +1398,13 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (ud.multimode < 2 && sp->pal != 0)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
break;
}
sp->pal = 0;
act->SetOwner(act);
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
sp->xvel = 8;
ssp(act, CLIPMASK0);
break;
@ -1423,7 +1423,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
act->saved_ammo = 100;
sp->cstat = 257;
sp->lotag = 1;
changeactorstat(act, STAT_ACTOR);
ChangeActorStat(act, STAT_ACTOR);
break;
case EMPTYBOAT:
if (!isRRRA()) goto default_case;
@ -1439,7 +1439,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
act->saved_ammo = 20;
sp->cstat = 257;
sp->lotag = 1;
changeactorstat(act, 1);
ChangeActorStat(act, 1);
break;
case TOILET:
@ -1476,26 +1476,26 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act)
if (ud.monsters_off == 1 && sp->picnum == EGG)
{
sp->xrepeat = sp->yrepeat = 0;
changeactorstat(act, STAT_MISC);
ChangeActorStat(act, STAT_MISC);
}
else
{
if (sp->picnum == EGG)
sp->clipdist = 24;
sp->cstat = 257 | (krand() & 4);
changeactorstat(act, STAT_ZOMBIEACTOR);
ChangeActorStat(act, STAT_ZOMBIEACTOR);
}
break;
case TOILETWATER:
sp->shade = -16;
changeactorstat(act, STAT_STANDABLE);
ChangeActorStat(act, STAT_STANDABLE);
break;
case RRTILE63:
sp->cstat |= 32768;
sp->xrepeat = 1;
sp->yrepeat = 1;
sp->clipdist = 1;
changeactorstat(act, 100);
ChangeActorStat(act, 100);
break;
}
return act;

View file

@ -72,19 +72,4 @@ inline FSerializer& Serialize(FSerializer& arc, const char* keyname, DExhumedAct
return arc;
}
inline void ChangeActorStat(DExhumedActor* actor, int stat)
{
changespritestat(actor->GetSpriteIndex(), stat);
}
inline void ChangeActorSect(DExhumedActor* actor, sectortype* stat)
{
changespritesect(actor->GetSpriteIndex(), sector.IndexOf(stat));
}
inline void setActorPos(DExhumedActor* actor, vec3_t* pos)
{
setsprite(actor->GetSpriteIndex(), pos);
}
END_BLD_NS

View file

@ -890,7 +890,7 @@ void AIPlayer::Tick(RunListEvent* ev)
pPlayerSprite->y += (y >> 14);
vec3_t pos = { pPlayerSprite->x, pPlayerSprite->y, pPlayerSprite->z };
setActorPos(pPlayerActor, &pos);
SetActor(pPlayerActor, &pos);
pPlayerSprite->z = pPlayerSprite->sector()->floorz;
}

View file

@ -813,7 +813,7 @@ void ChangeState(DSWActor* actor, STATEp statep)
void change_actor_stat(DSWActor* actor, int stat, bool quick)
{
changespritestat(actor->GetSpriteIndex(), stat);
ChangeActorStat(actor, stat);
if (actor->hasU() && !quick)
{

View file

@ -63,24 +63,5 @@ inline FSerializer& Serialize(FSerializer& arc, const char* keyname, DSWActor*&
return arc;
}
inline void ChangeActorSect(DSWActor* actor, int sect)
{
changespritesect(actor->GetSpriteIndex(), sect);
}
inline void ChangeActorSect(DSWActor* actor, sectortype* sect)
{
changespritesect(actor->GetSpriteIndex(), sectnum(sect));
}
inline int SetActorZ(DSWActor* actor, const vec3_t* newpos)
{
return setspritez(actor->GetSpriteIndex(), newpos);
}
inline int SetActor(DSWActor* actor, const vec3_t* newpos)
{
return setsprite(actor->GetSpriteIndex(), newpos);
}
END_SW_NS