mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-01 05:20:43 +00:00
- partial floatification of movetransports_r
This commit is contained in:
parent
a00969fbeb
commit
b00c8dbaee
1 changed files with 24 additions and 27 deletions
|
@ -1399,7 +1399,8 @@ void movetransports_r(void)
|
|||
{
|
||||
uint8_t warpdir = 0, warpspriteto;
|
||||
int k, p, sectlotag;
|
||||
int ll2 = 0, ll, onfloorz;
|
||||
int onfloorz;
|
||||
double ll, ll2 = 0;
|
||||
Collision coll;
|
||||
|
||||
//Transporters
|
||||
|
@ -1579,7 +1580,7 @@ void movetransports_r(void)
|
|||
case STAT_MISC:
|
||||
case STAT_DUMMYPLAYER:
|
||||
|
||||
ll = abs(act2->spr.zvel);
|
||||
ll = abs(act2->spr.zvel) * zinttoworld;
|
||||
if (isRRRA())
|
||||
{
|
||||
if (act2->spr.zvel >= 0)
|
||||
|
@ -1590,38 +1591,38 @@ void movetransports_r(void)
|
|||
|
||||
{
|
||||
warpspriteto = 0;
|
||||
if (ll && sectlotag == ST_2_UNDERWATER && act2->int_pos().Z < (sectp->int_ceilingz() + ll))
|
||||
if (ll && sectlotag == ST_2_UNDERWATER && act2->spr.pos.Z < (sectp->ceilingz + ll))
|
||||
warpspriteto = 1;
|
||||
|
||||
if (ll && sectlotag == ST_1_ABOVE_WATER && act2->int_pos().Z > (sectp->int_floorz() - ll))
|
||||
if (ll && sectlotag == ST_1_ABOVE_WATER && act2->spr.pos.Z > (sectp->floorz - ll))
|
||||
if (!isRRRA() || (act2->spr.picnum != CHEERBOAT && act2->spr.picnum != HULKBOAT && act2->spr.picnum != MINIONBOAT))
|
||||
warpspriteto = 1;
|
||||
|
||||
if (isRRRA())
|
||||
{
|
||||
if (ll && sectlotag == 161 && act2->int_pos().Z < (sectp->int_ceilingz() + ll) && warpdir == 1)
|
||||
if (ll && sectlotag == 161 && act2->spr.pos.Z < (sectp->ceilingz + ll) && warpdir == 1)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = ll - abs(act2->int_pos().Z - sectp->int_ceilingz());
|
||||
ll2 = ll - abs(act2->spr.pos.Z - sectp->ceilingz);
|
||||
}
|
||||
else if (sectlotag == 161 && act2->int_pos().Z < (sectp->int_ceilingz() + 1000) && warpdir == 1)
|
||||
else if (sectlotag == 161 && act2->spr.pos.Z < (sectp->ceilingz + 3.90625) && warpdir == 1)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = 1;
|
||||
ll2 = zmaptoworld;
|
||||
}
|
||||
if (ll && sectlotag == 160 && act2->int_pos().Z > (sectp->int_floorz() - ll) && warpdir == 2)
|
||||
if (ll && sectlotag == 160 && act2->spr.pos.Z > (sectp->floorz - ll) && warpdir == 2)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = ll - abs(sectp->int_floorz() - act2->int_pos().Z);
|
||||
ll2 = ll - abs(sectp->floorz - act2->spr.pos.Z);
|
||||
}
|
||||
else if (sectlotag == 160 && act2->int_pos().Z > (sectp->int_floorz() - 1000) && warpdir == 2)
|
||||
else if (sectlotag == 160 && act2->spr.pos.Z > (sectp->floorz - 3.90625) && warpdir == 2)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = 1;
|
||||
ll2 = zmaptoworld;
|
||||
}
|
||||
}
|
||||
|
||||
if (sectlotag == 0 && (onfloorz || abs(act2->int_pos().Z - act->int_pos().Z) < 4096))
|
||||
if (sectlotag == 0 && (onfloorz || abs(act2->spr.pos.Z - act->spr.pos.Z) < 16))
|
||||
{
|
||||
if (Owner->GetOwner() != Owner && onfloorz && act->temp_data[0] > 0 && act2->spr.statnum != 5)
|
||||
{
|
||||
|
@ -1670,7 +1671,7 @@ void movetransports_r(void)
|
|||
{
|
||||
if (checkcursectnums(act->sector()) == -1 && checkcursectnums(Owner->sector()) == -1)
|
||||
{
|
||||
act2->add_int_pos({ (Owner->int_pos().X - act->int_pos().X), (Owner->int_pos().Y - act->int_pos().Y), -(act->int_pos().Z - Owner->sector()->int_floorz()) });
|
||||
act2->spr.pos += (Owner->spr.pos - act->spr.pos.XY()).plusZ(-Owner->sector()->floorz);
|
||||
act2->spr.angle = Owner->spr.angle;
|
||||
|
||||
act2->backupang();
|
||||
|
@ -1692,8 +1693,7 @@ void movetransports_r(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
act2->spr.pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
act2->spr.pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
|
||||
act2->spr.pos.Z = Owner->spr.pos.Z + 16;
|
||||
act2->backupz();
|
||||
|
||||
|
@ -1701,18 +1701,16 @@ void movetransports_r(void)
|
|||
}
|
||||
break;
|
||||
case ST_1_ABOVE_WATER:
|
||||
act2->spr.pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
act2->spr.pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
act2->set_int_z(Owner->sector()->int_ceilingz() + ll);
|
||||
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
|
||||
act2->spr.pos.Z = Owner->sector()->ceilingz + ll;
|
||||
act2->backupz();
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
|
||||
break;
|
||||
case ST_2_UNDERWATER:
|
||||
act2->spr.pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
act2->spr.pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
act2->set_int_z(Owner->sector()->int_floorz() - ll);
|
||||
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
|
||||
act2->spr.pos.Z = Owner->sector()->ceilingz - ll;
|
||||
act2->backupz();
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
|
@ -1721,9 +1719,8 @@ void movetransports_r(void)
|
|||
|
||||
case 160:
|
||||
if (!isRRRA()) break;
|
||||
act2->spr.pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
act2->spr.pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
act2->set_int_z(Owner->sector()->int_ceilingz() + ll2);
|
||||
act2->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
|
||||
act2->spr.pos.Z = Owner->sector()->ceilingz + ll2;
|
||||
act2->backupz();
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
|
@ -1734,8 +1731,8 @@ void movetransports_r(void)
|
|||
break;
|
||||
case 161:
|
||||
if (!isRRRA()) break;
|
||||
act2->add_int_pos({ (Owner->int_pos().X - act->int_pos().X), (Owner->int_pos().Y - act->int_pos().Y), 0 });
|
||||
act2->set_int_z(Owner->sector()->int_floorz() - ll);
|
||||
act2->spr.pos += Owner->spr.pos.XY() - act->spr.pos.XY();
|
||||
act2->spr.pos.Z = Owner->sector()->floorz - ll;
|
||||
act2->backupz();
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
|
|
Loading…
Reference in a new issue