mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-01 05:20:43 +00:00
- floatified handle_se13.
This commit is contained in:
parent
998d71875f
commit
11735c2963
2 changed files with 23 additions and 22 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue