mirror of
https://github.com/ZDoom/Raze.git
synced 2025-04-07 16:31:26 +00:00
- Duke: renamed all spr.pos
This was pure search&replace with no other code edits.
This commit is contained in:
parent
f629ec1916
commit
204d6018f4
24 changed files with 618 additions and 618 deletions
File diff suppressed because it is too large
Load diff
|
@ -267,16 +267,16 @@ void hitradius_d(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
|
||||
while (auto dasectp = search.GetNext())
|
||||
{
|
||||
if (((dasectp->ceilingz - actor->spr.pos.Z) >> 8) < r)
|
||||
if (((dasectp->ceilingz - actor->int_pos().Z) >> 8) < r)
|
||||
{
|
||||
auto wal = dasectp->firstWall();
|
||||
int d = abs(wal->wall_int_pos().X - actor->spr.pos.X) + abs(wal->wall_int_pos().Y - actor->spr.pos.Y);
|
||||
int d = abs(wal->wall_int_pos().X - actor->int_pos().X) + abs(wal->wall_int_pos().Y - actor->int_pos().Y);
|
||||
if (d < r)
|
||||
fi.checkhitceiling(dasectp);
|
||||
else
|
||||
{
|
||||
auto thirdpoint = wal->point2Wall()->point2Wall();
|
||||
d = abs(thirdpoint->wall_int_pos().X - actor->spr.pos.X) + abs(thirdpoint->wall_int_pos().Y - actor->spr.pos.Y);
|
||||
d = abs(thirdpoint->wall_int_pos().X - actor->int_pos().X) + abs(thirdpoint->wall_int_pos().Y - actor->int_pos().Y);
|
||||
if (d < r)
|
||||
fi.checkhitceiling(dasectp);
|
||||
}
|
||||
|
@ -284,18 +284,18 @@ void hitradius_d(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
|
||||
for (auto& wal : wallsofsector(dasectp))
|
||||
{
|
||||
if ((abs(wal.wall_int_pos().X - actor->spr.pos.X) + abs(wal.wall_int_pos().Y - actor->spr.pos.Y)) < r)
|
||||
if ((abs(wal.wall_int_pos().X - actor->int_pos().X) + abs(wal.wall_int_pos().Y - actor->int_pos().Y)) < r)
|
||||
{
|
||||
if (wal.twoSided())
|
||||
{
|
||||
search.Add(wal.nextSector());
|
||||
}
|
||||
int x1 = (((wal.wall_int_pos().X + wal.point2Wall()->wall_int_pos().X) >> 1) + actor->spr.pos.X) >> 1;
|
||||
int y1 = (((wal.wall_int_pos().Y + wal.point2Wall()->wall_int_pos().Y) >> 1) + actor->spr.pos.Y) >> 1;
|
||||
int x1 = (((wal.wall_int_pos().X + wal.point2Wall()->wall_int_pos().X) >> 1) + actor->int_pos().X) >> 1;
|
||||
int y1 = (((wal.wall_int_pos().Y + wal.point2Wall()->wall_int_pos().Y) >> 1) + actor->int_pos().Y) >> 1;
|
||||
sectortype* sect = wal.sectorp();
|
||||
updatesector(x1, y1, §);
|
||||
if (sect && cansee(x1, y1, actor->spr.pos.Z, sect, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector()))
|
||||
fi.checkhitwall(actor, &wal, wal.wall_int_pos().X, wal.wall_int_pos().Y, actor->spr.pos.Z, actor->spr.picnum);
|
||||
if (sect && cansee(x1, y1, actor->int_pos().Z, sect, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, actor->sector()))
|
||||
fi.checkhitwall(actor, &wal, wal.wall_int_pos().X, wal.wall_int_pos().Y, actor->int_pos().Z, actor->spr.picnum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -327,7 +327,7 @@ void hitradius_d(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
if (actor->spr.picnum != SHRINKSPARK || (act2->spr.cstat & CSTAT_SPRITE_BLOCK_ALL))
|
||||
if (dist(actor, act2) < r)
|
||||
{
|
||||
if (badguy(act2) && !cansee(act2->spr.pos.X, act2->spr.pos.Y, act2->spr.pos.Z + q, act2->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z + q, actor->sector()))
|
||||
if (badguy(act2) && !cansee(act2->int_pos().X, act2->int_pos().Y, act2->int_pos().Z + q, act2->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z + q, actor->sector()))
|
||||
continue;
|
||||
fi.checkhitsprite(act2, actor);
|
||||
}
|
||||
|
@ -347,9 +347,9 @@ void hitradius_d(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
int d = dist(actor, act2);
|
||||
if (act2->spr.picnum == APLAYER) act2->add_int_z(gs.playerheight);
|
||||
|
||||
if (d < r && cansee(act2->spr.pos.X, act2->spr.pos.Y, act2->spr.pos.Z - (8 << 8), act2->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (12 << 8), actor->sector()))
|
||||
if (d < r && cansee(act2->int_pos().X, act2->int_pos().Y, act2->int_pos().Z - (8 << 8), act2->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (12 << 8), actor->sector()))
|
||||
{
|
||||
act2->hitang = getangle(act2->spr.pos.X - actor->spr.pos.X, act2->spr.pos.Y - actor->spr.pos.Y);
|
||||
act2->hitang = getangle(act2->int_pos().X - actor->int_pos().X, act2->int_pos().Y - actor->int_pos().Y);
|
||||
|
||||
if (actor->spr.picnum == RPG && act2->spr.extra > 0)
|
||||
act2->attackertype = RPG;
|
||||
|
@ -443,13 +443,13 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
{
|
||||
actor->add_int_pos({ (xchange * TICSPERFRAME) >> 2, (ychange * TICSPERFRAME) >> 2, (zchange * TICSPERFRAME) >> 2 });
|
||||
if (bg)
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
return result.setNone();
|
||||
}
|
||||
|
||||
auto dasectp = actor->sector();
|
||||
|
||||
vec3_t pos = actor->spr.pos;
|
||||
vec3_t pos = actor->int_pos();
|
||||
pos.Z -= ((tileHeight(actor->spr.picnum) * actor->spr.yrepeat) << 1);
|
||||
|
||||
if (bg)
|
||||
|
@ -481,7 +481,7 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
actor->spr.ang = (krand()&2047);
|
||||
else if ((actor->temp_data[0]&3) == 1 && actor->spr.picnum != COMMANDER)
|
||||
actor->spr.ang = (krand()&2047);
|
||||
SetActor(actor,actor->spr.pos);
|
||||
SetActor(actor,actor->int_pos());
|
||||
if (dasectp == nullptr) dasectp = §or[0];
|
||||
return result.setSector(dasectp);
|
||||
}
|
||||
|
@ -499,7 +499,7 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
if (dasectp != nullptr)
|
||||
if (dasectp != actor->sector())
|
||||
ChangeActorSect(actor, dasectp);
|
||||
int daz = actor->spr.pos.Z + ((zchange * TICSPERFRAME) >> 3);
|
||||
int daz = actor->int_pos().Z + ((zchange * TICSPERFRAME) >> 3);
|
||||
if ((daz > actor->ceilingz) && (daz <= actor->floorz))
|
||||
actor->set_int_z(daz);
|
||||
else if (result.type == kHitNone)
|
||||
|
@ -545,8 +545,8 @@ void guts_d(DDukeActor* actor, int gtype, int n, int p)
|
|||
sx = sy = 8;
|
||||
else sx = sy = 32;
|
||||
|
||||
gutz = actor->spr.pos.Z - (8 << 8);
|
||||
floorz = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
gutz = actor->int_pos().Z - (8 << 8);
|
||||
floorz = getflorzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
|
||||
if (gutz > (floorz - (8 << 8)))
|
||||
gutz = floorz - (8 << 8);
|
||||
|
@ -570,7 +570,7 @@ void guts_d(DDukeActor* actor, int gtype, int n, int p)
|
|||
int r4 = krand();
|
||||
int r5 = krand();
|
||||
// TRANSITIONAL: owned by a player???
|
||||
auto spawned = EGS(actor->sector(), actor->spr.pos.X + (r5 & 255) - 128, actor->spr.pos.Y + (r4 & 255) - 128, gutz - (r3 & 8191), gtype, -32, sx, sy, a, 48 + (r2 & 31), -512 - (r1 & 2047), ps[p].GetActor(), 5);
|
||||
auto spawned = EGS(actor->sector(), actor->int_pos().X + (r5 & 255) - 128, actor->int_pos().Y + (r4 & 255) - 128, gutz - (r3 & 8191), gtype, -32, sx, sy, a, 48 + (r2 & 31), -512 - (r1 & 2047), ps[p].GetActor(), 5);
|
||||
if (spawned)
|
||||
{
|
||||
if (spawned->spr.picnum == JIBS2)
|
||||
|
@ -770,14 +770,14 @@ void movefallers_d(void)
|
|||
x = gs.gravity;
|
||||
}
|
||||
|
||||
if (act->spr.pos.Z < (sectp->floorz - FOURSLEIGHT))
|
||||
if (act->int_pos().Z < (sectp->floorz - FOURSLEIGHT))
|
||||
{
|
||||
act->spr.zvel += x;
|
||||
if (act->spr.zvel > 6144)
|
||||
act->spr.zvel = 6144;
|
||||
act->add_int_z(act->spr.zvel);
|
||||
}
|
||||
if ((sectp->floorz - act->spr.pos.Z) < (16 << 8))
|
||||
if ((sectp->floorz - act->int_pos().Z) < (16 << 8))
|
||||
{
|
||||
j = 1 + (krand() & 7);
|
||||
for (x = 0; x < j; x++) RANDOMSCRAP(act);
|
||||
|
@ -871,14 +871,14 @@ static void movetripbomb(DDukeActor *actor)
|
|||
int16_t l = actor->spr.ang;
|
||||
actor->spr.ang = actor->temp_data[5];
|
||||
|
||||
actor->temp_data[3] = actor->spr.pos.X; actor->temp_data[4] = actor->spr.pos.Y;
|
||||
actor->temp_data[3] = actor->int_pos().X; actor->temp_data[4] = actor->int_pos().Y;
|
||||
actor->add_int_pos({ bcos(actor->temp_data[5], -9), bsin(actor->temp_data[5], -9), -(3 << 8) });
|
||||
|
||||
// Laser fix from EDuke32.
|
||||
auto const oldSect = actor->sector();
|
||||
auto curSect = actor->sector();
|
||||
|
||||
updatesectorneighbor(actor->spr.pos.X, actor->spr.pos.Y, &curSect, 2048);
|
||||
updatesectorneighbor(actor->int_pos().X, actor->int_pos().Y, &curSect, 2048);
|
||||
ChangeActorSect(actor, curSect);
|
||||
|
||||
DDukeActor* hit;
|
||||
|
@ -896,9 +896,9 @@ static void movetripbomb(DDukeActor *actor)
|
|||
auto spawned = spawn(actor, LASERLINE);
|
||||
if (spawned)
|
||||
{
|
||||
SetActor(spawned, spawned->spr.pos);
|
||||
SetActor(spawned, spawned->int_pos());
|
||||
spawned->spr.hitag = actor->spr.hitag;
|
||||
spawned->temp_data[1] = spawned->spr.pos.Z;
|
||||
spawned->temp_data[1] = spawned->int_pos().Z;
|
||||
|
||||
if (x < 1024)
|
||||
{
|
||||
|
@ -908,7 +908,7 @@ static void movetripbomb(DDukeActor *actor)
|
|||
x -= 1024;
|
||||
|
||||
actor->add_int_pos({ bcos(actor->temp_data[5], -4), bsin(actor->temp_data[5], -4), 0 });
|
||||
updatesectorneighbor(actor->spr.pos.X, actor->spr.pos.Y, &curSect, 2048);
|
||||
updatesectorneighbor(actor->int_pos().X, actor->int_pos().Y, &curSect, 2048);
|
||||
|
||||
if (curSect == nullptr)
|
||||
break;
|
||||
|
@ -938,16 +938,16 @@ static void movetripbomb(DDukeActor *actor)
|
|||
actor->temp_data[1]++;
|
||||
|
||||
|
||||
actor->temp_data[3] = actor->spr.pos.X;
|
||||
actor->temp_data[4] = actor->spr.pos.Y;
|
||||
actor->temp_data[3] = actor->int_pos().X;
|
||||
actor->temp_data[4] = actor->int_pos().Y;
|
||||
actor->add_int_pos({ bcos(actor->temp_data[5], -9), bsin(actor->temp_data[5], -9), -(3 << 8) });
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
|
||||
x = hitasprite(actor, nullptr);
|
||||
|
||||
actor->set_int_xy(actor->temp_data[3], actor->temp_data[4]);
|
||||
actor->add_int_z(3 << 8);
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
|
||||
if (actor->ovel.X != x && lTripBombControl & TRIPBOMB_TRIPWIRE)
|
||||
{
|
||||
|
@ -1003,7 +1003,7 @@ static void movefireext(DDukeActor* actor)
|
|||
|
||||
for (int k = 0; k < 16; k++)
|
||||
{
|
||||
auto spawned = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (krand() % (48 << 8)), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (actor->spr.zvel >> 2), actor, 5);
|
||||
auto spawned = EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (krand() % (48 << 8)), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (actor->spr.zvel >> 2), actor, 5);
|
||||
if(spawned) spawned->spr.pal = 2;
|
||||
}
|
||||
|
||||
|
@ -1330,7 +1330,7 @@ static bool movefireball(DDukeActor* actor)
|
|||
ball->spr.cstat = actor->spr.cstat;
|
||||
ball->spr.extra = 0;
|
||||
|
||||
ball->fproj = { ball->spr.pos, { ball->spr.xvel, ball->spr.yvel, ball->spr.zvel } };
|
||||
ball->fproj = { ball->int_pos(), { ball->spr.xvel, ball->spr.yvel, ball->spr.zvel } };
|
||||
|
||||
ChangeActorStat(ball, STAT_PROJECTILE);
|
||||
}
|
||||
|
@ -1425,7 +1425,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const vec3_t &oldpos)
|
|||
else
|
||||
{
|
||||
SetActor(proj, oldpos);
|
||||
fi.checkhitwall(proj, wal, proj->spr.pos.X, proj->spr.pos.Y, proj->spr.pos.Z, proj->spr.picnum);
|
||||
fi.checkhitwall(proj, wal, proj->int_pos().X, proj->int_pos().Y, proj->int_pos().Z, proj->spr.picnum);
|
||||
|
||||
if (proj->spr.picnum == FREEZEBLAST)
|
||||
{
|
||||
|
@ -1505,7 +1505,7 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
S_PlayActorSound(WIERDSHOT_FLY, proj);
|
||||
|
||||
int k, ll;
|
||||
vec3_t oldpos = proj->spr.pos;
|
||||
vec3_t oldpos = proj->int_pos();
|
||||
|
||||
if (proj->spr.picnum == RPG && proj->sector()->lotag == 2)
|
||||
{
|
||||
|
@ -1541,7 +1541,7 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
MulScale(k, bsin(proj->spr.ang), 14), ll, CLIPMASK1, coll);
|
||||
|
||||
if (proj->spr.picnum == RPG && proj->temp_actor != nullptr)
|
||||
if (FindDistance2D(proj->spr.pos.vec2 - proj->temp_actor->spr.pos.vec2) < 256)
|
||||
if (FindDistance2D(proj->int_pos().vec2 - proj->temp_actor->int_pos().vec2) < 256)
|
||||
coll.setSprite(proj->temp_actor);
|
||||
|
||||
if (!proj->insector())
|
||||
|
@ -1552,14 +1552,14 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
|
||||
if (coll.type != kHitSprite && proj->spr.picnum != FREEZEBLAST)
|
||||
{
|
||||
if (proj->spr.pos.Z < proj->ceilingz)
|
||||
if (proj->int_pos().Z < proj->ceilingz)
|
||||
{
|
||||
coll.setSector(proj->sector());
|
||||
proj->spr.zvel = -1;
|
||||
}
|
||||
else
|
||||
if ((proj->spr.pos.Z > proj->floorz && proj->sector()->lotag != 1) ||
|
||||
(proj->spr.pos.Z > proj->floorz + (16 << 8) && proj->sector()->lotag == 1))
|
||||
if ((proj->int_pos().Z > proj->floorz && proj->sector()->lotag != 1) ||
|
||||
(proj->int_pos().Z > proj->floorz + (16 << 8) && proj->sector()->lotag == 1))
|
||||
{
|
||||
coll.setSector(proj->sector());
|
||||
if (proj->sector()->lotag != 1)
|
||||
|
@ -1578,9 +1578,9 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
};
|
||||
|
||||
auto spawned = EGS(proj->sector(),
|
||||
proj->spr.pos.X + offset.X,
|
||||
proj->spr.pos.Y + offset.Y,
|
||||
proj->spr.pos.Z + offset.Z, FIRELASER, -40 + (k << 2),
|
||||
proj->int_pos().X + offset.X,
|
||||
proj->int_pos().Y + offset.Y,
|
||||
proj->int_pos().Z + offset.Z, FIRELASER, -40 + (k << 2),
|
||||
proj->spr.xrepeat, proj->spr.yrepeat, 0, 0, 0, proj->GetOwner(), 5);
|
||||
|
||||
if (spawned)
|
||||
|
@ -1806,9 +1806,9 @@ void movetransports_d(void)
|
|||
ps[p].transporter_hold = 13;
|
||||
}
|
||||
|
||||
ps[p].bobpos.X = ps[p].opos.X = ps[p].pos.X = Owner->spr.pos.X;
|
||||
ps[p].bobpos.Y = ps[p].opos.Y = ps[p].pos.Y = Owner->spr.pos.Y;
|
||||
ps[p].opos.Z = ps[p].pos.Z = Owner->spr.pos.Z - gs.playerheight;
|
||||
ps[p].bobpos.X = ps[p].opos.X = ps[p].pos.X = Owner->int_pos().X;
|
||||
ps[p].bobpos.Y = ps[p].opos.Y = ps[p].pos.Y = Owner->int_pos().Y;
|
||||
ps[p].opos.Z = ps[p].pos.Z = Owner->int_pos().Z - gs.playerheight;
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
ps[p].setCursector(act2->sector());
|
||||
|
@ -1824,16 +1824,16 @@ void movetransports_d(void)
|
|||
}
|
||||
else if (!(sectlotag == 1 && ps[p].on_ground == 1)) break;
|
||||
|
||||
if (onfloorz == 0 && abs(act->spr.pos.Z - ps[p].pos.Z) < 6144)
|
||||
if (onfloorz == 0 && abs(act->int_pos().Z - ps[p].pos.Z) < 6144)
|
||||
if ((ps[p].jetpack_on == 0) || (ps[p].jetpack_on && (PlayerInput(p, SB_JUMP))) ||
|
||||
(ps[p].jetpack_on && PlayerInput(p, SB_CROUCH)))
|
||||
{
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->int_pos().X - act->int_pos().X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->int_pos().Y - act->int_pos().Y;
|
||||
|
||||
if (ps[p].jetpack_on && (PlayerInput(p, SB_JUMP) || ps[p].jetpack_on < 11))
|
||||
ps[p].pos.Z = Owner->spr.pos.Z - 6144;
|
||||
else ps[p].pos.Z = Owner->spr.pos.Z + 6144;
|
||||
ps[p].pos.Z = Owner->int_pos().Z - 6144;
|
||||
else ps[p].pos.Z = Owner->int_pos().Z + 6144;
|
||||
ps[p].opos.Z = ps[p].pos.Z;
|
||||
|
||||
auto pa = ps[p].GetActor();
|
||||
|
@ -1884,8 +1884,8 @@ void movetransports_d(void)
|
|||
|
||||
if (k == 1)
|
||||
{
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->int_pos().X - act->int_pos().X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->int_pos().Y - act->int_pos().Y;
|
||||
|
||||
if (!Owner || Owner->GetOwner() != Owner)
|
||||
ps[p].transporter_hold = -2;
|
||||
|
@ -1934,13 +1934,13 @@ void movetransports_d(void)
|
|||
|
||||
{
|
||||
warpspriteto = 0;
|
||||
if (ll && sectlotag == 2 && act2->spr.pos.Z < (sectp->ceilingz + ll))
|
||||
if (ll && sectlotag == 2 && act2->int_pos().Z < (sectp->ceilingz + ll))
|
||||
warpspriteto = 1;
|
||||
|
||||
if (ll && sectlotag == 1 && act2->spr.pos.Z > (sectp->floorz - ll))
|
||||
if (ll && sectlotag == 1 && act2->int_pos().Z > (sectp->floorz - ll))
|
||||
warpspriteto = 1;
|
||||
|
||||
if (sectlotag == 0 && (onfloorz || abs(act2->spr.pos.Z - act->spr.pos.Z) < 4096))
|
||||
if (sectlotag == 0 && (onfloorz || abs(act2->int_pos().Z - act->int_pos().Z) < 4096))
|
||||
{
|
||||
if ((!Owner || Owner->GetOwner() != Owner) && onfloorz && act->temp_data[0] > 0 && act2->spr.statnum != STAT_MISC)
|
||||
{
|
||||
|
@ -1989,7 +1989,7 @@ void movetransports_d(void)
|
|||
{
|
||||
if (act2->spr.statnum == STAT_PROJECTILE || (checkcursectnums(act->sector()) == -1 && checkcursectnums(Owner->sector()) == -1))
|
||||
{
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X),(Owner->spr.pos.Y - act->spr.pos.Y), -(act->spr.pos.Z - Owner->sector()->floorz) });
|
||||
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()->floorz) });
|
||||
act2->spr.ang = Owner->spr.ang;
|
||||
|
||||
act2->backupang();
|
||||
|
@ -2014,20 +2014,20 @@ void movetransports_d(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
act2->set_int_z(Owner->spr.pos.Z + 4096);
|
||||
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->int_pos().Z + 4096);
|
||||
act2->backupz();
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
}
|
||||
break;
|
||||
case ST_1_ABOVE_WATER:
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
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()->ceilingz + ll);
|
||||
act2->backupz();
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
break;
|
||||
case ST_2_UNDERWATER:
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
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()->floorz - ll);
|
||||
act2->backupz();
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
|
@ -2112,7 +2112,7 @@ static void greenslime(DDukeActor *actor)
|
|||
return;
|
||||
for (j = 16; j >= 0; j--)
|
||||
{
|
||||
auto k = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, GLASSPIECES + (j % 3), -32, 36, 36, krand() & 2047, 32 + (krand() & 63), 1024 - (krand() & 1023), actor, 5);
|
||||
auto k = EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, GLASSPIECES + (j % 3), -32, 36, 36, krand() & 2047, 32 + (krand() & 63), 1024 - (krand() & 1023), actor, 5);
|
||||
k->spr.pal = 1;
|
||||
}
|
||||
ps[p].actors_killed++;
|
||||
|
@ -2121,7 +2121,7 @@ static void greenslime(DDukeActor *actor)
|
|||
}
|
||||
else if (x < 1024 && ps[p].quick_kick == 0)
|
||||
{
|
||||
j = getincangle(ps[p].angle.ang.asbuild(), getangle(actor->spr.pos.X - ps[p].pos.X, actor->spr.pos.Y - ps[p].pos.Y));
|
||||
j = getincangle(ps[p].angle.ang.asbuild(), getangle(actor->int_pos().X - ps[p].pos.X, actor->int_pos().Y - ps[p].pos.Y));
|
||||
if (j > -128 && j < 128)
|
||||
ps[p].quick_kick = 14;
|
||||
}
|
||||
|
@ -2141,7 +2141,7 @@ static void greenslime(DDukeActor *actor)
|
|||
return;
|
||||
}
|
||||
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
|
||||
actor->spr.ang = ps[p].angle.ang.asbuild();
|
||||
|
||||
|
@ -2150,7 +2150,7 @@ static void greenslime(DDukeActor *actor)
|
|||
{
|
||||
for (x = 0; x < 8; x++)
|
||||
{
|
||||
auto spawned = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (8 << 8), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (actor->spr.zvel >> 2), actor, 5);
|
||||
auto spawned = EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (8 << 8), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (actor->spr.zvel >> 2), actor, 5);
|
||||
spawned->spr.pal = 6;
|
||||
}
|
||||
|
||||
|
@ -2260,7 +2260,7 @@ static void greenslime(DDukeActor *actor)
|
|||
|
||||
for (x = 0; x < 8; x++)
|
||||
{
|
||||
auto spawned = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (8 << 8), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (actor->spr.zvel >> 2), actor, 5);
|
||||
auto spawned = EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (8 << 8), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (actor->spr.zvel >> 2), actor, 5);
|
||||
if (spawned) spawned->spr.pal = 6;
|
||||
}
|
||||
actor->temp_data[0] = -3;
|
||||
|
@ -2299,7 +2299,7 @@ static void greenslime(DDukeActor *actor)
|
|||
|
||||
int l = s5->spr.ang;
|
||||
|
||||
actor->set_int_pos({ s5->spr.pos.X + bcos(l, -11), s5->spr.pos.Y + bsin(l, -11), s5->spr.pos.Z });
|
||||
actor->set_int_pos({ s5->int_pos().X + bcos(l, -11), s5->int_pos().Y + bsin(l, -11), s5->int_pos().Z });
|
||||
|
||||
actor->spr.picnum = GREENSLIME + 2 + (global_random & 1);
|
||||
|
||||
|
@ -2328,7 +2328,7 @@ static void greenslime(DDukeActor *actor)
|
|||
{
|
||||
if (actorflag(a2, SFLAG_GREENSLIMEFOOD))
|
||||
{
|
||||
if (ldist(actor, a2) < 768 && (abs(actor->spr.pos.Z - a2->spr.pos.Z) < 8192)) //Gulp them
|
||||
if (ldist(actor, a2) < 768 && (abs(actor->int_pos().Z - a2->int_pos().Z) < 8192)) //Gulp them
|
||||
{
|
||||
actor->temp_actor = a2;
|
||||
actor->temp_data[0] = -2;
|
||||
|
@ -2353,7 +2353,7 @@ static void greenslime(DDukeActor *actor)
|
|||
actor->spr.zvel = 0;
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_YFLIP;
|
||||
|
||||
if ((sectp->ceilingstat & CSTAT_SECTOR_SKY) || (actor->ceilingz + 6144) < actor->spr.pos.Z)
|
||||
if ((sectp->ceilingstat & CSTAT_SECTOR_SKY) || (actor->ceilingz + 6144) < actor->int_pos().Z)
|
||||
{
|
||||
actor->add_int_z(2048);
|
||||
actor->temp_data[0] = 3;
|
||||
|
@ -2379,7 +2379,7 @@ static void greenslime(DDukeActor *actor)
|
|||
actor->spr.xvel = 64 - bcos(actor->temp_data[1], -9);
|
||||
|
||||
actor->spr.ang += getincangle(actor->spr.ang,
|
||||
getangle(ps[p].pos.X - actor->spr.pos.X, ps[p].pos.Y - actor->spr.pos.Y)) >> 3;
|
||||
getangle(ps[p].pos.X - actor->int_pos().X, ps[p].pos.Y - actor->int_pos().Y)) >> 3;
|
||||
// TJR
|
||||
}
|
||||
|
||||
|
@ -2404,7 +2404,7 @@ static void greenslime(DDukeActor *actor)
|
|||
if (actor->spr.zvel > -(2048 + 1024))
|
||||
actor->spr.zvel -= 348;
|
||||
actor->add_int_z(actor->spr.zvel);
|
||||
if (actor->spr.pos.Z < actor->ceilingz + 4096)
|
||||
if (actor->int_pos().Z < actor->ceilingz + 4096)
|
||||
{
|
||||
actor->set_int_z(actor->ceilingz + 4096);
|
||||
actor->spr.xvel = 0;
|
||||
|
@ -2418,7 +2418,7 @@ static void greenslime(DDukeActor *actor)
|
|||
|
||||
makeitfall(actor);
|
||||
|
||||
if (actor->spr.pos.Z > actor->floorz - (8 << 8))
|
||||
if (actor->int_pos().Z > actor->floorz - (8 << 8))
|
||||
{
|
||||
actor->spr.yrepeat -= 4;
|
||||
actor->spr.xrepeat += 2;
|
||||
|
@ -2429,7 +2429,7 @@ static void greenslime(DDukeActor *actor)
|
|||
if (actor->spr.xrepeat > 8) actor->spr.xrepeat -= 4;
|
||||
}
|
||||
|
||||
if (actor->spr.pos.Z > actor->floorz - 2048)
|
||||
if (actor->int_pos().Z > actor->floorz - 2048)
|
||||
{
|
||||
actor->set_int_z(actor->floorz - 2048);
|
||||
actor->temp_data[0] = 0;
|
||||
|
@ -2458,9 +2458,9 @@ static void flamethrowerflame(DDukeActor *actor)
|
|||
return;
|
||||
}
|
||||
|
||||
int dax = actor->spr.pos.X;
|
||||
int day = actor->spr.pos.Y;
|
||||
int daz = actor->spr.pos.Z;
|
||||
int dax = actor->int_pos().X;
|
||||
int day = actor->int_pos().Y;
|
||||
int daz = actor->int_pos().Z;
|
||||
int xvel = actor->spr.xvel;
|
||||
|
||||
getglobalz(actor);
|
||||
|
@ -2490,13 +2490,13 @@ static void flamethrowerflame(DDukeActor *actor)
|
|||
|
||||
if (coll.type != kHitSprite)
|
||||
{
|
||||
if (actor->spr.pos.Z < actor->ceilingz)
|
||||
if (actor->int_pos().Z < actor->ceilingz)
|
||||
{
|
||||
coll.setSector(actor->sector());
|
||||
actor->spr.zvel = -1;
|
||||
}
|
||||
else if ((actor->spr.pos.Z > actor->floorz && actor->sector()->lotag != 1)
|
||||
|| (actor->spr.pos.Z > actor->floorz + (16 << 8) && actor->sector()->lotag == 1))
|
||||
else if ((actor->int_pos().Z > actor->floorz && actor->sector()->lotag != 1)
|
||||
|| (actor->int_pos().Z > actor->floorz + (16 << 8) && actor->sector()->lotag == 1))
|
||||
{
|
||||
coll.setSector(actor->sector());
|
||||
if (actor->sector()->lotag != 1)
|
||||
|
@ -2515,7 +2515,7 @@ static void flamethrowerflame(DDukeActor *actor)
|
|||
else if (coll.type == kHitWall)
|
||||
{
|
||||
SetActor(actor, { dax, day, daz });
|
||||
fi.checkhitwall(actor, coll.hitWall, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.picnum);
|
||||
fi.checkhitwall(actor, coll.hitWall, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, actor->spr.picnum);
|
||||
}
|
||||
else if (coll.type == kHitSector)
|
||||
{
|
||||
|
@ -2583,7 +2583,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
{
|
||||
makeitfall(actor);
|
||||
|
||||
if (sectp->lotag != 1 && actor->spr.pos.Z >= actor->floorz - (FOURSLEIGHT) && actor->spr.yvel < 3)
|
||||
if (sectp->lotag != 1 && actor->int_pos().Z >= actor->floorz - (FOURSLEIGHT) && actor->spr.yvel < 3)
|
||||
{
|
||||
if (actor->spr.yvel > 0 || (actor->spr.yvel == 0 && actor->floorz == sectp->floorz))
|
||||
S_PlayActorSound(PIPEBOMB_BOUNCE, actor);
|
||||
|
@ -2592,7 +2592,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
actor->spr.zvel >>= 2;
|
||||
actor->spr.yvel++;
|
||||
}
|
||||
if (actor->spr.pos.Z < actor->ceilingz) // && sectp->lotag != 2 )
|
||||
if (actor->int_pos().Z < actor->ceilingz) // && sectp->lotag != 2 )
|
||||
{
|
||||
actor->set_int_z(actor->ceilingz + (3 << 8));
|
||||
actor->spr.zvel = 0;
|
||||
|
@ -2643,7 +2643,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
if (coll.type== kHitWall)
|
||||
{
|
||||
auto wal = coll.hitWall;
|
||||
fi.checkhitwall(actor, wal, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.picnum);
|
||||
fi.checkhitwall(actor, wal, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, actor->spr.picnum);
|
||||
|
||||
int k = getangle(wal->delta());
|
||||
|
||||
|
@ -2709,7 +2709,7 @@ DETONATEB:
|
|||
}
|
||||
}
|
||||
else if (actor->spr.picnum == HEAVYHBOMB && x < 788 && actor->temp_data[0] > 7 && actor->spr.xvel == 0)
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (8 << 8), actor->sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
if (cansee(actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (8 << 8), actor->sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
if (ps[p].ammo_amount[HANDBOMB_WEAPON] < gs.max_ammo_amount[HANDBOMB_WEAPON])
|
||||
{
|
||||
if (ud.coop >= 1 && Owner == actor)
|
||||
|
@ -2954,8 +2954,8 @@ static void fireflyflyingeffect(DDukeActor *actor)
|
|||
else
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE;
|
||||
|
||||
double dx = Owner->spr.pos.X - ps[p].GetActor()->spr.pos.X;
|
||||
double dy = Owner->spr.pos.Y - ps[p].GetActor()->spr.pos.Y;
|
||||
double dx = Owner->int_pos().X - ps[p].GetActor()->int_pos().X;
|
||||
double dy = Owner->int_pos().Y - ps[p].GetActor()->int_pos().Y;
|
||||
double dist = sqrt(dx * dx + dy * dy);
|
||||
if (dist != 0.0)
|
||||
{
|
||||
|
@ -2963,7 +2963,7 @@ static void fireflyflyingeffect(DDukeActor *actor)
|
|||
dy /= dist;
|
||||
}
|
||||
|
||||
actor->set_int_pos({ (int)(Owner->spr.pos.X - (dx * -10.0)), (int)(Owner->spr.pos.Y - (dy * -10.0)), Owner->spr.pos.Z + 2048 });
|
||||
actor->set_int_pos({ (int)(Owner->int_pos().X - (dx * -10.0)), (int)(Owner->int_pos().Y - (dy * -10.0)), Owner->int_pos().Z + 2048 });
|
||||
|
||||
if (Owner->spr.extra <= 0)
|
||||
{
|
||||
|
@ -3077,7 +3077,7 @@ void moveexplosions_d(void) // STATNUM 5
|
|||
case MONEY + 1:
|
||||
case MAIL + 1:
|
||||
case PAPER + 1:
|
||||
act->floorz = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
act->floorz = getflorzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y);
|
||||
act->set_int_z(act->floorz);
|
||||
break;
|
||||
case MONEY:
|
||||
|
@ -3139,7 +3139,7 @@ void moveexplosions_d(void) // STATNUM 5
|
|||
|
||||
case SHELL:
|
||||
case SHOTGUNSHELL:
|
||||
shell(act, (sectp->floorz + (24 << 8)) < act->spr.pos.Z);
|
||||
shell(act, (sectp->floorz + (24 << 8)) < act->int_pos().Z);
|
||||
continue;
|
||||
|
||||
case GLASSPIECES:
|
||||
|
@ -3256,7 +3256,7 @@ static void handle_se28(DDukeActor* actor)
|
|||
}
|
||||
else if (actor->temp_data[2] > (actor->temp_data[1] >> 3) && actor->temp_data[2] < (actor->temp_data[1] >> 2))
|
||||
{
|
||||
int j = !!cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), ps[screenpeek].pos.X, ps[screenpeek].pos.Y, ps[screenpeek].pos.Z, ps[screenpeek].cursector);
|
||||
int j = !!cansee(actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, actor->sector(), ps[screenpeek].pos.X, ps[screenpeek].pos.Y, ps[screenpeek].pos.Z, ps[screenpeek].cursector);
|
||||
|
||||
if (rnd(192) && (actor->temp_data[2] & 1))
|
||||
{
|
||||
|
@ -3436,7 +3436,7 @@ void moveeffectors_d(void) //STATNUM 3
|
|||
case SE_29_WAVES:
|
||||
act->spr.hitag += 64;
|
||||
l = MulScale(act->spr.yvel, bsin(act->spr.hitag), 12);
|
||||
sc->setfloorz(act->spr.pos.Z + l);
|
||||
sc->setfloorz(act->int_pos().Z + l);
|
||||
break;
|
||||
case SE_31_FLOOR_RISE_FALL: // True Drop Floor
|
||||
handle_se31(act, true);
|
||||
|
@ -3508,8 +3508,8 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
if (a & face_player)
|
||||
{
|
||||
if (ps[playernum].newOwner != nullptr)
|
||||
goalang = getangle(ps[playernum].opos.X - actor->spr.pos.X, ps[playernum].opos.Y - actor->spr.pos.Y);
|
||||
else goalang = getangle(ps[playernum].pos.X - actor->spr.pos.X, ps[playernum].pos.Y - actor->spr.pos.Y);
|
||||
goalang = getangle(ps[playernum].opos.X - actor->int_pos().X, ps[playernum].opos.Y - actor->int_pos().Y);
|
||||
else goalang = getangle(ps[playernum].pos.X - actor->int_pos().X, ps[playernum].pos.Y - actor->int_pos().Y);
|
||||
angdif = getincangle(actor->spr.ang, goalang) >> 2;
|
||||
if (angdif > -8 && angdif < 0) angdif = 0;
|
||||
actor->spr.ang += angdif;
|
||||
|
@ -3521,8 +3521,8 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
if (a & face_player_slow)
|
||||
{
|
||||
if (ps[playernum].newOwner != nullptr)
|
||||
goalang = getangle(ps[playernum].opos.X - actor->spr.pos.X, ps[playernum].opos.Y - actor->spr.pos.Y);
|
||||
else goalang = getangle(ps[playernum].pos.X - actor->spr.pos.X, ps[playernum].pos.Y - actor->spr.pos.Y);
|
||||
goalang = getangle(ps[playernum].opos.X - actor->int_pos().X, ps[playernum].opos.Y - actor->int_pos().Y);
|
||||
else goalang = getangle(ps[playernum].pos.X - actor->int_pos().X, ps[playernum].pos.Y - actor->int_pos().Y);
|
||||
angdif = Sgn(getincangle(actor->spr.ang, goalang)) << 5;
|
||||
if (angdif > -32 && angdif < 0)
|
||||
{
|
||||
|
@ -3545,7 +3545,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
|
||||
newx = ps[playernum].pos.X + (ps[playernum].vel.X / 768);
|
||||
newy = ps[playernum].pos.Y + (ps[playernum].vel.Y / 768);
|
||||
goalang = getangle(newx - actor->spr.pos.X, newy - actor->spr.pos.Y);
|
||||
goalang = getangle(newx - actor->int_pos().X, newy - actor->int_pos().Y);
|
||||
angdif = getincangle(actor->spr.ang, goalang) >> 2;
|
||||
if (angdif > -8 && angdif < 0) angdif = 0;
|
||||
actor->spr.ang += angdif;
|
||||
|
@ -3553,10 +3553,10 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
|
||||
if (actor->temp_data[1] == 0 || a == 0)
|
||||
{
|
||||
if ((badguy(actor) && actor->spr.extra <= 0) || (actor->opos.X != actor->spr.pos.X) || (actor->opos.Y != actor->spr.pos.Y))
|
||||
if ((badguy(actor) && actor->spr.extra <= 0) || (actor->opos.X != actor->int_pos().X) || (actor->opos.Y != actor->int_pos().Y))
|
||||
{
|
||||
actor->backupvec2();
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -3584,15 +3584,15 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
{
|
||||
if (actor->spr.picnum == COMMANDER)
|
||||
{
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (actor->spr.pos.Z > (l - (8 << 8)))
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if (actor->int_pos().Z > (l - (8 << 8)))
|
||||
{
|
||||
if (actor->spr.pos.Z > (l - (8 << 8))) actor->set_int_z(l - (8 << 8));
|
||||
if (actor->int_pos().Z > (l - (8 << 8))) actor->set_int_z(l - (8 << 8));
|
||||
actor->spr.zvel = 0;
|
||||
}
|
||||
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (80 << 8))
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if ((actor->int_pos().Z - l) < (80 << 8))
|
||||
{
|
||||
actor->set_int_z(l + (80 << 8));
|
||||
actor->spr.zvel = 0;
|
||||
|
@ -3602,14 +3602,14 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
{
|
||||
if (actor->spr.zvel > 0)
|
||||
{
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (actor->spr.pos.Z > (l - (30 << 8)))
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if (actor->int_pos().Z > (l - (30 << 8)))
|
||||
actor->set_int_z(l - (30 << 8));
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (50 << 8))
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if ((actor->int_pos().Z - l) < (50 << 8))
|
||||
{
|
||||
actor->set_int_z(l + (50 << 8));
|
||||
actor->spr.zvel = 0;
|
||||
|
@ -3619,12 +3619,12 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
}
|
||||
else if (actor->spr.picnum != ORGANTIC)
|
||||
{
|
||||
if (actor->spr.zvel > 0 && actor->floorz < actor->spr.pos.Z)
|
||||
if (actor->spr.zvel > 0 && actor->floorz < actor->int_pos().Z)
|
||||
actor->set_int_z(actor->floorz);
|
||||
if (actor->spr.zvel < 0)
|
||||
{
|
||||
l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (66 << 8))
|
||||
l = getceilzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if ((actor->int_pos().Z - l) < (66 << 8))
|
||||
{
|
||||
actor->set_int_z(l + (66 << 8));
|
||||
actor->spr.zvel >>= 1;
|
||||
|
@ -3633,7 +3633,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
}
|
||||
}
|
||||
else if (actor->spr.picnum == APLAYER)
|
||||
if ((actor->spr.pos.Z - actor->ceilingz) < (32 << 8))
|
||||
if ((actor->int_pos().Z - actor->ceilingz) < (32 << 8))
|
||||
actor->set_int_z(actor->ceilingz + (32 << 8));
|
||||
|
||||
daxvel = actor->spr.xvel;
|
||||
|
@ -3645,7 +3645,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
{
|
||||
|
||||
daxvel = -(1024 - xvel);
|
||||
angdif = getangle(ps[playernum].pos.X - actor->spr.pos.X, ps[playernum].pos.Y - actor->spr.pos.Y);
|
||||
angdif = getangle(ps[playernum].pos.X - actor->int_pos().X, ps[playernum].pos.Y - actor->int_pos().Y);
|
||||
|
||||
if (xvel < 512)
|
||||
{
|
||||
|
@ -3662,7 +3662,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
{
|
||||
if (!*(moveptr + 1))
|
||||
{
|
||||
if (actor->opos.Z != actor->spr.pos.Z || (ud.multimode < 2 && ud.player_skill < 2))
|
||||
if (actor->opos.Z != actor->int_pos().Z || (ud.multimode < 2 && ud.player_skill < 2))
|
||||
{
|
||||
if ((actor->temp_data[0] & 1) || ps[playernum].actorsqu == actor) return;
|
||||
else daxvel <<= 1;
|
||||
|
|
|
@ -434,7 +434,7 @@ void moveminecart(void)
|
|||
while (auto a2 = it.Next())
|
||||
{
|
||||
if (badguy(a2))
|
||||
SetActor(a2, { int(cx * worldtoint), int(cy * worldtoint), a2->spr.pos.Z });
|
||||
SetActor(a2, { int(cx * worldtoint), int(cy * worldtoint), a2->int_pos().Z });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -225,16 +225,16 @@ void hitradius_r(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
|
||||
while (auto dasectp = search.GetNext())
|
||||
{
|
||||
if (((dasectp->ceilingz - actor->spr.pos.Z) >> 8) < r)
|
||||
if (((dasectp->ceilingz - actor->int_pos().Z) >> 8) < r)
|
||||
{
|
||||
auto wal = dasectp->firstWall();
|
||||
int d = abs(wal->wall_int_pos().X - actor->spr.pos.X) + abs(wal->wall_int_pos().Y - actor->spr.pos.Y);
|
||||
int d = abs(wal->wall_int_pos().X - actor->int_pos().X) + abs(wal->wall_int_pos().Y - actor->int_pos().Y);
|
||||
if (d < r)
|
||||
fi.checkhitceiling(dasectp);
|
||||
else
|
||||
{
|
||||
auto thirdpoint = wal->point2Wall()->point2Wall();
|
||||
d = abs(thirdpoint->wall_int_pos().X - actor->spr.pos.X) + abs(thirdpoint->wall_int_pos().Y - actor->spr.pos.Y);
|
||||
d = abs(thirdpoint->wall_int_pos().X - actor->int_pos().X) + abs(thirdpoint->wall_int_pos().Y - actor->int_pos().Y);
|
||||
if (d < r)
|
||||
fi.checkhitceiling(dasectp);
|
||||
}
|
||||
|
@ -242,18 +242,18 @@ void hitradius_r(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
|
||||
for (auto& wal : wallsofsector(dasectp))
|
||||
{
|
||||
if ((abs(wal.wall_int_pos().X - actor->spr.pos.X) + abs(wal.wall_int_pos().Y - actor->spr.pos.Y)) < r)
|
||||
if ((abs(wal.wall_int_pos().X - actor->int_pos().X) + abs(wal.wall_int_pos().Y - actor->int_pos().Y)) < r)
|
||||
{
|
||||
if (wal.twoSided())
|
||||
{
|
||||
search.Add(wal.nextSector());
|
||||
}
|
||||
int x1 = (((wal.wall_int_pos().X + wal.point2Wall()->wall_int_pos().X) >> 1) + actor->spr.pos.X) >> 1;
|
||||
int y1 = (((wal.wall_int_pos().Y + wal.point2Wall()->wall_int_pos().Y) >> 1) + actor->spr.pos.Y) >> 1;
|
||||
int x1 = (((wal.wall_int_pos().X + wal.point2Wall()->wall_int_pos().X) >> 1) + actor->int_pos().X) >> 1;
|
||||
int y1 = (((wal.wall_int_pos().Y + wal.point2Wall()->wall_int_pos().Y) >> 1) + actor->int_pos().Y) >> 1;
|
||||
auto sect = wal.sectorp();
|
||||
updatesector(x1, y1, §);
|
||||
if (sect != nullptr && cansee(x1, y1, actor->spr.pos.Z, sect, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector()))
|
||||
fi.checkhitwall(actor, &wal, wal.wall_int_pos().X, wal.wall_int_pos().Y, actor->spr.pos.Z, actor->spr.picnum);
|
||||
if (sect != nullptr && cansee(x1, y1, actor->int_pos().Z, sect, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, actor->sector()))
|
||||
fi.checkhitwall(actor, &wal, wal.wall_int_pos().X, wal.wall_int_pos().Y, actor->int_pos().Z, actor->spr.picnum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ void hitradius_r(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
if (act2->spr.cstat & CSTAT_SPRITE_BLOCK_ALL)
|
||||
if (dist(actor, act2) < r)
|
||||
{
|
||||
if (badguy(act2) && !cansee(act2->spr.pos.X, act2->spr.pos.Y, act2->spr.pos.Z + q, act2->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z + q, actor->sector()))
|
||||
if (badguy(act2) && !cansee(act2->int_pos().X, act2->int_pos().Y, act2->int_pos().Z + q, act2->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z + q, actor->sector()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -294,14 +294,14 @@ void hitradius_r(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
int d = dist(actor, act2);
|
||||
if (act2->spr.picnum == APLAYER) act2->add_int_z(gs.playerheight);
|
||||
|
||||
if (d < r && cansee(act2->spr.pos.X, act2->spr.pos.Y, act2->spr.pos.Z - (8 << 8), act2->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (12 << 8), actor->sector()))
|
||||
if (d < r && cansee(act2->int_pos().X, act2->int_pos().Y, act2->int_pos().Z - (8 << 8), act2->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (12 << 8), actor->sector()))
|
||||
{
|
||||
if ((isRRRA()) && act2->spr.picnum == MINION && act2->spr.pal == 19)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
act2->hitang = getangle(act2->spr.pos.X - actor->spr.pos.X, act2->spr.pos.Y - actor->spr.pos.Y);
|
||||
act2->hitang = getangle(act2->int_pos().X - actor->int_pos().X, act2->int_pos().Y - actor->int_pos().Y);
|
||||
|
||||
if (actor->spr.picnum == RPG && act2->spr.extra > 0)
|
||||
act2->attackertype = RPG;
|
||||
|
@ -372,13 +372,13 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
{
|
||||
actor->add_int_pos({ (xchange * TICSPERFRAME) >> 2, (ychange * TICSPERFRAME) >> 2, (zchange * TICSPERFRAME) >> 2 });
|
||||
if (bg)
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
return result.setNone();
|
||||
}
|
||||
|
||||
auto dasectp = actor->sector();
|
||||
|
||||
vec3_t pos = actor->spr.pos;
|
||||
vec3_t pos = actor->int_pos();
|
||||
pos.Z -= ((tileHeight(actor->spr.picnum) * actor->spr.yrepeat) << 1);
|
||||
|
||||
if (bg)
|
||||
|
@ -397,7 +397,7 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
actor->spr.ang = (krand() & 2047);
|
||||
else if ((actor->temp_data[0] & 3) == 1)
|
||||
actor->spr.ang = (krand() & 2047);
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
if (dasectp == nullptr) dasectp = §or[0];
|
||||
return result.setSector(dasectp);
|
||||
}
|
||||
|
@ -415,7 +415,7 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
if (dasectp)
|
||||
if ((dasectp != actor->sector()))
|
||||
ChangeActorSect(actor, dasectp);
|
||||
int daz = actor->spr.pos.Z + ((zchange * TICSPERFRAME) >> 3);
|
||||
int daz = actor->int_pos().Z + ((zchange * TICSPERFRAME) >> 3);
|
||||
if ((daz > actor->ceilingz) && (daz <= actor->floorz))
|
||||
actor->set_int_z(daz);
|
||||
else if (result.type == kHitNone)
|
||||
|
@ -453,8 +453,8 @@ void guts_r(DDukeActor* actor, int gtype, int n, int p)
|
|||
sx = sy = 8;
|
||||
else sx = sy = 32;
|
||||
|
||||
gutz = actor->spr.pos.Z - (8 << 8);
|
||||
floorz = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
gutz = actor->int_pos().Z - (8 << 8);
|
||||
floorz = getflorzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
|
||||
if (gutz > (floorz - (8 << 8)))
|
||||
gutz = floorz - (8 << 8);
|
||||
|
@ -482,7 +482,7 @@ void guts_r(DDukeActor* actor, int gtype, int n, int p)
|
|||
int r4 = krand();
|
||||
int r5 = krand();
|
||||
// TRANSITIONAL: owned by a player???
|
||||
auto spawned = EGS(actor->sector(), actor->spr.pos.X + (r5 & 255) - 128, actor->spr.pos.Y + (r4 & 255) - 128, gutz - (r3 & 8191), gtype, -32, sx >> 1, sy >> 1, a, 48 + (r2 & 31), -512 - (r1 & 2047), ps[p].GetActor(), 5);
|
||||
auto spawned = EGS(actor->sector(), actor->int_pos().X + (r5 & 255) - 128, actor->int_pos().Y + (r4 & 255) - 128, gutz - (r3 & 8191), gtype, -32, sx >> 1, sy >> 1, a, 48 + (r2 & 31), -512 - (r1 & 2047), ps[p].GetActor(), 5);
|
||||
if (spawned && pal != 0)
|
||||
spawned->spr.pal = pal;
|
||||
}
|
||||
|
@ -689,14 +689,14 @@ void movefallers_r(void)
|
|||
x = gs.gravity;
|
||||
}
|
||||
|
||||
if (act->spr.pos.Z < (sectp->floorz - FOURSLEIGHT))
|
||||
if (act->int_pos().Z < (sectp->floorz - FOURSLEIGHT))
|
||||
{
|
||||
act->spr.zvel += x;
|
||||
if (act->spr.zvel > 6144)
|
||||
act->spr.zvel = 6144;
|
||||
act->add_int_z(act->spr.zvel);
|
||||
}
|
||||
if ((sectp->floorz - act->spr.pos.Z) < (16 << 8))
|
||||
if ((sectp->floorz - act->int_pos().Z) < (16 << 8))
|
||||
{
|
||||
int j = 1 + (krand() & 7);
|
||||
for (x = 0; x < j; x++) RANDOMSCRAP(act);
|
||||
|
@ -935,7 +935,7 @@ static void chickenarrow(DDukeActor* actor)
|
|||
if (actor->seek_actor && actor->spr.hitag > 5)
|
||||
{
|
||||
int ang, ang2, ang3;
|
||||
ang = getangle(ts->spr.pos.X - actor->spr.pos.X, ts->spr.pos.Y - actor->spr.pos.Y);
|
||||
ang = getangle(ts->int_pos().X - actor->int_pos().X, ts->int_pos().Y - actor->int_pos().Y);
|
||||
ang2 = ang - actor->spr.ang;
|
||||
ang3 = abs(ang2);
|
||||
if (ang2 < 100)
|
||||
|
@ -1061,7 +1061,7 @@ static bool weaponhitwall(DDukeActor *proj, walltype* wal, const vec3_t& oldpos)
|
|||
else
|
||||
{
|
||||
SetActor(proj, oldpos);
|
||||
fi.checkhitwall(proj, wal, proj->spr.pos.X, proj->spr.pos.Y, proj->spr.pos.Z, proj->spr.picnum);
|
||||
fi.checkhitwall(proj, wal, proj->int_pos().X, proj->int_pos().Y, proj->int_pos().Z, proj->spr.picnum);
|
||||
|
||||
if (!isRRRA() && proj->spr.picnum == FREEZEBLAST)
|
||||
{
|
||||
|
@ -1192,7 +1192,7 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
ll = proj->spr.zvel;
|
||||
}
|
||||
|
||||
auto oldpos = proj->spr.pos;
|
||||
auto oldpos = proj->int_pos();
|
||||
|
||||
getglobalz(proj);
|
||||
|
||||
|
@ -1233,7 +1233,7 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
MulScale(k, bsin(proj->spr.ang), 14), ll, CLIPMASK1, coll);
|
||||
|
||||
if ((proj->spr.picnum == RPG || (isRRRA() && isIn(proj->spr.picnum, RPG2, RRTILE1790))) && proj->temp_actor != nullptr)
|
||||
if (FindDistance2D(proj->spr.pos.vec2 - proj->temp_actor->spr.pos.vec2) < 256)
|
||||
if (FindDistance2D(proj->int_pos().vec2 - proj->temp_actor->int_pos().vec2) < 256)
|
||||
coll.setSprite(proj->temp_actor);
|
||||
|
||||
if (!proj->insector()) // || (isRR() && proj->sector()->filler == 800))
|
||||
|
@ -1244,13 +1244,13 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
|
||||
if (coll.type != kHitSprite && proj->spr.picnum != FREEZEBLAST)
|
||||
{
|
||||
if (proj->spr.pos.Z < proj->ceilingz)
|
||||
if (proj->int_pos().Z < proj->ceilingz)
|
||||
{
|
||||
coll.setSector(proj->sector());
|
||||
proj->spr.zvel = -1;
|
||||
}
|
||||
else
|
||||
if (proj->spr.pos.Z > proj->floorz)
|
||||
if (proj->int_pos().Z > proj->floorz)
|
||||
{
|
||||
coll.setSector(proj->sector());
|
||||
if (proj->sector()->lotag != 1)
|
||||
|
@ -1263,9 +1263,9 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
for (k = -3; k < 2; k++)
|
||||
{
|
||||
auto x = EGS(proj->sector(),
|
||||
proj->spr.pos.X + MulScale(k, bcos(proj->spr.ang), 9),
|
||||
proj->spr.pos.Y + MulScale(k, bsin(proj->spr.ang), 9),
|
||||
proj->spr.pos.Z + ((k * Sgn(proj->spr.zvel)) * abs(proj->spr.zvel / 24)), FIRELASER, -40 + (k << 2),
|
||||
proj->int_pos().X + MulScale(k, bcos(proj->spr.ang), 9),
|
||||
proj->int_pos().Y + MulScale(k, bsin(proj->spr.ang), 9),
|
||||
proj->int_pos().Z + ((k * Sgn(proj->spr.zvel)) * abs(proj->spr.zvel / 24)), FIRELASER, -40 + (k << 2),
|
||||
proj->spr.xrepeat, proj->spr.yrepeat, 0, 0, 0, proj->GetOwner(), 5);
|
||||
|
||||
if (x)
|
||||
|
@ -1456,9 +1456,9 @@ void movetransports_r(void)
|
|||
ps[p].transporter_hold = 13;
|
||||
}
|
||||
|
||||
ps[p].bobpos.X = ps[p].opos.X = ps[p].pos.X = Owner->spr.pos.X;
|
||||
ps[p].bobpos.Y = ps[p].opos.Y = ps[p].pos.Y = Owner->spr.pos.Y;
|
||||
ps[p].opos.Z = ps[p].pos.Z = Owner->spr.pos.Z - (gs.playerheight - (4 << 8));
|
||||
ps[p].bobpos.X = ps[p].opos.X = ps[p].pos.X = Owner->int_pos().X;
|
||||
ps[p].bobpos.Y = ps[p].opos.Y = ps[p].pos.Y = Owner->int_pos().Y;
|
||||
ps[p].opos.Z = ps[p].pos.Z = Owner->int_pos().Z - (gs.playerheight - (4 << 8));
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
ps[p].setCursector(act2->sector());
|
||||
|
@ -1471,16 +1471,16 @@ void movetransports_r(void)
|
|||
}
|
||||
else break;
|
||||
|
||||
if (onfloorz == 0 && abs(act->spr.pos.Z - ps[p].pos.Z) < 6144)
|
||||
if (onfloorz == 0 && abs(act->int_pos().Z - ps[p].pos.Z) < 6144)
|
||||
if ((ps[p].jetpack_on == 0) || (ps[p].jetpack_on && PlayerInput(p, SB_JUMP)) ||
|
||||
(ps[p].jetpack_on && PlayerInput(p, SB_CROUCH)))
|
||||
{
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->int_pos().X - act->int_pos().X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->int_pos().Y - act->int_pos().Y;
|
||||
|
||||
if (ps[p].jetpack_on && (PlayerInput(p, SB_JUMP) || ps[p].jetpack_on < 11))
|
||||
ps[p].pos.Z = Owner->spr.pos.Z - 6144;
|
||||
else ps[p].pos.Z = Owner->spr.pos.Z + 6144;
|
||||
ps[p].pos.Z = Owner->int_pos().Z - 6144;
|
||||
else ps[p].pos.Z = Owner->int_pos().Z + 6144;
|
||||
ps[p].opos.Z = ps[p].pos.Z;
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
|
@ -1541,8 +1541,8 @@ void movetransports_r(void)
|
|||
|
||||
if (k == 1)
|
||||
{
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->int_pos().X - act->int_pos().X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->int_pos().Y - act->int_pos().Y;
|
||||
|
||||
if (Owner->GetOwner() != Owner)
|
||||
ps[p].transporter_hold = -2;
|
||||
|
@ -1555,8 +1555,8 @@ void movetransports_r(void)
|
|||
}
|
||||
else if (isRRRA() && k == 2)
|
||||
{
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->spr.pos.X - act->spr.pos.X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->spr.pos.Y - act->spr.pos.Y;
|
||||
ps[p].opos.X = ps[p].pos.X += Owner->int_pos().X - act->int_pos().X;
|
||||
ps[p].opos.Y = ps[p].pos.Y += Owner->int_pos().Y - act->int_pos().Y;
|
||||
|
||||
if (Owner->GetOwner() != Owner)
|
||||
ps[p].transporter_hold = -2;
|
||||
|
@ -1587,38 +1587,38 @@ void movetransports_r(void)
|
|||
|
||||
{
|
||||
warpspriteto = 0;
|
||||
if (ll && sectlotag == ST_2_UNDERWATER && act2->spr.pos.Z < (sectp->ceilingz + ll))
|
||||
if (ll && sectlotag == ST_2_UNDERWATER && act2->int_pos().Z < (sectp->ceilingz + ll))
|
||||
warpspriteto = 1;
|
||||
|
||||
if (ll && sectlotag == ST_1_ABOVE_WATER && act2->spr.pos.Z > (sectp->floorz - ll))
|
||||
if (ll && sectlotag == ST_1_ABOVE_WATER && act2->int_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->spr.pos.Z < (sectp->ceilingz + ll) && warpdir == 1)
|
||||
if (ll && sectlotag == 161 && act2->int_pos().Z < (sectp->ceilingz + ll) && warpdir == 1)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = ll - abs(act2->spr.pos.Z - sectp->ceilingz);
|
||||
ll2 = ll - abs(act2->int_pos().Z - sectp->ceilingz);
|
||||
}
|
||||
else if (sectlotag == 161 && act2->spr.pos.Z < (sectp->ceilingz + 1000) && warpdir == 1)
|
||||
else if (sectlotag == 161 && act2->int_pos().Z < (sectp->ceilingz + 1000) && warpdir == 1)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = 1;
|
||||
}
|
||||
if (ll && sectlotag == 160 && act2->spr.pos.Z > (sectp->floorz - ll) && warpdir == 2)
|
||||
if (ll && sectlotag == 160 && act2->int_pos().Z > (sectp->floorz - ll) && warpdir == 2)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = ll - abs(sectp->floorz - act2->spr.pos.Z);
|
||||
ll2 = ll - abs(sectp->floorz - act2->int_pos().Z);
|
||||
}
|
||||
else if (sectlotag == 160 && act2->spr.pos.Z > (sectp->floorz - 1000) && warpdir == 2)
|
||||
else if (sectlotag == 160 && act2->int_pos().Z > (sectp->floorz - 1000) && warpdir == 2)
|
||||
{
|
||||
warpspriteto = 1;
|
||||
ll2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (sectlotag == 0 && (onfloorz || abs(act2->spr.pos.Z - act->spr.pos.Z) < 4096))
|
||||
if (sectlotag == 0 && (onfloorz || abs(act2->int_pos().Z - act->int_pos().Z) < 4096))
|
||||
{
|
||||
if (Owner->GetOwner() != Owner && onfloorz && act->temp_data[0] > 0 && act2->spr.statnum != 5)
|
||||
{
|
||||
|
@ -1667,7 +1667,7 @@ void movetransports_r(void)
|
|||
{
|
||||
if (checkcursectnums(act->sector()) == -1 && checkcursectnums(Owner->sector()) == -1)
|
||||
{
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), -(act->spr.pos.Z - Owner->sector()->floorz) });
|
||||
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()->floorz) });
|
||||
act2->spr.ang = Owner->spr.ang;
|
||||
|
||||
act2->backupang();
|
||||
|
@ -1689,15 +1689,15 @@ void movetransports_r(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
act2->set_int_z(Owner->spr.pos.Z + 4096);
|
||||
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->int_pos().Z + 4096);
|
||||
act2->backupz();
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
}
|
||||
break;
|
||||
case ST_1_ABOVE_WATER:
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
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()->ceilingz + ll);
|
||||
act2->backupz();
|
||||
|
||||
|
@ -1705,7 +1705,7 @@ void movetransports_r(void)
|
|||
|
||||
break;
|
||||
case ST_2_UNDERWATER:
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
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()->floorz - ll);
|
||||
act2->backupz();
|
||||
|
||||
|
@ -1715,7 +1715,7 @@ void movetransports_r(void)
|
|||
|
||||
case 160:
|
||||
if (!isRRRA()) break;
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
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()->ceilingz + ll2);
|
||||
act2->backupz();
|
||||
|
||||
|
@ -1727,7 +1727,7 @@ void movetransports_r(void)
|
|||
break;
|
||||
case 161:
|
||||
if (!isRRRA()) break;
|
||||
act2->add_int_pos({ (Owner->spr.pos.X - act->spr.pos.X), (Owner->spr.pos.Y - act->spr.pos.Y), 0 });
|
||||
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()->floorz - ll);
|
||||
act2->backupz();
|
||||
|
||||
|
@ -1900,7 +1900,7 @@ static void rrra_specialstats()
|
|||
act->spr.extra = 1;
|
||||
}
|
||||
movesprite_ex(act, 0, 0, -300, CLIPMASK0, coll);
|
||||
if (act->sector()->ceilingz + (4 << 8) > act->spr.pos.Z)
|
||||
if (act->sector()->ceilingz + (4 << 8) > act->int_pos().Z)
|
||||
{
|
||||
act->spr.picnum = 0;
|
||||
act->spr.extra = 100;
|
||||
|
@ -1908,7 +1908,7 @@ static void rrra_specialstats()
|
|||
}
|
||||
else if (act->spr.extra == 200)
|
||||
{
|
||||
SetActor(act, { act->spr.pos.X, act->spr.pos.Y, act->sector()->floorz - 10 });
|
||||
SetActor(act, { act->int_pos().X, act->int_pos().Y, act->sector()->floorz - 10 });
|
||||
act->spr.extra = 1;
|
||||
act->spr.picnum = PIG + 11;
|
||||
spawn(act, TRANSPORTERSTAR);
|
||||
|
@ -2132,7 +2132,7 @@ void rr_specialstats()
|
|||
if (act->spr.hitag == 100)
|
||||
{
|
||||
act->add_int_z(4 << 8);
|
||||
if (act->spr.pos.Z >= act->sector()->floorz + 15168)
|
||||
if (act->int_pos().Z >= act->sector()->floorz + 15168)
|
||||
act->set_int_z(act->sector()->floorz + 15168);
|
||||
}
|
||||
|
||||
|
@ -2285,9 +2285,9 @@ void rr_specialstats()
|
|||
if (act2->spr.picnum == RRTILE297)
|
||||
{
|
||||
ps[p].angle.ang = buildang(act2->spr.ang);
|
||||
ps[p].bobpos.X = ps[p].opos.X = ps[p].pos.X = act2->spr.pos.X;
|
||||
ps[p].bobpos.Y = ps[p].opos.Y = ps[p].pos.Y = act2->spr.pos.Y;
|
||||
ps[p].opos.Z = ps[p].pos.Z = act2->spr.pos.Z - (36 << 8);
|
||||
ps[p].bobpos.X = ps[p].opos.X = ps[p].pos.X = act2->int_pos().X;
|
||||
ps[p].bobpos.Y = ps[p].opos.Y = ps[p].pos.Y = act2->int_pos().Y;
|
||||
ps[p].opos.Z = ps[p].pos.Z = act2->int_pos().Z - (36 << 8);
|
||||
auto pact = ps[p].GetActor();
|
||||
ChangeActorSect(pact, act2->sector());
|
||||
ps[p].setCursector(pact->sector());
|
||||
|
@ -2344,7 +2344,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
|
||||
makeitfall(actor);
|
||||
|
||||
if (sectp->lotag != 1 && (!isRRRA() || sectp->lotag != 160) && actor->spr.pos.Z >= actor->floorz - (FOURSLEIGHT) && actor->spr.yvel < 3)
|
||||
if (sectp->lotag != 1 && (!isRRRA() || sectp->lotag != 160) && actor->int_pos().Z >= actor->floorz - (FOURSLEIGHT) && actor->spr.yvel < 3)
|
||||
{
|
||||
if (actor->spr.yvel > 0 || (actor->spr.yvel == 0 && actor->floorz == sectp->floorz))
|
||||
{
|
||||
|
@ -2363,7 +2363,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
actor->spr.zvel >>= 2;
|
||||
actor->spr.yvel++;
|
||||
}
|
||||
if (actor->spr.picnum != CHEERBOMB && actor->spr.pos.Z < actor->ceilingz + (16 << 8) && sectp->lotag != 2)
|
||||
if (actor->spr.picnum != CHEERBOMB && actor->int_pos().Z < actor->ceilingz + (16 << 8) && sectp->lotag != 2)
|
||||
{
|
||||
actor->set_int_z(actor->ceilingz + (16 << 8));
|
||||
actor->spr.zvel = 0;
|
||||
|
@ -2424,7 +2424,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
if (coll.type == kHitWall)
|
||||
{
|
||||
auto wal = coll.hitWall;
|
||||
fi.checkhitwall(actor, wal, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.picnum);
|
||||
fi.checkhitwall(actor, wal, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, actor->spr.picnum);
|
||||
|
||||
int k = getangle(wal->delta());
|
||||
|
||||
|
@ -2490,7 +2490,7 @@ DETONATEB:
|
|||
}
|
||||
}
|
||||
else if (actor->spr.picnum == HEAVYHBOMB && x < 788 && actor->temp_data[0] > 7 && actor->spr.xvel == 0)
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (8 << 8), actor->sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
if (cansee(actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (8 << 8), actor->sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
if (ps[p].ammo_amount[DYNAMITE_WEAPON] < gs.max_ammo_amount[DYNAMITE_WEAPON])
|
||||
if (actor->spr.pal == 0)
|
||||
{
|
||||
|
@ -2687,7 +2687,7 @@ void moveactors_r(void)
|
|||
act->spr.picnum = RRTILE3192;
|
||||
break;
|
||||
case 903:
|
||||
if (act->spr.pos.Z >= sectp->floorz - (8<<8))
|
||||
if (act->int_pos().Z >= sectp->floorz - (8<<8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -2726,7 +2726,7 @@ void moveactors_r(void)
|
|||
}
|
||||
if (sectp->lotag == 903)
|
||||
{
|
||||
if (act->spr.pos.Z >= sectp->floorz - (4<<8))
|
||||
if (act->int_pos().Z >= sectp->floorz - (4<<8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -2750,7 +2750,7 @@ void moveactors_r(void)
|
|||
MulScale(act->spr.xvel, bcos(act->spr.ang), 14),
|
||||
MulScale(act->spr.xvel, bsin(act->spr.ang), 14),
|
||||
act->spr.zvel,CLIPMASK0, coll);
|
||||
if (act->spr.pos.Z >= sectp->floorz - (8<<8))
|
||||
if (act->int_pos().Z >= sectp->floorz - (8<<8))
|
||||
{
|
||||
if (sectp->lotag == 1)
|
||||
{
|
||||
|
@ -2831,7 +2831,7 @@ void moveactors_r(void)
|
|||
getglobalz(act);
|
||||
if (sectp->lotag == 1)
|
||||
{
|
||||
SetActor(act, { act->spr.pos.X,act->spr.pos.Y,act->floorz + (16 << 8) });
|
||||
SetActor(act, { act->int_pos().X,act->int_pos().Y,act->floorz + (16 << 8) });
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -2924,7 +2924,7 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
{
|
||||
case SHOTGUNSPRITE:
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
if (act->int_pos().Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -3013,7 +3013,7 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
deletesprite(act);
|
||||
continue;
|
||||
case FEATHER + 1: // feather
|
||||
act->floorz = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
act->floorz = getflorzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y);
|
||||
act->set_int_z(act->floorz);
|
||||
if (act->sector()->lotag == 800)
|
||||
{
|
||||
|
@ -3025,7 +3025,7 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
if (!money(act, BLOODPOOL)) continue;
|
||||
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
if (act->int_pos().Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -3080,7 +3080,7 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
isRRRA() && (act->spr.picnum == RRTILE2465 || act->spr.picnum == RRTILE2560))) continue;
|
||||
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
if (act->int_pos().Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -3092,7 +3092,7 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
if (!bloodpool(act, false)) continue;
|
||||
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
if (act->int_pos().Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
}
|
||||
|
@ -3168,7 +3168,7 @@ void handle_se06_r(DDukeActor *actor)
|
|||
}
|
||||
if (!hulkspawn)
|
||||
{
|
||||
ns = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->sector()->ceilingz + 119428, 3677, -8, 16, 16, 0, 0, 0, actor, 5);
|
||||
ns = EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->sector()->ceilingz + 119428, 3677, -8, 16, 16, 0, 0, 0, actor, 5);
|
||||
if (ns)
|
||||
{
|
||||
ns->spr.cstat = CSTAT_SPRITE_TRANS_FLIP | CSTAT_SPRITE_TRANSLUCENT;
|
||||
|
@ -3397,7 +3397,7 @@ void moveeffectors_r(void) //STATNUM 3
|
|||
case SE_29_WAVES:
|
||||
act->spr.hitag += 64;
|
||||
l = MulScale(act->spr.yvel, bsin(act->spr.hitag), 12);
|
||||
sc->setfloorz(act->spr.pos.Z + l);
|
||||
sc->setfloorz(act->int_pos().Z + l);
|
||||
break;
|
||||
|
||||
case SE_31_FLOOR_RISE_FALL: // True Drop Floor
|
||||
|
@ -3486,8 +3486,8 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
if (a & face_player)
|
||||
{
|
||||
if (ps[pnum].newOwner != nullptr)
|
||||
goalang = getangle(ps[pnum].opos.X - actor->spr.pos.X, ps[pnum].opos.Y - actor->spr.pos.Y);
|
||||
else goalang = getangle(ps[pnum].pos.X - actor->spr.pos.X, ps[pnum].pos.Y - actor->spr.pos.Y);
|
||||
goalang = getangle(ps[pnum].opos.X - actor->int_pos().X, ps[pnum].opos.Y - actor->int_pos().Y);
|
||||
else goalang = getangle(ps[pnum].pos.X - actor->int_pos().X, ps[pnum].pos.Y - actor->int_pos().Y);
|
||||
angdif = getincangle(actor->spr.ang, goalang) >> 2;
|
||||
if (angdif > -8 && angdif < 0) angdif = 0;
|
||||
actor->spr.ang += angdif;
|
||||
|
@ -3499,8 +3499,8 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
if (a & face_player_slow)
|
||||
{
|
||||
if (ps[pnum].newOwner != nullptr)
|
||||
goalang = getangle(ps[pnum].opos.X - actor->spr.pos.X, ps[pnum].opos.Y - actor->spr.pos.Y);
|
||||
else goalang = getangle(ps[pnum].pos.X - actor->spr.pos.X, ps[pnum].pos.Y - actor->spr.pos.Y);
|
||||
goalang = getangle(ps[pnum].opos.X - actor->int_pos().X, ps[pnum].opos.Y - actor->int_pos().Y);
|
||||
else goalang = getangle(ps[pnum].pos.X - actor->int_pos().X, ps[pnum].pos.Y - actor->int_pos().Y);
|
||||
angdif = Sgn(getincangle(actor->spr.ang, goalang)) << 5;
|
||||
if (angdif > -32 && angdif < 0)
|
||||
{
|
||||
|
@ -3515,8 +3515,8 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
if (a & antifaceplayerslow)
|
||||
{
|
||||
if (ps[pnum].newOwner != nullptr)
|
||||
goalang = (getangle(ps[pnum].opos.X - actor->spr.pos.X, ps[pnum].opos.Y - actor->spr.pos.Y) + 1024) & 2047;
|
||||
else goalang = (getangle(ps[pnum].pos.X - actor->spr.pos.X, ps[pnum].pos.Y - actor->spr.pos.Y) + 1024) & 2047;
|
||||
goalang = (getangle(ps[pnum].opos.X - actor->int_pos().X, ps[pnum].opos.Y - actor->int_pos().Y) + 1024) & 2047;
|
||||
else goalang = (getangle(ps[pnum].pos.X - actor->int_pos().X, ps[pnum].pos.Y - actor->int_pos().Y) + 1024) & 2047;
|
||||
angdif = Sgn(getincangle(actor->spr.ang, goalang)) << 5;
|
||||
if (angdif > -32 && angdif < 0)
|
||||
{
|
||||
|
@ -3584,7 +3584,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
|
||||
newx = ps[pnum].pos.X + (ps[pnum].vel.X / 768);
|
||||
newy = ps[pnum].pos.Y + (ps[pnum].vel.Y / 768);
|
||||
goalang = getangle(newx - actor->spr.pos.X, newy - actor->spr.pos.Y);
|
||||
goalang = getangle(newx - actor->int_pos().X, newy - actor->int_pos().Y);
|
||||
angdif = getincangle(actor->spr.ang, goalang) >> 2;
|
||||
if (angdif > -8 && angdif < 0) angdif = 0;
|
||||
actor->spr.ang += angdif;
|
||||
|
@ -3592,10 +3592,10 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
|
||||
if (actor->temp_data[1] == 0 || a == 0)
|
||||
{
|
||||
if ((badguy(actor) && actor->spr.extra <= 0) || (actor->opos.X != actor->spr.pos.X) || (actor->opos.Y != actor->spr.pos.Y))
|
||||
if ((badguy(actor) && actor->spr.extra <= 0) || (actor->opos.X != actor->int_pos().X) || (actor->opos.Y != actor->int_pos().Y))
|
||||
{
|
||||
actor->backupvec2();
|
||||
SetActor(actor, actor->spr.pos);
|
||||
SetActor(actor, actor->int_pos());
|
||||
}
|
||||
if (badguy(actor) && actor->spr.extra <= 0)
|
||||
{
|
||||
|
@ -3641,34 +3641,34 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
{
|
||||
if (actor->spr.zvel > 0)
|
||||
{
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if (isRRRA())
|
||||
{
|
||||
if (actor->spr.pos.Z > (l - (28 << 8)))
|
||||
if (actor->int_pos().Z > (l - (28 << 8)))
|
||||
actor->set_int_z(l - (28 << 8));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (actor->spr.pos.Z > (l - (30 << 8)))
|
||||
if (actor->int_pos().Z > (l - (30 << 8)))
|
||||
actor->set_int_z(l - (30 << 8));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (50 << 8))
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if ((actor->int_pos().Z - l) < (50 << 8))
|
||||
{
|
||||
actor->set_int_z(l + (50 << 8));
|
||||
actor->spr.zvel = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (actor->spr.zvel > 0 && actor->floorz < actor->spr.pos.Z)
|
||||
if (actor->spr.zvel > 0 && actor->floorz < actor->int_pos().Z)
|
||||
actor->set_int_z(actor->floorz);
|
||||
if (actor->spr.zvel < 0)
|
||||
{
|
||||
l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (66 << 8))
|
||||
l = getceilzofslopeptr(actor->sector(), actor->int_pos().X, actor->int_pos().Y);
|
||||
if ((actor->int_pos().Z - l) < (66 << 8))
|
||||
{
|
||||
actor->set_int_z(l + (66 << 8));
|
||||
actor->spr.zvel >>= 1;
|
||||
|
@ -3676,7 +3676,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
}
|
||||
}
|
||||
else if (actor->spr.picnum == APLAYER)
|
||||
if ((actor->spr.pos.Z - actor->ceilingz) < (32 << 8))
|
||||
if ((actor->int_pos().Z - actor->ceilingz) < (32 << 8))
|
||||
actor->set_int_z(actor->ceilingz + (32 << 8));
|
||||
|
||||
daxvel = actor->spr.xvel;
|
||||
|
@ -3688,7 +3688,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
{
|
||||
|
||||
daxvel = -(1024 - xvel);
|
||||
angdif = getangle(ps[pnum].pos.X - actor->spr.pos.X, ps[pnum].pos.Y - actor->spr.pos.Y);
|
||||
angdif = getangle(ps[pnum].pos.X - actor->int_pos().X, ps[pnum].pos.Y - actor->int_pos().Y);
|
||||
|
||||
if (xvel < 512)
|
||||
{
|
||||
|
@ -3707,7 +3707,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
{
|
||||
if (!*(moveptr + 1))
|
||||
{
|
||||
if (actor->opos.Z != actor->spr.pos.Z || (ud.multimode < 2 && ud.player_skill < 2))
|
||||
if (actor->opos.Z != actor->int_pos().Z || (ud.multimode < 2 && ud.player_skill < 2))
|
||||
{
|
||||
if ((actor->temp_data[0] & 1) || ps[pnum].actorsqu == actor) return;
|
||||
else daxvel <<= 1;
|
||||
|
@ -3818,7 +3818,7 @@ static int fallspecial(DDukeActor *actor, int playernum)
|
|||
}
|
||||
else if (actor->sector()->lotag == 802)
|
||||
{
|
||||
if (actor->spr.picnum != APLAYER && badguy(actor) && actor->spr.pos.Z == actor->floorz - FOURSLEIGHT)
|
||||
if (actor->spr.picnum != APLAYER && badguy(actor) && actor->int_pos().Z == actor->floorz - FOURSLEIGHT)
|
||||
{
|
||||
fi.guts(actor, JIBS6, 5, playernum);
|
||||
S_PlayActorSound(SQUISHED, actor);
|
||||
|
|
|
@ -205,12 +205,12 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
{
|
||||
int sqa =
|
||||
getangle(
|
||||
OwnerAc->spr.pos.X - ps[screenpeek].pos.X,
|
||||
OwnerAc->spr.pos.Y - ps[screenpeek].pos.Y);
|
||||
OwnerAc->int_pos().X - ps[screenpeek].pos.X,
|
||||
OwnerAc->int_pos().Y - ps[screenpeek].pos.Y);
|
||||
int sqb =
|
||||
getangle(
|
||||
OwnerAc->spr.pos.X - t->pos.X,
|
||||
OwnerAc->spr.pos.Y - t->pos.Y);
|
||||
OwnerAc->int_pos().X - t->pos.X,
|
||||
OwnerAc->int_pos().Y - t->pos.Y);
|
||||
|
||||
if (abs(getincangle(sqa, sqb)) > 512)
|
||||
if (ldist(OwnerAc, t) < ldist(ps[screenpeek].GetActor(), OwnerAc))
|
||||
|
@ -226,8 +226,8 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
else
|
||||
{
|
||||
t->ang = getangle(x - t->pos.X, y - t->pos.Y);
|
||||
t->pos.X = OwnerAc->spr.pos.X;
|
||||
t->pos.Y = OwnerAc->spr.pos.Y;
|
||||
t->pos.X = OwnerAc->int_pos().X;
|
||||
t->pos.Y = OwnerAc->int_pos().Y;
|
||||
t->pos.X += bcos(t->ang, -10);
|
||||
t->pos.Y += bsin(t->ang, -10);
|
||||
}
|
||||
|
@ -268,7 +268,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
break;
|
||||
}
|
||||
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
if (k > 6)
|
||||
{
|
||||
|
@ -286,7 +286,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
break;
|
||||
}
|
||||
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
if (h->temp_data[0] < 4)
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
else k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
|
@ -358,7 +358,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
|
||||
if (h->GetOwner())
|
||||
newtspr->pos.Z = ps[p].pos.Z - (12 << 8);
|
||||
else newtspr->pos.Z = h->spr.pos.Z - (51 << 8);
|
||||
else newtspr->pos.Z = h->int_pos().Z - (51 << 8);
|
||||
if (ps[p].curr_weapon == HANDBOMB_WEAPON)
|
||||
{
|
||||
newtspr->xrepeat = 10;
|
||||
|
@ -391,7 +391,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
}
|
||||
|
||||
if (t->sectp->lotag == 2) k += 1795 - 1405;
|
||||
else if ((h->floorz - h->spr.pos.Z) > (64 << 8)) k += 60;
|
||||
else if ((h->floorz - h->int_pos().Z) > (64 << 8)) k += 60;
|
||||
|
||||
t->picnum += k;
|
||||
t->pal = ps[p].palookup;
|
||||
|
@ -401,7 +401,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
|
||||
if (ps[p].on_crane == nullptr && (h->sector()->lotag & 0x7ff) != 1)
|
||||
{
|
||||
l = h->spr.pos.Z - ps[p].GetActor()->floorz + (3 << 8);
|
||||
l = h->int_pos().Z - ps[p].GetActor()->floorz + (3 << 8);
|
||||
if (l > 1024 && h->spr.yrepeat > 32 && h->spr.extra > 0)
|
||||
h->spr.yoffset = (int8_t)(l / (h->spr.yrepeat << 2));
|
||||
else h->spr.yoffset = 0;
|
||||
|
@ -519,7 +519,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
break;
|
||||
|
||||
case 5:
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) >> 8) & 7;
|
||||
if (k > 4)
|
||||
{
|
||||
|
@ -529,7 +529,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
else t->cstat &= ~CSTAT_SPRITE_XFLIP;
|
||||
break;
|
||||
case 7:
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
if (k > 6)
|
||||
{
|
||||
|
@ -578,7 +578,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
daz = h->floorz;
|
||||
|
||||
|
||||
if ((h->spr.pos.Z - daz) < (8 << 8) && ps[screenpeek].pos.Z < daz)
|
||||
if ((h->int_pos().Z - daz) < (8 << 8) && ps[screenpeek].pos.Z < daz)
|
||||
{
|
||||
auto shadowspr = tsprites.newTSprite();
|
||||
*shadowspr = *t;
|
||||
|
@ -625,7 +625,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
case LASERLINE:
|
||||
if (!OwnerAc) break;
|
||||
if (t->sectp->lotag == 2) t->pal = 8;
|
||||
t->pos.Z = OwnerAc->spr.pos.Z - (3 << 8);
|
||||
t->pos.Z = OwnerAc->int_pos().Z - (3 << 8);
|
||||
if (gs.lasermode == 2 && ps[screenpeek].heat_on == 0)
|
||||
t->yrepeat = 0;
|
||||
t->shade = -127;
|
||||
|
|
|
@ -200,12 +200,12 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
{
|
||||
int sqa =
|
||||
getangle(
|
||||
OwnerAc->spr.pos.X - ps[screenpeek].pos.X,
|
||||
OwnerAc->spr.pos.Y - ps[screenpeek].pos.Y);
|
||||
OwnerAc->int_pos().X - ps[screenpeek].pos.X,
|
||||
OwnerAc->int_pos().Y - ps[screenpeek].pos.Y);
|
||||
int sqb =
|
||||
getangle(
|
||||
OwnerAc->spr.pos.X - t->pos.X,
|
||||
OwnerAc->spr.pos.Y - t->pos.Y);
|
||||
OwnerAc->int_pos().X - t->pos.X,
|
||||
OwnerAc->int_pos().Y - t->pos.Y);
|
||||
|
||||
if (abs(getincangle(sqa, sqb)) > 512)
|
||||
if (ldist(OwnerAc, t) < ldist(ps[screenpeek].GetActor(), OwnerAc))
|
||||
|
@ -220,8 +220,8 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
else
|
||||
{
|
||||
t->ang = getangle(x - t->pos.X, y - t->pos.Y);
|
||||
t->pos.X = OwnerAc->spr.pos.X;
|
||||
t->pos.Y = OwnerAc->spr.pos.Y;
|
||||
t->pos.X = OwnerAc->int_pos().X;
|
||||
t->pos.Y = OwnerAc->int_pos().Y;
|
||||
t->pos.X += bcos(t->ang, -10);
|
||||
t->pos.Y += bsin(t->ang, -10);
|
||||
}
|
||||
|
@ -262,7 +262,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
}
|
||||
else if (OwnerAc->spr.picnum == MAMA)
|
||||
{
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) >> 8) & 7;
|
||||
if (k > 4)
|
||||
{
|
||||
|
@ -280,7 +280,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
break;
|
||||
case EMPTYBIKE:
|
||||
if (!isRRRA()) goto default_case;
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
if (k > 6)
|
||||
{
|
||||
|
@ -292,7 +292,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
break;
|
||||
case EMPTYBOAT:
|
||||
if (!isRRRA()) goto default_case;
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
if (k > 6)
|
||||
{
|
||||
|
@ -303,7 +303,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
t->picnum = EMPTYBOAT + k;
|
||||
break;
|
||||
case RPG:
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
if (k > 6)
|
||||
{
|
||||
|
@ -315,7 +315,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
break;
|
||||
case RPG2:
|
||||
if (!isRRRA()) goto default_case;
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
if (k > 6)
|
||||
{
|
||||
|
@ -328,7 +328,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
|
||||
case RECON:
|
||||
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
if (h->temp_data[0] < 4)
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
else k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
|
@ -398,7 +398,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
|
||||
if (h->GetOwner())
|
||||
newtspr->pos.Z = ps[p].pos.Z - (12 << 8);
|
||||
else newtspr->pos.Z = h->spr.pos.Z - (51 << 8);
|
||||
else newtspr->pos.Z = h->int_pos().Z - (51 << 8);
|
||||
if (ps[p].curr_weapon == HANDBOMB_WEAPON)
|
||||
{
|
||||
newtspr->xrepeat = 10;
|
||||
|
@ -435,7 +435,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
}
|
||||
|
||||
if (t->sectp->lotag == 2) k += 1795 - 1405;
|
||||
else if ((h->floorz - h->spr.pos.Z) > (64 << 8)) k += 60;
|
||||
else if ((h->floorz - h->int_pos().Z) > (64 << 8)) k += 60;
|
||||
|
||||
t->picnum += k;
|
||||
t->pal = ps[p].palookup;
|
||||
|
@ -445,7 +445,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
|
||||
if (ps[p].on_crane == nullptr && (h->sector()->lotag & 0x7ff) != 1)
|
||||
{
|
||||
l = h->spr.pos.Z - ps[p].GetActor()->floorz + (3 << 8);
|
||||
l = h->int_pos().Z - ps[p].GetActor()->floorz + (3 << 8);
|
||||
if (l > 1024 && h->spr.yrepeat > 32 && h->spr.extra > 0)
|
||||
h->spr.yoffset = (int8_t)(l / (h->spr.yrepeat << 2));
|
||||
else h->spr.yoffset = 0;
|
||||
|
@ -651,7 +651,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
break;
|
||||
|
||||
case 5:
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) >> 8) & 7;
|
||||
if (k > 4)
|
||||
{
|
||||
|
@ -661,7 +661,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
else t->cstat &= ~CSTAT_SPRITE_XFLIP;
|
||||
break;
|
||||
case 7:
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) / 170);
|
||||
if (k > 6)
|
||||
{
|
||||
|
@ -678,7 +678,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
bg = badguy(h);
|
||||
if (bg && h->spr.statnum == 2 && h->spr.extra > 0)
|
||||
{
|
||||
k = getangle(h->spr.pos.X - x, h->spr.pos.Y - y);
|
||||
k = getangle(h->int_pos().X - x, h->int_pos().Y - y);
|
||||
k = (((h->spr.ang + 3072 + 128 - k) & 2047) >> 8) & 7;
|
||||
if (k > 4)
|
||||
{
|
||||
|
@ -733,7 +733,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat
|
|||
else
|
||||
daz = h->floorz;
|
||||
|
||||
if ((h->spr.pos.Z - daz) < (8 << 8))
|
||||
if ((h->int_pos().Z - daz) < (8 << 8))
|
||||
if (ps[screenpeek].pos.Z < daz)
|
||||
{
|
||||
auto shadowspr = tsprites.newTSprite();
|
||||
|
|
|
@ -420,8 +420,8 @@ bool GameInterface::DrawAutomapPlayer(int mx, int my, int cposx, int cposy, int
|
|||
col = PalEntry(0, 170, 170);
|
||||
if (act->spr.cstat & CSTAT_SPRITE_BLOCK) col = PalEntry(170, 0, 170);
|
||||
|
||||
sprx = act->spr.pos.X;
|
||||
spry = act->spr.pos.Y;
|
||||
sprx = act->int_pos().X;
|
||||
spry = act->int_pos().Y;
|
||||
|
||||
if ((act->spr.cstat & CSTAT_SPRITE_BLOCK_ALL) != 0) switch (act->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK)
|
||||
{
|
||||
|
|
|
@ -1172,16 +1172,16 @@ void DoActor(bool bSet, int lVar1, int lLabelID, int lVar2, DDukeActor* sActor,
|
|||
switch (lLabelID)
|
||||
{
|
||||
case ACTOR_X:
|
||||
/*if (bSet) act->spr.pos.X = lValue;
|
||||
else*/ SetGameVarID(lVar2, act->spr.pos.X, sActor, sPlayer);
|
||||
/*if (bSet) act->int_pos().X = lValue;
|
||||
else*/ SetGameVarID(lVar2, act->int_pos().X, sActor, sPlayer);
|
||||
break;
|
||||
case ACTOR_Y:
|
||||
/*if (bSet) act->spr.pos.Y = lValue;
|
||||
else*/ SetGameVarID(lVar2, act->spr.pos.Y, sActor, sPlayer);
|
||||
/*if (bSet) act->int_pos().Y = lValue;
|
||||
else*/ SetGameVarID(lVar2, act->int_pos().Y, sActor, sPlayer);
|
||||
break;
|
||||
case ACTOR_Z:
|
||||
/*if (bSet) act->spr.pos.Z = lValue;
|
||||
else*/ SetGameVarID(lVar2, act->spr.pos.Z, sActor, sPlayer);
|
||||
/*if (bSet) act->int_pos().Z = lValue;
|
||||
else*/ SetGameVarID(lVar2, act->int_pos().Z, sActor, sPlayer);
|
||||
break;
|
||||
case ACTOR_CSTAT:
|
||||
if (bSet) act->spr.cstat = ESpriteFlags::FromInt(lValue);
|
||||
|
@ -1471,7 +1471,7 @@ static bool ifcansee(DDukeActor* actor, int pnum)
|
|||
if (ps[pnum].holoduke_on != nullptr && !isRR())
|
||||
{
|
||||
tosee = ps[pnum].holoduke_on;
|
||||
j = cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (krand() & ((32 << 8) - 1)), actor->sector(), tosee->spr.pos.X, tosee->spr.pos.Y, tosee->spr.pos.Z, tosee->sector());
|
||||
j = cansee(actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (krand() & ((32 << 8) - 1)), actor->sector(), tosee->int_pos().X, tosee->int_pos().Y, tosee->int_pos().Z, tosee->sector());
|
||||
|
||||
if (j == 0)
|
||||
{
|
||||
|
@ -1483,7 +1483,7 @@ static bool ifcansee(DDukeActor* actor, int pnum)
|
|||
else tosee = ps[pnum].GetActor(); // holoduke not on. look for player
|
||||
|
||||
// can they see player, (or player's holoduke)
|
||||
j = cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (krand() & ((47 << 8))), actor->sector(), tosee->spr.pos.X, tosee->spr.pos.Y, tosee->spr.pos.Z - ((isRR()? 28 : 24) << 8), tosee->sector());
|
||||
j = cansee(actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (krand() & ((47 << 8))), actor->sector(), tosee->int_pos().X, tosee->int_pos().Y, tosee->int_pos().Z - ((isRR()? 28 : 24) << 8), tosee->sector());
|
||||
|
||||
if (j == 0)
|
||||
{
|
||||
|
@ -1495,8 +1495,8 @@ static bool ifcansee(DDukeActor* actor, int pnum)
|
|||
{
|
||||
// else, they did see it.
|
||||
// save where we were looking..
|
||||
actor->ovel.X = tosee->spr.pos.X;
|
||||
actor->ovel.Y = tosee->spr.pos.Y;
|
||||
actor->ovel.X = tosee->int_pos().X;
|
||||
actor->ovel.Y = tosee->int_pos().Y;
|
||||
}
|
||||
|
||||
if (j == 1 && (actor->spr.statnum == STAT_ACTOR || actor->spr.statnum == STAT_STANDABLE))
|
||||
|
@ -1534,12 +1534,12 @@ int ParseState::parse(void)
|
|||
parseifelse(ifcanshoottarget(g_ac, g_p, g_x));
|
||||
break;
|
||||
case concmd_ifcanseetarget:
|
||||
j = cansee(g_ac->spr.pos.X, g_ac->spr.pos.Y, g_ac->spr.pos.Z - ((krand() & 41) << 8), g_ac->sector(), ps[g_p].pos.X, ps[g_p].pos.Y, ps[g_p].pos.Z/*-((krand()&41)<<8)*/, ps[g_p].GetActor()->sector());
|
||||
j = cansee(g_ac->int_pos().X, g_ac->int_pos().Y, g_ac->int_pos().Z - ((krand() & 41) << 8), g_ac->sector(), ps[g_p].pos.X, ps[g_p].pos.Y, ps[g_p].pos.Z/*-((krand()&41)<<8)*/, ps[g_p].GetActor()->sector());
|
||||
parseifelse(j);
|
||||
if (j) g_ac->timetosleep = SLEEPTIME;
|
||||
break;
|
||||
case concmd_ifnocover:
|
||||
j = cansee(g_ac->spr.pos.X, g_ac->spr.pos.Y, g_ac->spr.pos.Z, g_ac->sector(), ps[g_p].pos.X, ps[g_p].pos.Y, ps[g_p].pos.Z, ps[g_p].GetActor()->sector());
|
||||
j = cansee(g_ac->int_pos().X, g_ac->int_pos().Y, g_ac->int_pos().Z, g_ac->sector(), ps[g_p].pos.X, ps[g_p].pos.Y, ps[g_p].pos.Z, ps[g_p].GetActor()->sector());
|
||||
parseifelse(j);
|
||||
if (j) g_ac->timetosleep = SLEEPTIME;
|
||||
break;
|
||||
|
@ -2183,7 +2183,7 @@ int ParseState::parse(void)
|
|||
else s = (krand()%3);
|
||||
|
||||
auto spawned = EGS(g_ac->sector(),
|
||||
g_ac->spr.pos.X + (krand() & 255) - 128, g_ac->spr.pos.Y + (krand() & 255) - 128, g_ac->spr.pos.Z - (8 << 8) - (krand() & 8191),
|
||||
g_ac->int_pos().X + (krand() & 255) - 128, g_ac->int_pos().Y + (krand() & 255) - 128, g_ac->int_pos().Z - (8 << 8) - (krand() & 8191),
|
||||
dnum + s, g_ac->spr.shade, 32 + (krand() & 15), 32 + (krand() & 15),
|
||||
krand() & 2047, (krand() & 127) + 32, -(krand() & 2047), g_ac, 5);
|
||||
if (spawned)
|
||||
|
@ -2290,10 +2290,10 @@ int ParseState::parse(void)
|
|||
parseifelse(ud.coop || numplayers > 2);
|
||||
break;
|
||||
case concmd_ifonmud:
|
||||
parseifelse(abs(g_ac->spr.pos.Z - g_ac->sector()->floorz) < (32 << 8) && g_ac->sector()->floorpicnum == 3073); // eew, hard coded tile numbers.. :?
|
||||
parseifelse(abs(g_ac->int_pos().Z - g_ac->sector()->floorz) < (32 << 8) && g_ac->sector()->floorpicnum == 3073); // eew, hard coded tile numbers.. :?
|
||||
break;
|
||||
case concmd_ifonwater:
|
||||
parseifelse( abs(g_ac->spr.pos.Z-g_ac->sector()->floorz) < (32<<8) && g_ac->sector()->lotag == ST_1_ABOVE_WATER);
|
||||
parseifelse( abs(g_ac->int_pos().Z-g_ac->sector()->floorz) < (32<<8) && g_ac->sector()->lotag == ST_1_ABOVE_WATER);
|
||||
break;
|
||||
case concmd_ifmotofast:
|
||||
parseifelse(ps[g_p].MotoSpeed > 60);
|
||||
|
@ -2415,7 +2415,7 @@ int ParseState::parse(void)
|
|||
j = 1;
|
||||
else if( (l& prunning) && s >= 8 && PlayerInput(g_p, SB_RUN) )
|
||||
j = 1;
|
||||
else if( (l& phigher) && ps[g_p].pos.Z < (g_ac->spr.pos.Z-(48<<8)) )
|
||||
else if( (l& phigher) && ps[g_p].pos.Z < (g_ac->int_pos().Z-(48<<8)) )
|
||||
j = 1;
|
||||
else if( (l& pwalkingback) && s <= -8 && !(PlayerInput(g_p, SB_RUN)) )
|
||||
j = 1;
|
||||
|
@ -2440,7 +2440,7 @@ int ParseState::parse(void)
|
|||
if (g_ac->isPlayer() && ud.multimode > 1)
|
||||
j = getincangle(ps[otherp].angle.ang.asbuild(), getangle(ps[g_p].pos.X - ps[otherp].pos.X, ps[g_p].pos.Y - ps[otherp].pos.Y));
|
||||
else
|
||||
j = getincangle(ps[g_p].angle.ang.asbuild(), getangle(g_ac->spr.pos.X - ps[g_p].pos.X, g_ac->spr.pos.Y - ps[g_p].pos.Y));
|
||||
j = getincangle(ps[g_p].angle.ang.asbuild(), getangle(g_ac->int_pos().X - ps[g_p].pos.X, g_ac->int_pos().Y - ps[g_p].pos.Y));
|
||||
|
||||
if( j > -128 && j < 128 )
|
||||
j = 1;
|
||||
|
@ -2497,7 +2497,7 @@ int ParseState::parse(void)
|
|||
if( g_ac->sector()->lotag == 0 )
|
||||
{
|
||||
HitInfo hit{};
|
||||
neartag({ g_ac->spr.pos.X, g_ac->spr.pos.Y, g_ac->spr.pos.Z - (32 << 8) }, g_ac->sector(), g_ac->spr.ang, hit, 768, 1);
|
||||
neartag({ g_ac->int_pos().X, g_ac->int_pos().Y, g_ac->int_pos().Z - (32 << 8) }, g_ac->sector(), g_ac->spr.ang, hit, 768, 1);
|
||||
auto sectp = hit.hitSector;
|
||||
if (sectp)
|
||||
{
|
||||
|
@ -2549,11 +2549,11 @@ int ParseState::parse(void)
|
|||
break;
|
||||
case concmd_iffloordistl:
|
||||
insptr++;
|
||||
parseifelse( (g_ac->floorz - g_ac->spr.pos.Z) <= ((*insptr)<<8));
|
||||
parseifelse( (g_ac->floorz - g_ac->int_pos().Z) <= ((*insptr)<<8));
|
||||
break;
|
||||
case concmd_ifceilingdistl:
|
||||
insptr++;
|
||||
parseifelse( ( g_ac->spr.pos.Z - g_ac->ceilingz ) <= ((*insptr)<<8));
|
||||
parseifelse( ( g_ac->int_pos().Z - g_ac->ceilingz ) <= ((*insptr)<<8));
|
||||
break;
|
||||
case concmd_palfrom:
|
||||
insptr++;
|
||||
|
@ -2804,7 +2804,7 @@ int ParseState::parse(void)
|
|||
case concmd_pstomp:
|
||||
insptr++;
|
||||
if( ps[g_p].knee_incs == 0 && ps[g_p].GetActor()->spr.xrepeat >= (isRR()? 9: 40) )
|
||||
if( cansee(g_ac->spr.pos.X,g_ac->spr.pos.Y,g_ac->spr.pos.Z-(4<<8),g_ac->sector(),ps[g_p].pos.X,ps[g_p].pos.Y,ps[g_p].pos.Z+(16<<8),ps[g_p].GetActor()->sector()) )
|
||||
if( cansee(g_ac->int_pos().X,g_ac->int_pos().Y,g_ac->int_pos().Z-(4<<8),g_ac->sector(),ps[g_p].pos.X,ps[g_p].pos.Y,ps[g_p].pos.Z+(16<<8),ps[g_p].GetActor()->sector()) )
|
||||
{
|
||||
ps[g_p].knee_incs = 1;
|
||||
if(ps[g_p].weapon_pos == 0)
|
||||
|
@ -2818,16 +2818,16 @@ int ParseState::parse(void)
|
|||
|
||||
j = 0;
|
||||
|
||||
updatesector(g_ac->spr.pos.X + 108, g_ac->spr.pos.Y + 108, &s1);
|
||||
updatesector(g_ac->int_pos().X + 108, g_ac->int_pos().Y + 108, &s1);
|
||||
if (s1 == g_ac->sector())
|
||||
{
|
||||
updatesector(g_ac->spr.pos.X - 108, g_ac->spr.pos.Y - 108, &s1);
|
||||
updatesector(g_ac->int_pos().X - 108, g_ac->int_pos().Y - 108, &s1);
|
||||
if (s1 == g_ac->sector())
|
||||
{
|
||||
updatesector(g_ac->spr.pos.X + 108, g_ac->spr.pos.Y - 108, &s1);
|
||||
updatesector(g_ac->int_pos().X + 108, g_ac->int_pos().Y - 108, &s1);
|
||||
if (s1 == g_ac->sector())
|
||||
{
|
||||
updatesector(g_ac->spr.pos.X - 108, g_ac->spr.pos.Y + 108, &s1);
|
||||
updatesector(g_ac->int_pos().X - 108, g_ac->int_pos().Y + 108, &s1);
|
||||
if (s1 == g_ac->sector())
|
||||
j = 1;
|
||||
}
|
||||
|
@ -3142,7 +3142,7 @@ int ParseState::parse(void)
|
|||
i = *(insptr++); // ID of def
|
||||
|
||||
// g_ac->lastvx and lastvy are last known location of target.
|
||||
ang = getangle(g_ac->ovel.X - g_ac->spr.pos.X, g_ac->ovel.Y - g_ac->spr.pos.Y);
|
||||
ang = getangle(g_ac->ovel.X - g_ac->int_pos().X, g_ac->ovel.Y - g_ac->int_pos().Y);
|
||||
SetGameVarID(i, ang, g_ac, g_p);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -97,24 +97,24 @@ inline int checkcursectnums(sectortype* se)
|
|||
inline int ldist(DDukeActor* s1, DDukeActor* s2)
|
||||
{
|
||||
int vx, vy;
|
||||
vx = s1->spr.pos.X - s2->spr.pos.X;
|
||||
vy = s1->spr.pos.Y - s2->spr.pos.Y;
|
||||
vx = s1->int_pos().X - s2->int_pos().X;
|
||||
vy = s1->int_pos().Y - s2->int_pos().Y;
|
||||
return(FindDistance2D(vx, vy) + 1);
|
||||
}
|
||||
|
||||
inline int ldist(const DDukeActor* s1, const tspritetype* s2)
|
||||
{
|
||||
int vx, vy;
|
||||
vx = s1->spr.pos.X - s2->pos.X;
|
||||
vy = s1->spr.pos.Y - s2->pos.Y;
|
||||
vx = s1->int_pos().X - s2->pos.X;
|
||||
vy = s1->int_pos().Y - s2->pos.Y;
|
||||
return(FindDistance2D(vx, vy) + 1);
|
||||
}
|
||||
inline int dist(DDukeActor* s1, DDukeActor* s2)
|
||||
{
|
||||
int vx, vy, vz;
|
||||
vx = s1->spr.pos.X - s2->spr.pos.X;
|
||||
vy = s1->spr.pos.Y - s2->spr.pos.Y;
|
||||
vz = s1->spr.pos.Z - s2->spr.pos.Z;
|
||||
vx = s1->int_pos().X - s2->int_pos().X;
|
||||
vy = s1->int_pos().Y - s2->int_pos().Y;
|
||||
vz = s1->int_pos().Z - s2->int_pos().Z;
|
||||
return(FindDistance3D(vx, vy, vz));
|
||||
}
|
||||
|
||||
|
|
|
@ -52,8 +52,8 @@ int wakeup(DDukeActor* actor, int snum)
|
|||
|
||||
radius = p->noise_radius;
|
||||
|
||||
if (p->noise.X - radius < actor->spr.pos.X && p->noise.X + radius > actor->spr.pos.X
|
||||
&& p->noise.Y - radius < actor->spr.pos.Y && p->noise.Y + radius > actor->spr.pos.Y)
|
||||
if (p->noise.X - radius < actor->int_pos().X && p->noise.X + radius > actor->int_pos().X
|
||||
&& p->noise.Y - radius < actor->int_pos().Y && p->noise.Y + radius > actor->int_pos().Y)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -174,9 +174,9 @@ int hits(DDukeActor* actor)
|
|||
if (actor->isPlayer()) zoff = isRR() ? PHEIGHT_RR : PHEIGHT_DUKE;
|
||||
else zoff = 0;
|
||||
|
||||
auto pos = actor->spr.pos;
|
||||
auto pos = actor->int_pos();
|
||||
hitscan(pos.withZOffset(-zoff), actor->sector(), { bcos(actor->spr.ang), bsin(actor->spr.ang), 0 }, hit, CLIPMASK1);
|
||||
return (FindDistance2D(hit.hitpos.vec2 - actor->spr.pos.vec2));
|
||||
return (FindDistance2D(hit.hitpos.vec2 - actor->int_pos().vec2));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -195,14 +195,14 @@ int hitasprite(DDukeActor* actor, DDukeActor** hitsp)
|
|||
else if (actor->spr.picnum == TILE_APLAYER) zoff = isRR() ? PHEIGHT_RR : PHEIGHT_DUKE;
|
||||
else zoff = 0;
|
||||
|
||||
auto pos = actor->spr.pos;
|
||||
auto pos = actor->int_pos();
|
||||
hitscan(pos.withZOffset(-zoff), actor->sector(), { bcos(actor->spr.ang), bsin(actor->spr.ang), 0 }, hit, CLIPMASK1);
|
||||
if (hitsp) *hitsp = hit.actor();
|
||||
|
||||
if (hit.hitWall != nullptr && (hit.hitWall->cstat & CSTAT_WALL_MASKED) && badguy(actor))
|
||||
return((1 << 30));
|
||||
|
||||
return (FindDistance2D(hit.hitpos.vec2 - actor->spr.pos.vec2));
|
||||
return (FindDistance2D(hit.hitpos.vec2 - actor->int_pos().vec2));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -335,8 +335,8 @@ DDukeActor* aim(DDukeActor* actor, int aang)
|
|||
if (gotfreezer && act->spr.pal == 1) continue;
|
||||
}
|
||||
|
||||
xv = (act->spr.pos.X - actor->spr.pos.X);
|
||||
yv = (act->spr.pos.Y - actor->spr.pos.Y);
|
||||
xv = (act->int_pos().X - actor->int_pos().X);
|
||||
yv = (act->int_pos().Y - actor->int_pos().Y);
|
||||
|
||||
if ((dy1 * xv) <= (dx1 * yv))
|
||||
if ((dy2 * xv) >= (dx2 * yv))
|
||||
|
@ -345,10 +345,10 @@ DDukeActor* aim(DDukeActor* actor, int aang)
|
|||
if (sdist > 512 && sdist < smax)
|
||||
{
|
||||
if (actor->isPlayer())
|
||||
a = (abs(Scale(act->spr.pos.Z - actor->spr.pos.Z, 10, sdist) - ps[actor->spr.yvel].horizon.sum().asbuild()) < 100);
|
||||
a = (abs(Scale(act->int_pos().Z - actor->int_pos().Z, 10, sdist) - ps[actor->spr.yvel].horizon.sum().asbuild()) < 100);
|
||||
else a = 1;
|
||||
|
||||
cans = cansee(act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - (32 << 8) + gs.actorinfo[act->spr.picnum].aimoffset, act->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (32 << 8), actor->sector());
|
||||
cans = cansee(act->int_pos().X, act->int_pos().Y, act->int_pos().Z - (32 << 8) + gs.actorinfo[act->spr.picnum].aimoffset, act->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (32 << 8), actor->sector());
|
||||
|
||||
if (a && cans)
|
||||
{
|
||||
|
@ -507,8 +507,8 @@ void footprints(int snum)
|
|||
while (auto act = it.Next())
|
||||
{
|
||||
if (act->spr.picnum == TILE_FOOTPRINTS || act->spr.picnum == TILE_FOOTPRINTS2 || act->spr.picnum == TILE_FOOTPRINTS3 || act->spr.picnum == TILE_FOOTPRINTS4)
|
||||
if (abs(act->spr.pos.X - p->pos.X) < 384)
|
||||
if (abs(act->spr.pos.Y - p->pos.Y) < 384)
|
||||
if (abs(act->int_pos().X - p->pos.X) < 384)
|
||||
if (abs(act->int_pos().Y - p->pos.Y) < 384)
|
||||
{
|
||||
j = 1;
|
||||
break;
|
||||
|
@ -1059,7 +1059,7 @@ void shootbloodsplat(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i
|
|||
spawned->set_int_pos(hit.hitpos);
|
||||
spawned->spr.cstat |= randomXFlip();
|
||||
ssp(spawned, CLIPMASK0);
|
||||
SetActor(spawned, spawned->spr.pos);
|
||||
SetActor(spawned, spawned->int_pos());
|
||||
if (actor->spr.picnum == OOZFILTER || actor->spr.picnum == NEWBEAST)
|
||||
spawned->spr.pal = 6;
|
||||
}
|
||||
|
|
|
@ -241,8 +241,8 @@ static void shootknee(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
|||
{
|
||||
int x;
|
||||
auto pactor = ps[findplayer(actor, &x)].GetActor();
|
||||
zvel = ((pactor->spr.pos.Z - sz) << 8) / (x + 1);
|
||||
sa = getangle(pactor->spr.pos.X - sx, pactor->spr.pos.Y - sy);
|
||||
zvel = ((pactor->int_pos().Z - sz) << 8) / (x + 1);
|
||||
sa = getangle(pactor->int_pos().X - sx, pactor->int_pos().Y - sy);
|
||||
}
|
||||
|
||||
hitscan({ sx, sy, sz }, sectp, { bcos(sa), bsin(sa), zvel << 6 }, hit, CLIPMASK1);
|
||||
|
@ -346,8 +346,8 @@ static void shootweapon(DDukeActor *actor, int p, int sx, int sy, int sz, int sa
|
|||
dal -= (8 << 8);
|
||||
break;
|
||||
}
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) << 8) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) << 8) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
|
||||
if (isWW2GI())
|
||||
|
@ -592,8 +592,8 @@ static void shootstuff(DDukeActor* actor, int p, int sx, int sy, int sz, int sa,
|
|||
if (aimed)
|
||||
{
|
||||
int dal = ((aimed->spr.xrepeat * tileHeight(aimed->spr.picnum)) << 1) - (12 << 8);
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
else
|
||||
zvel = -MulScale(ps[p].horizon.sum().asq16(), 98, 16);
|
||||
|
@ -690,9 +690,9 @@ static void shootrpg(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, i
|
|||
if (aimed)
|
||||
{
|
||||
int dal = ((aimed->spr.xrepeat * tileHeight(aimed->spr.picnum)) << 1) + (8 << 8);
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
if (aimed->spr.picnum != RECON)
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
else zvel = -MulScale(ps[p].horizon.sum().asq16(), 81, 16);
|
||||
if (atwith == RPG)
|
||||
|
@ -930,8 +930,8 @@ static void shootgrowspark(DDukeActor* actor, int p, int sx, int sy, int sz, int
|
|||
dal -= (8 << 8);
|
||||
break;
|
||||
}
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) << 8) / (ldist(ps[p].GetActor(), aimed));
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) << 8) / (ldist(ps[p].GetActor(), aimed));
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1027,9 +1027,9 @@ void shoot_d(DDukeActor* actor, int atwith)
|
|||
else
|
||||
{
|
||||
sa = actor->spr.ang;
|
||||
sx = actor->spr.pos.X;
|
||||
sy = actor->spr.pos.Y;
|
||||
sz = actor->spr.pos.Z - (actor->spr.yrepeat * tileHeight(actor->spr.picnum) << 1) + (4 << 8);
|
||||
sx = actor->int_pos().X;
|
||||
sy = actor->int_pos().Y;
|
||||
sz = actor->int_pos().Z - (actor->spr.yrepeat * tileHeight(actor->spr.picnum) << 1) + (4 << 8);
|
||||
if (actor->spr.picnum != ROTATEGUN)
|
||||
{
|
||||
sz -= (7 << 8);
|
||||
|
@ -1139,8 +1139,8 @@ void shoot_d(DDukeActor* actor, int atwith)
|
|||
if (aimed)
|
||||
{
|
||||
dal = ((aimed->spr.xrepeat * tileHeight(aimed->spr.picnum)) << 1);
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal - (4 << 8)) * 768) / (ldist(ps[p].GetActor(), aimed));
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal - (4 << 8)) * 768) / (ldist(ps[p].GetActor(), aimed));
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
else zvel = -MulScale(ps[p].horizon.sum().asq16(), 98, 16);
|
||||
}
|
||||
|
@ -2026,7 +2026,7 @@ int operateTripbomb(int snum)
|
|||
while ((act = it.Next()))
|
||||
{
|
||||
if (!actorflag(act, SFLAG_BLOCK_TRIPBOMB) &&
|
||||
abs(act->spr.pos.Z - hit.hitpos.Z) < (12 << 8) && ((act->spr.pos.X - hit.hitpos.X) * (act->spr.pos.X - hit.hitpos.X) + (act->spr.pos.Y - hit.hitpos.Y) * (act->spr.pos.Y - hit.hitpos.Y)) < (290 * 290))
|
||||
abs(act->int_pos().Z - hit.hitpos.Z) < (12 << 8) && ((act->int_pos().X - hit.hitpos.X) * (act->int_pos().X - hit.hitpos.X) + (act->int_pos().Y - hit.hitpos.Y) * (act->int_pos().Y - hit.hitpos.Y)) < (290 * 290))
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2773,9 +2773,9 @@ void processinput_d(int snum)
|
|||
p->footprintcount = 0;
|
||||
p->spritebridge = 1;
|
||||
}
|
||||
else if (badguy(clz.actor()) && clz.actor()->spr.xrepeat > 24 && abs(pact->spr.pos.Z - clz.actor()->spr.pos.Z) < (84 << 8))
|
||||
else if (badguy(clz.actor()) && clz.actor()->spr.xrepeat > 24 && abs(pact->int_pos().Z - clz.actor()->int_pos().Z) < (84 << 8))
|
||||
{
|
||||
j = getangle(clz.actor()->spr.pos.X - p->pos.X, clz.actor()->spr.pos.Y - p->pos.Y);
|
||||
j = getangle(clz.actor()->int_pos().X - p->pos.X, clz.actor()->int_pos().Y - p->pos.Y);
|
||||
p->vel.X -= bcos(j, 4);
|
||||
p->vel.Y -= bsin(j, 4);
|
||||
}
|
||||
|
|
|
@ -99,8 +99,8 @@ static void shootmelee(DDukeActor *actor, int p, int sx, int sy, int sz, int sa,
|
|||
{
|
||||
int x;
|
||||
auto pspr = ps[findplayer(actor, &x)].GetActor();
|
||||
zvel = ((pspr->spr.pos.Z - sz) << 8) / (x + 1);
|
||||
sa = getangle(pspr->spr.pos.X - sx, pspr->spr.pos.Y - sy);
|
||||
zvel = ((pspr->int_pos().Z - sz) << 8) / (x + 1);
|
||||
sa = getangle(pspr->int_pos().X - sx, pspr->int_pos().Y - sy);
|
||||
}
|
||||
|
||||
hitscan({ sx, sy, sz }, sectp, { bcos(sa), bsin(sa), zvel << 6 }, hit, CLIPMASK1);
|
||||
|
@ -115,8 +115,8 @@ static void shootmelee(DDukeActor *actor, int p, int sx, int sy, int sz, int sa,
|
|||
&& effector->spr.lotag == SE_7_TELEPORT)
|
||||
{
|
||||
int nx, ny, nz;
|
||||
nx = hit.hitpos.X + (effector->GetOwner()->spr.pos.X - effector->spr.pos.X);
|
||||
ny = hit.hitpos.Y + (effector->GetOwner()->spr.pos.Y - effector->spr.pos.Y);
|
||||
nx = hit.hitpos.X + (effector->GetOwner()->int_pos().X - effector->int_pos().X);
|
||||
ny = hit.hitpos.Y + (effector->GetOwner()->int_pos().Y - effector->int_pos().Y);
|
||||
if (hit.hitSector->lotag == 161)
|
||||
{
|
||||
nz = effector->GetOwner()->sector()->floorz;
|
||||
|
@ -215,8 +215,8 @@ static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa
|
|||
if (aimed)
|
||||
{
|
||||
int dal = ((aimed->spr.xrepeat * tileHeight(aimed->spr.picnum)) << 1) + (5 << 8);
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) << 8) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) << 8) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
|
||||
if (atwith == SHOTSPARK1)
|
||||
|
@ -270,8 +270,8 @@ static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa
|
|||
&& effector->spr.lotag == SE_7_TELEPORT)
|
||||
{
|
||||
int nx, ny, nz;
|
||||
nx = hit.hitpos.X + (effector->GetOwner()->spr.pos.X - effector->spr.pos.X);
|
||||
ny = hit.hitpos.Y + (effector->GetOwner()->spr.pos.Y - effector->spr.pos.Y);
|
||||
nx = hit.hitpos.X + (effector->GetOwner()->int_pos().X - effector->int_pos().X);
|
||||
ny = hit.hitpos.Y + (effector->GetOwner()->int_pos().Y - effector->int_pos().Y);
|
||||
if (hit.hitSector->lotag == 161)
|
||||
{
|
||||
nz = effector->GetOwner()->sector()->floorz;
|
||||
|
@ -509,8 +509,8 @@ static void shootstuff(DDukeActor* actor, int p, int sx, int sy, int sz, int sa,
|
|||
if (aimed)
|
||||
{
|
||||
int dal = ((aimed->spr.xrepeat * tileHeight(aimed->spr.picnum)) << 1) - (12 << 8);
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -624,9 +624,9 @@ static void shootrpg(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i
|
|||
act90 = aimed;
|
||||
}
|
||||
int dal = ((aimed->spr.xrepeat * tileHeight(aimed->spr.picnum)) << 1) + (8 << 8);
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
if (aimed->spr.picnum != RECON)
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
else zvel = -MulScale(ps[p].horizon.sum().asq16(), 81, 16);
|
||||
if (atwith == RPG)
|
||||
|
@ -776,8 +776,8 @@ static void shootwhip(DDukeActor* actor, int p, int sx, int sy, int sz, int sa,
|
|||
if (aimed)
|
||||
{
|
||||
int dal = ((aimed->spr.xrepeat * tileHeight(aimed->spr.picnum)) << 1) - (12 << 8);
|
||||
zvel = ((aimed->spr.pos.Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->spr.pos.X - sx, aimed->spr.pos.Y - sy);
|
||||
zvel = ((aimed->int_pos().Z - sz - dal) * vel) / ldist(ps[p].GetActor(), aimed);
|
||||
sa = getangle(aimed->int_pos().X - sx, aimed->int_pos().Y - sy);
|
||||
}
|
||||
else
|
||||
zvel = -MulScale(ps[p].horizon.sum().asq16(), 98, 16);
|
||||
|
@ -846,9 +846,9 @@ void shoot_r(DDukeActor* actor, int atwith)
|
|||
{
|
||||
p = -1;
|
||||
sa = actor->spr.ang;
|
||||
sx = actor->spr.pos.X;
|
||||
sy = actor->spr.pos.Y;
|
||||
sz = actor->spr.pos.Z - ((actor->spr.yrepeat * tileHeight(actor->spr.picnum)) << 1) + (4 << 8);
|
||||
sx = actor->int_pos().X;
|
||||
sy = actor->int_pos().Y;
|
||||
sz = actor->int_pos().Z - ((actor->spr.yrepeat * tileHeight(actor->spr.picnum)) << 1) + (4 << 8);
|
||||
sz -= (7 << 8);
|
||||
if (badguy(actor))
|
||||
{
|
||||
|
@ -3380,7 +3380,7 @@ void processinput_r(int snum)
|
|||
while (auto act2 = it.Next())
|
||||
{
|
||||
if (act2->spr.picnum == RRTILE380)
|
||||
if (act2->spr.pos.Z - (8 << 8) < p->pos.Z)
|
||||
if (act2->int_pos().Z - (8 << 8) < p->pos.Z)
|
||||
psectlotag = 2;
|
||||
}
|
||||
}
|
||||
|
@ -3473,9 +3473,9 @@ void processinput_r(int snum)
|
|||
{
|
||||
doVehicleHit();
|
||||
}
|
||||
else if (badguy(clz.actor()) && clz.actor()->spr.xrepeat > 24 && abs(pact->spr.pos.Z - clz.actor()->spr.pos.Z) < (84 << 8))
|
||||
else if (badguy(clz.actor()) && clz.actor()->spr.xrepeat > 24 && abs(pact->int_pos().Z - clz.actor()->int_pos().Z) < (84 << 8))
|
||||
{
|
||||
int j = getangle(clz.actor()->spr.pos.X - p->pos.X, clz.actor()->spr.pos.Y - p->pos.Y);
|
||||
int j = getangle(clz.actor()->int_pos().X - p->pos.X, clz.actor()->int_pos().Y - p->pos.Y);
|
||||
p->vel.X -= bcos(j, 4);
|
||||
p->vel.Y -= bsin(j, 4);
|
||||
}
|
||||
|
@ -3486,9 +3486,9 @@ void processinput_r(int snum)
|
|||
p->stairs = 10;
|
||||
if ((actions & SB_CROUCH) && !p->OnMotorcycle)
|
||||
{
|
||||
cz = clz.actor()->spr.pos.Z;
|
||||
cz = clz.actor()->int_pos().Z;
|
||||
chz.setNone();
|
||||
fz = clz.actor()->spr.pos.Z + (4 << 8);
|
||||
fz = clz.actor()->int_pos().Z + (4 << 8);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -4047,8 +4047,8 @@ void OnMotorcycle(struct player_struct *p, DDukeActor* motosprite)
|
|||
{
|
||||
if (motosprite)
|
||||
{
|
||||
p->pos.X = motosprite->spr.pos.X;
|
||||
p->pos.Y = motosprite->spr.pos.Y;
|
||||
p->pos.X = motosprite->int_pos().X;
|
||||
p->pos.Y = motosprite->int_pos().Y;
|
||||
p->angle.ang = buildang(motosprite->spr.ang);
|
||||
p->ammo_amount[MOTORCYCLE_WEAPON] = motosprite->saved_ammo;
|
||||
deletesprite(motosprite);
|
||||
|
@ -4127,8 +4127,8 @@ void OnBoat(struct player_struct *p, DDukeActor* boat)
|
|||
{
|
||||
if (boat)
|
||||
{
|
||||
p->pos.X = boat->spr.pos.X;
|
||||
p->pos.Y = boat->spr.pos.Y;
|
||||
p->pos.X = boat->int_pos().X;
|
||||
p->pos.Y = boat->int_pos().Y;
|
||||
p->angle.ang = buildang(boat->spr.ang);
|
||||
p->ammo_amount[BOAT_WEAPON] = boat->saved_ammo;
|
||||
deletesprite(boat);
|
||||
|
|
|
@ -615,9 +615,9 @@ void resetpspritevars(int g)
|
|||
firsty = ps[0].pos.Y;
|
||||
}
|
||||
|
||||
po[numplayersprites].opos.X = act->spr.pos.X;
|
||||
po[numplayersprites].opos.Y = act->spr.pos.Y;
|
||||
po[numplayersprites].opos.Z = act->spr.pos.Z;
|
||||
po[numplayersprites].opos.X = act->int_pos().X;
|
||||
po[numplayersprites].opos.Y = act->int_pos().Y;
|
||||
po[numplayersprites].opos.Z = act->int_pos().Z;
|
||||
po[numplayersprites].oa = act->spr.ang;
|
||||
po[numplayersprites].os = act->sector();
|
||||
|
||||
|
@ -659,13 +659,13 @@ void resetpspritevars(int g)
|
|||
ps[j].frag_ps = j;
|
||||
act->SetOwner(act);
|
||||
|
||||
ps[j].bobpos.X = ps[j].opos.X = ps[j].pos.X = act->spr.pos.X;
|
||||
ps[j].bobpos.Y = ps[j].opos.Y = ps[j].pos.Y = act->spr.pos.Y;
|
||||
ps[j].opos.Z = ps[j].pos.Z = act->spr.pos.Z;
|
||||
ps[j].bobpos.X = ps[j].opos.X = ps[j].pos.X = act->int_pos().X;
|
||||
ps[j].bobpos.Y = ps[j].opos.Y = ps[j].pos.Y = act->int_pos().Y;
|
||||
ps[j].opos.Z = ps[j].pos.Z = act->int_pos().Z;
|
||||
act->backuppos();
|
||||
ps[j].angle.oang = ps[j].angle.ang = buildang(act->spr.ang);
|
||||
|
||||
updatesector(act->spr.pos.X, act->spr.pos.Y, &ps[j].cursector);
|
||||
updatesector(act->int_pos().X, act->int_pos().Y, &ps[j].cursector);
|
||||
|
||||
j = connectpoint2[j];
|
||||
|
||||
|
@ -879,8 +879,8 @@ static void SpawnPortals()
|
|||
sectortype* s1 = act->sector(), *s2 = act2->sector();
|
||||
s1->portalflags = PORTAL_SECTOR_FLOOR;
|
||||
s2->portalflags = PORTAL_SECTOR_CEILING;
|
||||
s1->portalnum = portalAdd(PORTAL_SECTOR_FLOOR, sectnum(s2), act2->spr.pos.X - act->spr.pos.X, act2->spr.pos.Y - act->spr.pos.Y, act->spr.hitag);
|
||||
s2->portalnum = portalAdd(PORTAL_SECTOR_CEILING, sectnum(s1), act->spr.pos.X - act2->spr.pos.X, act->spr.pos.Y - act2->spr.pos.Y, act->spr.hitag);
|
||||
s1->portalnum = portalAdd(PORTAL_SECTOR_FLOOR, sectnum(s2), act2->int_pos().X - act->int_pos().X, act2->int_pos().Y - act->int_pos().Y, act->spr.hitag);
|
||||
s2->portalnum = portalAdd(PORTAL_SECTOR_CEILING, sectnum(s1), act->int_pos().X - act2->int_pos().X, act->int_pos().Y - act2->int_pos().Y, act->spr.hitag);
|
||||
processedTags.Push(act->spr.hitag);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -282,8 +282,8 @@ void prelevel_d(int g, TArray<DDukeActor*>& actors)
|
|||
|
||||
if (ac->spr.lotag == -1 && (ac->spr.cstat & CSTAT_SPRITE_ALIGNMENT_WALL))
|
||||
{
|
||||
ps[0].exit.X = ac->spr.pos.X;
|
||||
ps[0].exit.Y = ac->spr.pos.Y;
|
||||
ps[0].exit.X = ac->int_pos().X;
|
||||
ps[0].exit.Y = ac->int_pos().Y;
|
||||
}
|
||||
else
|
||||
premapcontroller(ac);
|
||||
|
|
|
@ -535,8 +535,8 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
|
|||
|
||||
if (ac->spr.lotag == -1 && (ac->spr.cstat & CSTAT_SPRITE_ALIGNMENT_WALL))
|
||||
{
|
||||
ps[0].exit.X = ac->spr.pos.X;
|
||||
ps[0].exit.Y = ac->spr.pos.Y;
|
||||
ps[0].exit.X = ac->int_pos().X;
|
||||
ps[0].exit.Y = ac->int_pos().Y;
|
||||
}
|
||||
else switch (ac->spr.picnum)
|
||||
{
|
||||
|
|
|
@ -96,7 +96,7 @@ void GameInterface::UpdateCameras(double smoothratio)
|
|||
display_mirror = 1; // should really be 'display external view'.
|
||||
auto cstat = camera->spr.cstat;
|
||||
camera->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
render_camtex(camera, camera->spr.pos, camera->sector(), ang, buildhoriz(camera->spr.shade), buildang(0), tex, rect, smoothratio);
|
||||
render_camtex(camera, camera->int_pos(), camera->sector(), ang, buildhoriz(camera->spr.shade), buildang(0), tex, rect, smoothratio);
|
||||
camera->spr.cstat = cstat;
|
||||
display_mirror = 0;
|
||||
});
|
||||
|
@ -264,7 +264,7 @@ void displayrooms(int snum, double smoothratio, bool sceneonly)
|
|||
auto bh = buildhoriz(act->spr.yvel);
|
||||
auto cstat = act->spr.cstat;
|
||||
act->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
renderView(act, act->sector(), act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - (4 << 8), cang, bh, buildang(0), smoothratio, sceneonly, fov);
|
||||
renderView(act, act->sector(), act->int_pos().X, act->int_pos().Y, act->int_pos().Z - (4 << 8), cang, bh, buildang(0), smoothratio, sceneonly, fov);
|
||||
act->spr.cstat = cstat;
|
||||
|
||||
}
|
||||
|
@ -329,9 +329,9 @@ void displayrooms(int snum, double smoothratio, bool sceneonly)
|
|||
auto act = p->newOwner;
|
||||
cang = buildang(act->interpolatedang(smoothratio));
|
||||
choriz = buildhoriz(act->spr.shade);
|
||||
cposx = act->spr.pos.X;
|
||||
cposy = act->spr.pos.Y;
|
||||
cposz = act->spr.pos.Z;
|
||||
cposx = act->int_pos().X;
|
||||
cposy = act->int_pos().Y;
|
||||
cposz = act->int_pos().Z;
|
||||
sect = act->sector();
|
||||
rotscrnang = buildang(0);
|
||||
smoothratio = MaxSmoothRatio;
|
||||
|
|
|
@ -216,7 +216,7 @@ int findplayer(const DDukeActor* actor, int* d)
|
|||
{
|
||||
int j, closest_player;
|
||||
int x, closest;
|
||||
const auto s = actor->spr.pos;
|
||||
const auto s = actor->int_pos();
|
||||
|
||||
if (ud.multimode < 2)
|
||||
{
|
||||
|
@ -640,7 +640,7 @@ static void handle_st15(sectortype* sptr, DDukeActor* actor)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (sptr->floorz > a2->spr.pos.Z)
|
||||
if (sptr->floorz > a2->int_pos().Z)
|
||||
activatewarpelevators(a2, -1);
|
||||
else
|
||||
activatewarpelevators(a2, 1);
|
||||
|
@ -753,7 +753,7 @@ REDODOOR:
|
|||
{
|
||||
if (a2->spr.statnum == 3 && a2->spr.lotag == 9)
|
||||
{
|
||||
j = a2->spr.pos.Z;
|
||||
j = a2->int_pos().Z;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -240,8 +240,8 @@ bool checkhitswitch_d(int snum, walltype* wwal, DDukeActor *act)
|
|||
lotag = act->spr.lotag;
|
||||
if (lotag == 0) return 0;
|
||||
hitag = act->spr.hitag;
|
||||
sx = act->spr.pos.X;
|
||||
sy = act->spr.pos.Y;
|
||||
sx = act->int_pos().X;
|
||||
sy = act->int_pos().Y;
|
||||
picnum = act->spr.picnum;
|
||||
switchpal = act->spr.pal;
|
||||
}
|
||||
|
@ -1050,7 +1050,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
{
|
||||
proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2);
|
||||
proj->spr.ang -= (targ->spr.ang << 1) + 1024;
|
||||
targ->spr.ang = getangle(targ->spr.pos.X - proj->spr.pos.X, targ->spr.pos.Y - proj->spr.pos.Y) - 512;
|
||||
targ->spr.ang = getangle(targ->int_pos().X - proj->int_pos().X, targ->int_pos().Y - proj->int_pos().Y) - 512;
|
||||
if (S_CheckSoundPlaying(POOLBALLHIT) < 2)
|
||||
S_PlayActorSound(POOLBALLHIT, targ);
|
||||
}
|
||||
|
@ -1089,7 +1089,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
{
|
||||
for (k = 0; k < 64; k++)
|
||||
{
|
||||
auto spawned = EGS(targ->sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - (krand() % (48 << 8)), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
auto spawned = EGS(targ->sector(), targ->int_pos().X, targ->int_pos().Y, targ->int_pos().Z - (krand() % (48 << 8)), SCRAP3 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
spawned->spr.pal = 8;
|
||||
}
|
||||
|
||||
|
@ -1102,7 +1102,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
case HANGLIGHT:
|
||||
case GENERICPOLE2:
|
||||
for (k = 0; k < 6; k++)
|
||||
EGS(targ->sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - (8 << 8), SCRAP1 + (krand() & 15), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
EGS(targ->sector(), targ->int_pos().X, targ->int_pos().Y, targ->int_pos().Z - (8 << 8), SCRAP1 + (krand() & 15), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
||||
deletesprite(targ);
|
||||
break;
|
||||
|
@ -1132,7 +1132,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
if (gs.actorinfo[SHOTSPARK1].scriptaddress && proj->spr.extra != ScriptCode[gs.actorinfo[SHOTSPARK1].scriptaddress])
|
||||
{
|
||||
for (j = 0; j < 15; j++)
|
||||
EGS(targ->sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->sector()->floorz - (12 << 8) - (j << 9), SCRAP1 + (krand() & 15), -8, 64, 64,
|
||||
EGS(targ->sector(), targ->int_pos().X, targ->int_pos().Y, targ->sector()->floorz - (12 << 8) - (j << 9), SCRAP1 + (krand() & 15), -8, 64, 64,
|
||||
krand() & 2047, (krand() & 127) + 64, -(krand() & 511) - 256, targ, 5);
|
||||
spawn(targ, EXPLOSION2);
|
||||
deletesprite(targ);
|
||||
|
|
|
@ -359,8 +359,8 @@ bool checkhitswitch_r(int snum, walltype* wwal, DDukeActor* act)
|
|||
lotag = act->spr.lotag;
|
||||
if (lotag == 0) return 0;
|
||||
hitag = act->spr.hitag;
|
||||
sx = act->spr.pos.X;
|
||||
sy = act->spr.pos.Y;
|
||||
sx = act->int_pos().X;
|
||||
sy = act->int_pos().Y;
|
||||
picnum = act->spr.picnum;
|
||||
switchpal = act->spr.pal;
|
||||
}
|
||||
|
@ -939,7 +939,7 @@ static void lotsofpopcorn(DDukeActor *actor, walltype* wal, int n)
|
|||
for (j = n - 1; j >= 0; j--)
|
||||
{
|
||||
a = actor->spr.ang - 256 + (krand() & 511) + 1024;
|
||||
EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, POPCORN, -32, 36, 36, a, 32 + (krand() & 63), 1024 - (krand() & 1023), actor, 5);
|
||||
EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, POPCORN, -32, 36, 36, a, 32 + (krand() & 63), 1024 - (krand() & 1023), actor, 5);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -967,7 +967,7 @@ static void lotsofpopcorn(DDukeActor *actor, walltype* wal, int n)
|
|||
{
|
||||
z = sect->floorz - (krand() & (abs(sect->ceilingz - sect->floorz)));
|
||||
if (z < -(32 << 8) || z >(32 << 8))
|
||||
z = actor->spr.pos.Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
z = actor->int_pos().Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
a = actor->spr.ang - 1024;
|
||||
EGS(actor->sector(), x1, y1, z, POPCORN, -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 1023), actor, 5);
|
||||
}
|
||||
|
@ -2059,7 +2059,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
lotsofglass(targ, nullptr, 10);
|
||||
targ->spr.picnum++;
|
||||
for (k = 0; k < 6; k++)
|
||||
EGS(targ->sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - (8 << 8), SCRAP6 + (krand() & 15), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
EGS(targ->sector(), targ->int_pos().X, targ->int_pos().Y, targ->int_pos().Z - (8 << 8), SCRAP6 + (krand() & 15), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
break;
|
||||
case BOWLINGBALL:
|
||||
proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2);
|
||||
|
@ -2077,7 +2077,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
{
|
||||
proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2);
|
||||
proj->spr.ang -= (targ->spr.ang << 1) + 1024;
|
||||
targ->spr.ang = getangle(targ->spr.pos.X - proj->spr.pos.X, targ->spr.pos.Y - proj->spr.pos.Y) - 512;
|
||||
targ->spr.ang = getangle(targ->int_pos().X - proj->int_pos().X, targ->int_pos().Y - proj->int_pos().Y) - 512;
|
||||
if (S_CheckSoundPlaying(POOLBALLHIT) < 2)
|
||||
S_PlayActorSound(POOLBALLHIT, targ);
|
||||
}
|
||||
|
@ -2126,7 +2126,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
{
|
||||
for (k = 0; k < 64; k++)
|
||||
{
|
||||
auto spawned = EGS(targ->sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - (krand() % (48 << 8)), SCRAP6 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
auto spawned = EGS(targ->sector(), targ->int_pos().X, targ->int_pos().Y, targ->int_pos().Z - (krand() % (48 << 8)), SCRAP6 + (krand() & 3), -8, 48, 48, krand() & 2047, (krand() & 63) + 64, -(krand() & 4095) - (targ->spr.zvel >> 2), targ, 5);
|
||||
if (spawned) spawned->spr.pal = 8;
|
||||
}
|
||||
|
||||
|
@ -2158,7 +2158,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
if (gs.actorinfo[SHOTSPARK1].scriptaddress && proj->spr.extra != ScriptCode[gs.actorinfo[SHOTSPARK1].scriptaddress])
|
||||
{
|
||||
for (j = 0; j < 15; j++)
|
||||
EGS(targ->sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->sector()->floorz - (12 << 8) - (j << 9), SCRAP1 + (krand() & 15), -8, 64, 64,
|
||||
EGS(targ->sector(), targ->int_pos().X, targ->int_pos().Y, targ->sector()->floorz - (12 << 8) - (j << 9), SCRAP1 + (krand() & 15), -8, 64, 64,
|
||||
krand() & 2047, (krand() & 127) + 64, -(krand() & 511) - 256, targ, 5);
|
||||
spawn(targ, EXPLOSION2);
|
||||
deletesprite(targ);
|
||||
|
|
|
@ -276,7 +276,7 @@ static int GetPositionInfo(DDukeActor* actor, int soundNum, sectortype* sect,
|
|||
sndist += dist_adjust;
|
||||
if (sndist < 0) sndist = 0;
|
||||
|
||||
if (sect!= nullptr && sndist && actor->spr.picnum != MUSICANDSFX && !cansee(cam->X, cam->Y, cam->Z - (24 << 8), sect, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (24 << 8), actor->sector()))
|
||||
if (sect!= nullptr && sndist && actor->spr.picnum != MUSICANDSFX && !cansee(cam->X, cam->Y, cam->Z - (24 << 8), sect, actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (24 << 8), actor->sector()))
|
||||
sndist += sndist >> (isRR() ? 2 : 5);
|
||||
|
||||
// Here the sound distance was clamped to a minimum of 144*4.
|
||||
|
@ -321,7 +321,7 @@ void S_GetCamera(vec3_t* c, int32_t* ca, sectortype** cs)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (c) *c = ud.cameraactor->spr.pos;
|
||||
if (c) *c = ud.cameraactor->int_pos();
|
||||
if (cs) *cs = ud.cameraactor->sector();
|
||||
if (ca) *ca = ud.cameraactor->spr.ang;
|
||||
}
|
||||
|
@ -356,7 +356,7 @@ void DukeSoundEngine::CalcPosVel(int type, const void* source, const float pt[3]
|
|||
auto aactor = (DDukeActor*)source;
|
||||
if (aactor != nullptr)
|
||||
{
|
||||
GetPositionInfo(aactor, chanSound - 1, camsect, &campos, aactor->spr.pos, nullptr, pos);
|
||||
GetPositionInfo(aactor, chanSound - 1, camsect, &campos, aactor->int_pos(), nullptr, pos);
|
||||
/*
|
||||
if (vel) // DN3D does not properly maintain this.
|
||||
{
|
||||
|
@ -536,7 +536,7 @@ int S_PlaySound(int sndnum, int channel, EChanFlags flags, float vol)
|
|||
int S_PlayActorSound(int soundNum, DDukeActor* actor, int channel, EChanFlags flags)
|
||||
{
|
||||
return (actor == nullptr ? S_PlaySound(soundNum, channel, flags) :
|
||||
S_PlaySound3D(soundNum, actor, actor->spr.pos, channel, flags));
|
||||
S_PlaySound3D(soundNum, actor, actor->int_pos(), channel, flags));
|
||||
}
|
||||
|
||||
void S_StopSound(int sndNum, DDukeActor* actor, int channel)
|
||||
|
|
|
@ -216,7 +216,7 @@ DDukeActor* spawn(DDukeActor* actj, int pn)
|
|||
{
|
||||
if (actj)
|
||||
{
|
||||
auto spawned = EGS(actj->sector(), actj->spr.pos.X, actj->spr.pos.Y, actj->spr.pos.Z, pn, 0, 0, 0, 0, 0, 0, actj, 0);
|
||||
auto spawned = EGS(actj->sector(), actj->int_pos().X, actj->int_pos().Y, actj->int_pos().Z, pn, 0, 0, 0, 0, 0, 0, actj, 0);
|
||||
if (spawned)
|
||||
{
|
||||
spawned->attackertype = actj->spr.picnum;
|
||||
|
@ -326,7 +326,7 @@ void spawntransporter(DDukeActor *actj, DDukeActor* act, bool beam)
|
|||
act->spr.xvel = 128;
|
||||
ChangeActorStat(act, STAT_MISC);
|
||||
ssp(act, CLIPMASK0);
|
||||
SetActor(act, act->spr.pos);
|
||||
SetActor(act, act->int_pos());
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -339,16 +339,16 @@ int spawnbloodpoolpart1(DDukeActor* act)
|
|||
{
|
||||
auto s1 = act->sector();
|
||||
|
||||
updatesector(act->spr.pos.X + 108, act->spr.pos.Y + 108, &s1);
|
||||
updatesector(act->int_pos().X + 108, act->int_pos().Y + 108, &s1);
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 108, act->spr.pos.Y - 108, &s1);
|
||||
updatesector(act->int_pos().X - 108, act->int_pos().Y - 108, &s1);
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X + 108, act->spr.pos.Y - 108, &s1);
|
||||
updatesector(act->int_pos().X + 108, act->int_pos().Y - 108, &s1);
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 108, act->spr.pos.Y + 108, &s1);
|
||||
updatesector(act->int_pos().X - 108, act->int_pos().Y + 108, &s1);
|
||||
if (s1 && s1->floorz != act->sector()->floorz)
|
||||
{
|
||||
act->spr.xrepeat = act->spr.yrepeat = 0; ChangeActorStat(act, STAT_MISC); return true;
|
||||
|
@ -381,16 +381,16 @@ void initfootprint(DDukeActor* actj, DDukeActor* act)
|
|||
{
|
||||
auto s1 = act->sector();
|
||||
|
||||
updatesector(act->spr.pos.X + 84, act->spr.pos.Y + 84, &s1);
|
||||
updatesector(act->int_pos().X + 84, act->int_pos().Y + 84, &s1);
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 84, act->spr.pos.Y - 84, &s1);
|
||||
updatesector(act->int_pos().X - 84, act->int_pos().Y - 84, &s1);
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X + 84, act->spr.pos.Y - 84, &s1);
|
||||
updatesector(act->int_pos().X + 84, act->int_pos().Y - 84, &s1);
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 84, act->spr.pos.Y + 84, &s1);
|
||||
updatesector(act->int_pos().X - 84, act->int_pos().Y + 84, &s1);
|
||||
if (s1 && s1->floorz != act->sector()->floorz)
|
||||
{
|
||||
act->spr.xrepeat = act->spr.yrepeat = 0; ChangeActorStat(act, STAT_MISC); return;
|
||||
|
@ -439,10 +439,10 @@ void initshell(DDukeActor* actj, DDukeActor* act, bool isshell)
|
|||
else
|
||||
{
|
||||
a = act->spr.ang;
|
||||
act->set_int_z(actj->spr.pos.Z - gs.playerheight + (3 << 8));
|
||||
act->set_int_z(actj->int_pos().Z - gs.playerheight + (3 << 8));
|
||||
}
|
||||
|
||||
act->set_int_xy(actj->spr.pos.X + bcos(a, -7), actj->spr.pos.Y + bsin(a, -7));
|
||||
act->set_int_xy(actj->int_pos().X + bcos(a, -7), actj->int_pos().Y + bsin(a, -7));
|
||||
|
||||
act->spr.shade = -8;
|
||||
|
||||
|
@ -480,7 +480,7 @@ void initcrane(DDukeActor* actj, DDukeActor* act, int CRANEPOLE)
|
|||
act->temp_data[4] = cranes.Reserve(1);
|
||||
|
||||
auto& apt = cranes[act->temp_data[4]];
|
||||
apt.pos = act->spr.pos;
|
||||
apt.pos = act->int_pos();
|
||||
apt.poleactor = nullptr;
|
||||
|
||||
DukeStatIterator it(STAT_DEFAULT);
|
||||
|
@ -495,13 +495,13 @@ void initcrane(DDukeActor* actj, DDukeActor* act, int CRANEPOLE)
|
|||
actk->spr.xrepeat = 48;
|
||||
actk->spr.yrepeat = 128;
|
||||
|
||||
apt.pole.X = actk->spr.pos.X;
|
||||
apt.pole.Y = actk->spr.pos.Y;
|
||||
apt.pole.X = actk->int_pos().X;
|
||||
apt.pole.Y = actk->int_pos().Y;
|
||||
|
||||
actk->set_int_pos(act->spr.pos);
|
||||
actk->set_int_pos(act->int_pos());
|
||||
actk->spr.shade = act->spr.shade;
|
||||
|
||||
SetActor(actk, actk->spr.pos);
|
||||
SetActor(actk, actk->int_pos());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -528,14 +528,14 @@ void initwaterdrip(DDukeActor* actj, DDukeActor* actor)
|
|||
actor->add_int_z(-(18 << 8));
|
||||
}
|
||||
else actor->add_int_z(-(13 << 8));
|
||||
actor->spr.ang = getangle(ps[connecthead].pos.X - actor->spr.pos.X, ps[connecthead].pos.Y - actor->spr.pos.Y);
|
||||
actor->spr.ang = getangle(ps[connecthead].pos.X - actor->int_pos().X, ps[connecthead].pos.Y - actor->int_pos().Y);
|
||||
actor->spr.xvel = 48 - (krand() & 31);
|
||||
ssp(actor, CLIPMASK0);
|
||||
}
|
||||
else if (!actj)
|
||||
{
|
||||
actor->add_int_z(4 << 8);
|
||||
actor->temp_data[0] = actor->spr.pos.Z;
|
||||
actor->temp_data[0] = actor->int_pos().Z;
|
||||
if (!isRR()) actor->temp_data[1] = krand() & 127;
|
||||
}
|
||||
actor->spr.xrepeat = 24;
|
||||
|
@ -626,7 +626,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
}
|
||||
else actor->SetOwner(actor);
|
||||
|
||||
actor->temp_data[4] = sectp->floorz == actor->spr.pos.Z;
|
||||
actor->temp_data[4] = sectp->floorz == actor->int_pos().Z;
|
||||
actor->spr.cstat = 0;
|
||||
ChangeActorStat(actor, STAT_TRANSPORT);
|
||||
return;
|
||||
|
@ -640,13 +640,13 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
{
|
||||
actor->temp_data[1] = sectp->ceilingz;
|
||||
if (actor->spr.pal)
|
||||
sectp->setceilingz(actor->spr.pos.Z);
|
||||
sectp->setceilingz(actor->int_pos().Z);
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->temp_data[1] = sectp->floorz;
|
||||
if (actor->spr.pal)
|
||||
sectp->setfloorz(actor->spr.pos.Z);
|
||||
sectp->setfloorz(actor->int_pos().Z);
|
||||
}
|
||||
|
||||
actor->spr.hitag <<= 2;
|
||||
|
@ -664,11 +664,11 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
else
|
||||
actor->temp_data[4] = sectp->ceilingz;
|
||||
|
||||
sectp->setceilingz(actor->spr.pos.Z);
|
||||
sectp->setceilingz(actor->int_pos().Z);
|
||||
StartInterpolation(sectp, Interp_Sect_Ceilingz);
|
||||
break;
|
||||
case SE_35:
|
||||
sectp->setceilingz(actor->spr.pos.Z);
|
||||
sectp->setceilingz(actor->int_pos().Z);
|
||||
break;
|
||||
case SE_27_DEMO_CAM:
|
||||
if (ud.recstat == 1)
|
||||
|
@ -692,20 +692,20 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
actor->temp_data[0] = sectp->ceilingz;
|
||||
actor->temp_data[1] = sectp->floorz;
|
||||
|
||||
bool ceiling = (abs(actor->temp_data[0] - actor->spr.pos.Z) < abs(actor->temp_data[1] - actor->spr.pos.Z));
|
||||
bool ceiling = (abs(actor->temp_data[0] - actor->int_pos().Z) < abs(actor->temp_data[1] - actor->int_pos().Z));
|
||||
actor->spriteextra = ceiling;
|
||||
|
||||
if (actor->spr.ang == 512)
|
||||
{
|
||||
if (ceiling)
|
||||
sectp->setceilingz(actor->spr.pos.Z);
|
||||
sectp->setceilingz(actor->int_pos().Z);
|
||||
else
|
||||
sectp->setfloorz(actor->spr.pos.Z);
|
||||
sectp->setfloorz(actor->int_pos().Z);
|
||||
}
|
||||
else
|
||||
{
|
||||
sectp->setceilingz(actor->spr.pos.Z);
|
||||
sectp->setfloorz(actor->spr.pos.Z);
|
||||
sectp->setceilingz(actor->int_pos().Z);
|
||||
sectp->setfloorz(actor->int_pos().Z);
|
||||
}
|
||||
|
||||
if (sectp->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
|
@ -779,7 +779,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
|
||||
for (auto& wal : wallsofsector(sectp))
|
||||
{
|
||||
d = FindDistance2D(actor->spr.pos.vec2 - wal.wall_int_pos());
|
||||
d = FindDistance2D(actor->int_pos().vec2 - wal.wall_int_pos());
|
||||
if (d < q)
|
||||
{
|
||||
q = d;
|
||||
|
@ -793,7 +793,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
|
||||
for (auto& wal : wallsofsector(sectp))
|
||||
{
|
||||
d = FindDistance2D(actor->spr.pos.vec2 - wal.wall_int_pos());
|
||||
d = FindDistance2D(actor->int_pos().vec2 - wal.wall_int_pos());
|
||||
if (d < q && &wal != actor->temp_walls[0])
|
||||
{
|
||||
q = d;
|
||||
|
@ -831,7 +831,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
case SE_31_FLOOR_RISE_FALL:
|
||||
actor->temp_data[1] = sectp->floorz;
|
||||
// actor->temp_data[2] = actor->spr.hitag;
|
||||
if (actor->spr.ang != 1536) sectp->setfloorz(actor->spr.pos.Z);
|
||||
if (actor->spr.ang != 1536) sectp->setfloorz(actor->int_pos().Z);
|
||||
|
||||
for (auto& wal : wallsofsector(sectp))
|
||||
if (wal.hitag == 0) wal.hitag = 9999;
|
||||
|
@ -842,7 +842,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
case SE_32_CEILING_RISE_FALL:
|
||||
actor->temp_data[1] = sectp->ceilingz;
|
||||
actor->temp_data[2] = actor->spr.hitag;
|
||||
if (actor->spr.ang != 1536) sectp->setceilingz(actor->spr.pos.Z);
|
||||
if (actor->spr.ang != 1536) sectp->setceilingz(actor->int_pos().Z);
|
||||
|
||||
for (auto& wal : wallsofsector(sectp))
|
||||
if (wal.hitag == 0) wal.hitag = 9999;
|
||||
|
@ -865,7 +865,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
|
||||
case SE_9_DOWN_OPEN_DOOR_LIGHTS:
|
||||
if (sectp->lotag &&
|
||||
labs(sectp->ceilingz - actor->spr.pos.Z) > 1024)
|
||||
labs(sectp->ceilingz - actor->int_pos().Z) > 1024)
|
||||
sectp->lotag |= 32768; //If its open
|
||||
[[fallthrough]];
|
||||
case SE_8_UP_OPEN_DOOR_LIGHTS:
|
||||
|
@ -931,7 +931,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
{
|
||||
if (actor->spr.ang == 512)
|
||||
{
|
||||
actor->set_int_xy(act2->spr.pos.X, act2->spr.pos.Y);
|
||||
actor->set_int_xy(act2->int_pos().X, act2->int_pos().Y);
|
||||
}
|
||||
found = true;
|
||||
actor->SetOwner(act2);
|
||||
|
@ -944,7 +944,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
actor->spr.cstat2 = CSTAT2_SPRITE_NOFIND;
|
||||
actor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
ChangeActorStat(actor, STAT_REMOVED);
|
||||
Printf("Found lonely Sector Effector (lotag 0) at (%d,%d)\n", actor->spr.pos.X, actor->spr.pos.Y);
|
||||
Printf("Found lonely Sector Effector (lotag 0) at (%d,%d)\n", actor->int_pos().X, actor->int_pos().Y);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -952,8 +952,8 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
actor->temp_data[1] = tempwallptr;
|
||||
for (auto& wal : wallsofsector(sectp))
|
||||
{
|
||||
msx[tempwallptr] = wal.wall_int_pos().X - actor->spr.pos.X;
|
||||
msy[tempwallptr] = wal.wall_int_pos().Y - actor->spr.pos.Y;
|
||||
msx[tempwallptr] = wal.wall_int_pos().X - actor->int_pos().X;
|
||||
msy[tempwallptr] = wal.wall_int_pos().Y - actor->int_pos().Y;
|
||||
tempwallptr++;
|
||||
if (tempwallptr > 2047)
|
||||
{
|
||||
|
@ -983,7 +983,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
|
||||
if (s == nullptr)
|
||||
{
|
||||
I_Error("Subway found no zero'd sectors with locators\nat (%d,%d).\n", actor->spr.pos.X, actor->spr.pos.Y);
|
||||
I_Error("Subway found no zero'd sectors with locators\nat (%d,%d).\n", actor->int_pos().X, actor->int_pos().Y);
|
||||
}
|
||||
|
||||
actor->SetOwner(nullptr);
|
||||
|
@ -998,8 +998,8 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
|
||||
else if (actor->spr.lotag == SE_26)
|
||||
{
|
||||
actor->temp_data[3] = actor->spr.pos.X;
|
||||
actor->temp_data[4] = actor->spr.pos.Y;
|
||||
actor->temp_data[3] = actor->int_pos().X;
|
||||
actor->temp_data[4] = actor->int_pos().Y;
|
||||
if (actor->spr.shade == sectp->floorshade) //UP
|
||||
actor->spr.zvel = -256;
|
||||
else
|
||||
|
@ -1087,7 +1087,7 @@ void lotsofglass(DDukeActor *actor, walltype* wal, int n)
|
|||
for (j = n - 1; j >= 0; j--)
|
||||
{
|
||||
a = actor->spr.ang - 256 + (krand() & 511) + 1024;
|
||||
EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), 1024 - (krand() & 1023), actor, 5);
|
||||
EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z, TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), 1024 - (krand() & 1023), actor, 5);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -1110,7 +1110,7 @@ void lotsofglass(DDukeActor *actor, walltype* wal, int n)
|
|||
{
|
||||
z = sect->floorz - (krand() & (abs(sect->ceilingz - sect->floorz)));
|
||||
if (z < -(32 << 8) || z >(32 << 8))
|
||||
z = actor->spr.pos.Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
z = actor->int_pos().Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
a = actor->spr.ang - 1024;
|
||||
EGS(actor->sector(), x1, y1, z, TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 1023), actor, 5);
|
||||
}
|
||||
|
@ -1128,8 +1128,8 @@ void spriteglass(DDukeActor* actor, int n)
|
|||
for (int j = n; j > 0; j--)
|
||||
{
|
||||
int a = krand() & 2047;
|
||||
int z = actor->spr.pos.Z - ((krand() & 16) << 8);
|
||||
auto k = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, z, TILE_GLASSPIECES + (j % 3), krand() & 15, 36, 36, a, 32 + (krand() & 63), -512 - (krand() & 2047), actor, 5);
|
||||
int z = actor->int_pos().Z - ((krand() & 16) << 8);
|
||||
auto k = EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, z, TILE_GLASSPIECES + (j % 3), krand() & 15, 36, 36, a, 32 + (krand() & 63), -512 - (krand() & 2047), actor, 5);
|
||||
if (k) k->spr.pal = actor->spr.pal;
|
||||
}
|
||||
}
|
||||
|
@ -1180,7 +1180,7 @@ void lotsofcolourglass(DDukeActor* actor, walltype* wal, int n)
|
|||
for (j = n - 1; j >= 0; j--)
|
||||
{
|
||||
a = krand() & 2047;
|
||||
auto k = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (krand() & (63 << 8)), TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), 1024 - (krand() & 2047), actor, 5);
|
||||
auto k = EGS(actor->sector(), actor->int_pos().X, actor->int_pos().Y, actor->int_pos().Z - (krand() & (63 << 8)), TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), 1024 - (krand() & 2047), actor, 5);
|
||||
if (k) k->spr.pal = krand() & 15;
|
||||
}
|
||||
return;
|
||||
|
@ -1199,7 +1199,7 @@ void lotsofcolourglass(DDukeActor* actor, walltype* wal, int n)
|
|||
updatesector(x1, y1, §);
|
||||
z = sect->floorz - (krand() & (abs(sect->ceilingz - sect->floorz)));
|
||||
if (z < -(32 << 8) || z >(32 << 8))
|
||||
z = actor->spr.pos.Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
z = actor->int_pos().Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
a = actor->spr.ang - 1024;
|
||||
auto k = EGS(actor->sector(), x1, y1, z, TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 2047), actor, 5);
|
||||
if (k) k->spr.pal = krand() & 7;
|
||||
|
|
|
@ -146,7 +146,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case WATERSPLASH2:
|
||||
if (actj)
|
||||
{
|
||||
SetActor(act, actj->spr.pos);
|
||||
SetActor(act, actj->int_pos());
|
||||
act->spr.xrepeat = act->spr.yrepeat = 8 + (krand() & 7);
|
||||
}
|
||||
else act->spr.xrepeat = act->spr.yrepeat = 16 + (krand() & 15);
|
||||
|
@ -157,11 +157,11 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
{
|
||||
if (actj->sector()->lotag == 2)
|
||||
{
|
||||
act->set_int_z(getceilzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y) + (16 << 8));
|
||||
act->set_int_z(getceilzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y) + (16 << 8));
|
||||
act->spr.cstat |= CSTAT_SPRITE_YFLIP;
|
||||
}
|
||||
else if (actj->sector()->lotag == 1)
|
||||
act->set_int_z(getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y));
|
||||
act->set_int_z(getflorzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y));
|
||||
}
|
||||
|
||||
if (sectp->floorpicnum == FLOORSLIME ||
|
||||
|
@ -294,8 +294,8 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.cstat |= CSTAT_SPRITE_ALIGNMENT_FLOOR;
|
||||
if (act->spr.picnum == LAVAPOOL) // Twentieth Anniversary World Tour
|
||||
{
|
||||
int fz = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (fz != act->spr.pos.Z)
|
||||
int fz = getflorzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y);
|
||||
if (fz != act->int_pos().Z)
|
||||
act->set_int_z(fz);
|
||||
act->add_int_z(-200);
|
||||
}
|
||||
|
@ -544,8 +544,8 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
break;
|
||||
|
||||
case SPOTLITE:
|
||||
act->temp_data[0] = act->spr.pos.X;
|
||||
act->temp_data[1] = act->spr.pos.Y;
|
||||
act->temp_data[0] = act->int_pos().X;
|
||||
act->temp_data[1] = act->int_pos().Y;
|
||||
break;
|
||||
case BULLETHOLE:
|
||||
act->spr.xrepeat = act->spr.yrepeat = 3;
|
||||
|
@ -638,8 +638,8 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
|
||||
if (actj)
|
||||
{
|
||||
int x = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (act->spr.pos.Z > x - (12 << 8))
|
||||
int x = getflorzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y);
|
||||
if (act->int_pos().Z > x - (12 << 8))
|
||||
act->set_int_z(x - (12 << 8));
|
||||
}
|
||||
|
||||
|
@ -720,7 +720,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case TOUCHPLATE:
|
||||
act->temp_data[2] = sectp->floorz;
|
||||
if (sectp->lotag != 1 && sectp->lotag != 2)
|
||||
sectp->setfloorz(act->spr.pos.Z);
|
||||
sectp->setfloorz(act->int_pos().Z);
|
||||
if (!isWorldTour())
|
||||
{
|
||||
if (act->spr.pal && ud.multimode > 1)
|
||||
|
@ -744,7 +744,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case WATERBUBBLEMAKER:
|
||||
if (act->spr.hitag && act->spr.picnum == WATERBUBBLEMAKER)
|
||||
{ // JBF 20030913: Pisses off move(), eg. in bobsp2
|
||||
Printf(TEXTCOLOR_YELLOW "WARNING: WATERBUBBLEMAKER %d @ %d,%d with hitag!=0. Applying fixup.\n", act->GetIndex(), act->spr.pos.X, act->spr.pos.Y);
|
||||
Printf(TEXTCOLOR_YELLOW "WARNING: WATERBUBBLEMAKER %d @ %d,%d with hitag!=0. Applying fixup.\n", act->GetIndex(), act->int_pos().X, act->int_pos().Y);
|
||||
act->spr.hitag = 0;
|
||||
}
|
||||
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
|
|
|
@ -201,7 +201,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case MUD:
|
||||
if (actj)
|
||||
{
|
||||
SetActor(act, actj->spr.pos);
|
||||
SetActor(act, actj->int_pos());
|
||||
act->spr.xrepeat = act->spr.yrepeat = 8 + (krand() & 7);
|
||||
}
|
||||
else act->spr.xrepeat = act->spr.yrepeat = 16 + (krand() & 15);
|
||||
|
@ -212,11 +212,11 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
{
|
||||
if (actj->sector()->lotag == 2)
|
||||
{
|
||||
act->set_int_z(getceilzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y) + (16 << 8));
|
||||
act->set_int_z(getceilzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y) + (16 << 8));
|
||||
act->spr.cstat |= CSTAT_SPRITE_YFLIP;
|
||||
}
|
||||
else if (actj->sector()->lotag == 1)
|
||||
act->set_int_z(getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y));
|
||||
act->set_int_z(getflorzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y));
|
||||
}
|
||||
|
||||
if (sectp->floorpicnum == FLOORSLIME ||
|
||||
|
@ -569,8 +569,8 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
break;
|
||||
|
||||
case SPOTLITE:
|
||||
act->temp_data[0] = act->spr.pos.X;
|
||||
act->temp_data[1] = act->spr.pos.Y;
|
||||
act->temp_data[0] = act->int_pos().X;
|
||||
act->temp_data[1] = act->int_pos().Y;
|
||||
break;
|
||||
case BULLETHOLE:
|
||||
act->spr.xrepeat = act->spr.yrepeat = 3;
|
||||
|
@ -649,8 +649,8 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
|
||||
if (actj)
|
||||
{
|
||||
int x = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (act->spr.pos.Z > x - (12 << 8))
|
||||
int x = getflorzofslopeptr(act->sector(), act->int_pos().X, act->int_pos().Y);
|
||||
if (act->int_pos().Z > x - (12 << 8))
|
||||
act->set_int_z(x - (12 << 8));
|
||||
}
|
||||
|
||||
|
@ -717,7 +717,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case TOUCHPLATE:
|
||||
act->temp_data[2] = sectp->floorz;
|
||||
if (sectp->lotag != 1 && sectp->lotag != 2)
|
||||
sectp->setfloorz(act->spr.pos.Z);
|
||||
sectp->setfloorz(act->int_pos().Z);
|
||||
if (act->spr.pal && ud.multimode > 1)
|
||||
{
|
||||
act->spr.xrepeat = act->spr.yrepeat = 0;
|
||||
|
|
Loading…
Reference in a new issue