- floatified handle_se13.

This commit is contained in:
Christoph Oelckers 2022-09-11 22:28:05 +02:00
parent 998d71875f
commit 11735c2963
2 changed files with 23 additions and 22 deletions

View file

@ -3619,7 +3619,7 @@ void handle_se12(DDukeActor *actor, int planeonly)
//---------------------------------------------------------------------------
//
//
// explosive
//
//---------------------------------------------------------------------------
@ -3628,31 +3628,32 @@ void handle_se13(DDukeActor* actor)
auto sc = actor->sector();
if (actor->temp_data[2])
{
int j = (actor->spr.yint << 5) | 1;
double amt = ((actor->spr.yint << 5) | 1) * zmaptoworld;
if (actor->spr.angle == DAngle90)
if (actor->spr.intangle == 512)
{
if (actor->spriteextra)
{
if (abs(actor->temp_data[0] - sc->int_ceilingz()) >= j)
sc->add_int_ceilingz(Sgn(actor->temp_data[0] - sc->int_ceilingz()) * j);
else sc->set_int_ceilingz(actor->temp_data[0]);
if (abs(actor->temp_pos.Y - sc->ceilingz) >= amt)
sc->addceilingz(Sgn(actor->temp_pos.Y - sc->ceilingz) * amt);
else sc->setceilingz(actor->temp_pos.Y);
}
else
{
if (abs(actor->temp_data[1] - sc->int_floorz()) >= j)
sc->add_int_floorz(Sgn(actor->temp_data[1] - sc->int_floorz()) * j);
else sc->set_int_floorz(actor->temp_data[1]);
if (abs(actor->temp_pos.Z - sc->floorz) >= amt)
sc->addfloorz(Sgn(actor->temp_pos.Z - sc->floorz) * amt);
else sc->setfloorz(actor->temp_pos.Z);
}
}
else
{
if (abs(actor->temp_data[1] - sc->int_floorz()) >= j)
sc->add_int_floorz(Sgn(actor->temp_data[1] - sc->int_floorz()) * j);
else sc->set_int_floorz(actor->temp_data[1]);
if (abs(actor->temp_data[0] - sc->int_ceilingz()) >= j)
sc->add_int_ceilingz(Sgn(actor->temp_data[0] - sc->int_ceilingz()) * j);
sc->set_int_ceilingz(actor->temp_data[0]);
if (abs(actor->temp_pos.Z - sc->floorz) >= amt)
sc->addfloorz(Sgn(actor->temp_pos.Z - sc->floorz) * amt);
else sc->setfloorz(actor->temp_pos.Z);
if (abs(actor->temp_pos.Y - sc->ceilingz) >= amt)
sc->addceilingz(Sgn(actor->temp_pos.Y - sc->ceilingz) * amt);
sc->setceilingz(actor->temp_pos.Y);
}
if (actor->temp_data[3] == 1)
@ -3685,7 +3686,7 @@ void handle_se13(DDukeActor* actor)
}
if (actor->temp_data[2] == 4 && actor->int_ang() != 512)
if (actor->temp_data[2] == 4 && actor->spr.angle != DAngle90)
for (int x = 0; x < 7; x++) RANDOMSCRAP(actor);
}

View file

@ -694,13 +694,13 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
case SE_13_EXPLOSIVE:
{
actor->temp_data[0] = sectp->int_ceilingz();
actor->temp_data[1] = sectp->int_floorz();
actor->temp_pos.Y = sectp->ceilingz;
actor->temp_pos.Z = sectp->floorz;
bool ceiling = (abs(actor->temp_data[0] - actor->int_pos().Z) < abs(actor->temp_data[1] - actor->int_pos().Z));
bool ceiling = (abs(sectp->ceilingz - actor->spr.pos.Z) < abs(sectp->floorz - actor->spr.pos.Z));
actor->spriteextra = ceiling;
if (actor->spr.angle == DAngle90)
if (actor->spr.intangle == 512)
{
if (ceiling)
sectp->setceilingz(actor->spr.pos.Z);
@ -718,7 +718,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
sectp->ceilingstat ^= CSTAT_SECTOR_SKY;
actor->temp_data[3] = 1;
if (!ceiling && actor->spr.angle == DAngle90)
if (!ceiling && actor->spr.intangle == 512)
{
sectp->ceilingstat ^= CSTAT_SECTOR_SKY;
actor->temp_data[3] = 0;
@ -727,7 +727,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
sectp->ceilingshade =
sectp->floorshade;
if (actor->spr.angle == DAngle90)
if (actor->spr.intangle == 512)
{
for (auto& wl : wallsofsector(sectp))
{