- explosion2, trailingsmoke

This commit is contained in:
Christoph Oelckers 2021-11-21 12:17:53 +01:00
parent 4af9d43a28
commit 46b45b6a4d

View file

@ -1429,66 +1429,68 @@ void explosion(int i, int x, int y, int z, int owner) {
void explosion2(int i, int x, int y, int z, int owner) {
int j = insertsprite(sprite[i].sectnum, EXPLO);
auto& spawned = sprite[j];
boolean isWH2 = isWh2();
if(!isWH2) {
sprite[j].x = x + (krand() & 256) - 128;
sprite[j].y = y + (krand() & 256) - 128;
sprite[j].z = z;
spawned.x = x + (krand() & 256) - 128;
spawned.y = y + (krand() & 256) - 128;
spawned.z = z;
} else {
sprite[j].x = x;
sprite[j].y = y;
sprite[j].z = z + (16 << 8);
spawned.x = x;
spawned.y = y;
spawned.z = z + (16 << 8);
}
sprite[j].cstat = 0;
sprite[j].cstat &= ~3;
spawned.cstat = 0;
spawned.cstat &= ~3;
sprite[j].shade = -25;
sprite[j].xrepeat = 64;
sprite[j].yrepeat = 64;
sprite[j].ang = (short) (krand() & 2047);
sprite[j].xvel = (short) ((krand() & 256) - 128);
sprite[j].yvel = (short) ((krand() & 256) - 128);
sprite[j].zvel = (short) ((krand() & 256) - 128);
sprite[j].owner = sprite[i].owner;
sprite[j].hitag = 0;
sprite[j].pal = 0;
spawned.shade = -25;
spawned.xrepeat = 64;
spawned.yrepeat = 64;
spawned.ang = (short) (krand() & 2047);
spawned.xvel = (short) ((krand() & 256) - 128);
spawned.yvel = (short) ((krand() & 256) - 128);
spawned.zvel = (short) ((krand() & 256) - 128);
spawned.owner = sprite[i].owner;
spawned.hitag = 0;
spawned.pal = 0;
if(!isWH2) {
sprite[j].picnum = MONSTERBALL;
sprite[j].lotag = 128;
spawned.picnum = MONSTERBALL;
spawned.lotag = 128;
} else {
sprite[j].picnum = EXPLOSTART;
sprite[j].lotag = 12;
spawned.picnum = EXPLOSTART;
spawned.lotag = 12;
}
}
void trailingsmoke(int i, boolean ball) {
int j = insertsprite(sprite[i].sectnum, SMOKE);
auto& spawned = sprite[j];
sprite[j].x = sprite[i].x;
sprite[j].y = sprite[i].y;
sprite[j].z = sprite[i].z;
spawned.x = sprite[i].x;
spawned.y = sprite[i].y;
spawned.z = sprite[i].z;
sprite[j].cstat = 0x03;
sprite[j].cstat &= ~3;
sprite[j].picnum = SMOKEFX;
sprite[j].shade = 0;
spawned.cstat = 0x03;
spawned.cstat &= ~3;
spawned.picnum = SMOKEFX;
spawned.shade = 0;
if (ball) {
sprite[j].xrepeat = 128;
sprite[j].yrepeat = 128;
spawned.xrepeat = 128;
spawned.yrepeat = 128;
} else {
sprite[j].xrepeat = 32;
sprite[j].yrepeat = 32;
spawned.xrepeat = 32;
spawned.yrepeat = 32;
}
sprite[j].pal = 0;
spawned.pal = 0;
sprite[j].owner = sprite[i].owner;
sprite[j].lotag = 256;
sprite[j].hitag = 0;
spawned.owner = sprite[i].owner;
spawned.lotag = 256;
spawned.hitag = 0;
}
void icecubes(int i, int x, int y, int z, int owner) {