- animateobjs BROKENVASE, FX.

This commit is contained in:
Christoph Oelckers 2021-11-21 12:13:29 +01:00
parent 3efe10e9c3
commit 7fed546ee7

View file

@ -1331,17 +1331,18 @@ void animateobjs(PLAYER& plr) {
for (i = headspritestat[BROKENVASE]; i >= 0; i = nextsprite) { for (i = headspritestat[BROKENVASE]; i >= 0; i = nextsprite) {
nextsprite = nextspritestat[i]; nextsprite = nextspritestat[i];
auto& spr = sprite[i];
sprite[i].lotag -= TICSPERFRAME; spr.lotag -= TICSPERFRAME;
if (sprite[i].lotag < 0) { if (spr.lotag < 0) {
sprite[i].picnum++; spr.picnum++;
sprite[i].lotag = 18; spr.lotag = 18;
if (sprite[i].picnum == (SHATTERVASE + 6) || sprite[i].picnum == (SHATTERVASE2 + 6) if (spr.picnum == (SHATTERVASE + 6) || spr.picnum == (SHATTERVASE2 + 6)
|| sprite[i].picnum == (SHATTERVASE3 + 6)) || spr.picnum == (SHATTERVASE3 + 6))
changespritestat(i, (short) 0); changespritestat(i, (short) 0);
else { else {
switch (sprite[i].picnum) { switch (spr.picnum) {
case FSHATTERBARREL + 2: case FSHATTERBARREL + 2:
randompotion(i); randompotion(i);
changespritestat(i, (short) 0); changespritestat(i, (short) 0);
@ -1365,56 +1366,58 @@ void animateobjs(PLAYER& plr) {
// Go through explosion sprites // Go through explosion sprites
for (i = headspritestat[FX]; i >= 0; i = nextsprite) { for (i = headspritestat[FX]; i >= 0; i = nextsprite) {
nextsprite = nextspritestat[i]; nextsprite = nextspritestat[i];
sprite[i].lotag -= TICSPERFRAME; auto& spr = sprite[i];
if (// sprite[i].picnum == PLASMA || spr.lotag -= TICSPERFRAME;
sprite[i].picnum == BULLET || sprite[i].picnum == EXPLOSION || sprite[i].picnum == FIREBALL
|| sprite[i].picnum == MONSTERBALL || sprite[i].picnum == FATSPANK) {
// sprite[i].z+=sprite[i].zvel; if (// spr.picnum == PLASMA ||
sprite[i].zvel += (TICSPERFRAME << 5); spr.picnum == BULLET || spr.picnum == EXPLOSION || spr.picnum == FIREBALL
if (sprite[i].z < sector[sprite[i].sectnum].ceilingz + (4 << 8)) { || spr.picnum == MONSTERBALL || spr.picnum == FATSPANK) {
sprite[i].z = sector[sprite[i].sectnum].ceilingz + (4 << 8);
sprite[i].zvel = (short) -(sprite[i].zvel >> 1); // spr.z+=spr.zvel;
spr.zvel += (TICSPERFRAME << 5);
if (spr.z < sector[spr.sectnum].ceilingz + (4 << 8)) {
spr.z = sector[spr.sectnum].ceilingz + (4 << 8);
spr.zvel = (short) -(spr.zvel >> 1);
} }
if (sprite[i].z > sector[sprite[i].sectnum].floorz - (4 << 8) && sprite[i].picnum != EXPLOSION) { if (spr.z > sector[spr.sectnum].floorz - (4 << 8) && spr.picnum != EXPLOSION) {
sprite[i].z = sector[sprite[i].sectnum].floorz - (4 << 8); spr.z = sector[spr.sectnum].floorz - (4 << 8);
sprite[i].zvel = 0; spr.zvel = 0;
sprite[i].lotag = 4; spr.lotag = 4;
} }
dax = ((((int) sprite[i].xvel) * TICSPERFRAME) >> 3); dax = ((((int) spr.xvel) * TICSPERFRAME) >> 3);
day = ((((int) sprite[i].yvel) * TICSPERFRAME) >> 3); day = ((((int) spr.yvel) * TICSPERFRAME) >> 3);
daz = (((int) sprite[i].zvel) * TICSPERFRAME); daz = (((int) spr.zvel) * TICSPERFRAME);
movestat = (short) movesprite((short) i, dax, day, daz, 4 << 8, 4 << 8, 1); movestat = (short) movesprite((short) i, dax, day, daz, 4 << 8, 4 << 8, 1);
setsprite(i, sprite[i].x, sprite[i].y, sprite[i].z); setsprite(i, spr.x, spr.y, spr.z);
} }
if (sprite[i].picnum == ICECUBE && sprite[i].z < sector[sprite[i].sectnum].floorz) { if (spr.picnum == ICECUBE && spr.z < sector[spr.sectnum].floorz) {
sprite[i].z += sprite[i].zvel; spr.z += spr.zvel;
daz = sprite[i].zvel += TICSPERFRAME << 4; daz = spr.zvel += TICSPERFRAME << 4;
movestat = (short) movesprite((short) i, (bcos(sprite[i].ang) * TICSPERFRAME) << 3, movestat = (short) movesprite((short) i, (bcos(spr.ang) * TICSPERFRAME) << 3,
(bsin(sprite[i].ang) * TICSPERFRAME) << 3, daz, 4 << 8, 4 << 8, 1); (bsin(spr.ang) * TICSPERFRAME) << 3, daz, 4 << 8, 4 << 8, 1);
} }
if (sprite[i].lotag < 0 || movestat != 0) if (spr.lotag < 0 || movestat != 0)
if (sprite[i].picnum == PLASMA || sprite[i].picnum == EXPLOSION || sprite[i].picnum == FIREBALL if (spr.picnum == PLASMA || spr.picnum == EXPLOSION || spr.picnum == FIREBALL
|| sprite[i].picnum == MONSTERBALL || sprite[i].picnum == FATSPANK || spr.picnum == MONSTERBALL || spr.picnum == FATSPANK
|| sprite[i].picnum == ICECUBE) { || spr.picnum == ICECUBE) {
deletesprite(i); deletesprite(i);
continue; continue;
} }
if (sprite[i].z + (8 << 8) >= sector[sprite[i].sectnum].floorz && sprite[i].picnum == ICECUBE if (spr.z + (8 << 8) >= sector[spr.sectnum].floorz && spr.picnum == ICECUBE
|| movestat != 0) { || movestat != 0) {
sprite[i].z = sector[sprite[i].sectnum].floorz; spr.z = sector[spr.sectnum].floorz;
changespritestat(i, (short) 0); changespritestat(i, (short) 0);
if (sector[sprite[i].sectnum].floorpicnum == WATER || sector[sprite[i].sectnum].floorpicnum == SLIME if (sector[spr.sectnum].floorpicnum == WATER || sector[spr.sectnum].floorpicnum == SLIME
|| sector[sprite[i].sectnum].floorpicnum == FLOORMIRROR) { || sector[spr.sectnum].floorpicnum == FLOORMIRROR) {
if (sprite[i].picnum == FISH) if (spr.picnum == FISH)
sprite[i].z = sector[sprite[i].sectnum].floorz; spr.z = sector[spr.sectnum].floorz;
else { else {
if (krand() % 100 > 60) { if (krand() % 100 > 60) {
makemonstersplash(SPLASHAROO, i); makemonstersplash(SPLASHAROO, i);
@ -1422,7 +1425,7 @@ void animateobjs(PLAYER& plr) {
} }
} }
} else { } else {
if (sprite[i].lotag < 0) { if (spr.lotag < 0) {
deletesprite((short) i); deletesprite((short) i);
} }
} }