mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-06 00:41:02 +00:00
- use DCoreActor::sector() wherever possible.
This commit is contained in:
parent
88e4bb9f79
commit
5498699faf
124 changed files with 1567 additions and 1567 deletions
|
@ -627,8 +627,8 @@ void renderDrawMapView(int cposx, int cposy, int czoom, int cang)
|
|||
vertices[j] = { x1 / 4096.f, y1 / 4096.f, j == 1 || j == 2 ? 1.f : 0.f, j == 2 || j == 3 ? 1.f : 0.f };
|
||||
}
|
||||
int shade;
|
||||
if ((actor->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)) shade = actor->spr.sector()->ceilingshade;
|
||||
else shade = actor->spr.sector()->floorshade;
|
||||
if ((actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)) shade = actor->sector()->ceilingshade;
|
||||
else shade = actor->sector()->floorshade;
|
||||
shade += actor->spr.shade;
|
||||
PalEntry color = shadeToLight(shade);
|
||||
FRenderStyle rs = LegacyRenderStyles[STYLE_Translucent];
|
||||
|
|
|
@ -44,7 +44,7 @@ public:
|
|||
|
||||
sectortype* sector() const
|
||||
{
|
||||
return spr.sector();
|
||||
return spr.sectp;
|
||||
}
|
||||
|
||||
bool insector() const
|
||||
|
|
|
@ -364,7 +364,7 @@ static void ReadSpriteV5(FileReader& fr, spritetype& spr, int& secno)
|
|||
spr.hitag = fr.ReadInt16();
|
||||
spr.extra = fr.ReadInt16();
|
||||
|
||||
auto sec = spr.sector();
|
||||
auto sec = spr.sectp;
|
||||
if ((sec->ceilingstat & CSTAT_SECTOR_SKY) > 0)
|
||||
spr.pal = sec->ceilingpal;
|
||||
else
|
||||
|
|
|
@ -2713,7 +2713,7 @@ static void actNapalmMove(DBloodActor* actor)
|
|||
if (Chance(0x8000)) actor->spr.cstat |= CSTAT_SPRITE_XFLIP;
|
||||
|
||||
sfxPlay3DSound(actor, 303, 24 + (actor->spr.flags & 3), 1);
|
||||
actRadiusDamage(pOwner, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), 128, 0, 60, kDamageExplode, 15, 120);
|
||||
actRadiusDamage(pOwner, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), 128, 0, 60, kDamageExplode, 15, 120);
|
||||
|
||||
if (actor->xspr.data4 > 1)
|
||||
{
|
||||
|
@ -2746,7 +2746,7 @@ static void actNapalmMove(DBloodActor* actor)
|
|||
|
||||
static DBloodActor* actSpawnFloor(DBloodActor* actor)
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
int x = actor->spr.pos.X;
|
||||
int y = actor->spr.pos.Y;
|
||||
updatesector(x, y, &pSector);
|
||||
|
@ -2892,7 +2892,7 @@ bool actHealDude(DBloodActor* actor, int add, int threshold)
|
|||
threshold <<= 4;
|
||||
if (actor->xspr.health < (unsigned)threshold)
|
||||
{
|
||||
if (actor->IsPlayerActor()) sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 780, actor->spr.sector());
|
||||
if (actor->IsPlayerActor()) sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 780, actor->sector());
|
||||
actor->xspr.health = min<uint32_t>(actor->xspr.health + add, threshold);
|
||||
return true;
|
||||
}
|
||||
|
@ -2965,7 +2965,7 @@ static bool actKillModernDude(DBloodActor* actor, DAMAGE_TYPE damageType)
|
|||
else
|
||||
{
|
||||
seqKill(actor);
|
||||
DBloodActor* pEffect = gFX.fxSpawnActor((FX_ID)52, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang);
|
||||
DBloodActor* pEffect = gFX.fxSpawnActor((FX_ID)52, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang);
|
||||
if (pEffect != nullptr)
|
||||
{
|
||||
pEffect->spr.cstat = CSTAT_SPRITE_ALIGNMENT_FACING;
|
||||
|
@ -3725,7 +3725,7 @@ static int actDamageThing(DBloodActor* source, DBloodActor* actor, int damage, D
|
|||
{
|
||||
case -1:
|
||||
GibSprite(actor, GIBTYPE_14, nullptr, nullptr);
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 312, actor->spr.sector());
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 312, actor->sector());
|
||||
actPostSprite(actor, kStatFree);
|
||||
break;
|
||||
|
||||
|
@ -3877,7 +3877,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
case 4:
|
||||
if (pWallHit)
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_52, missileActor->spr.sector(), missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_52, missileActor->sector(), missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 0);
|
||||
if (pFX) pFX->spr.ang = (GetWallAngle(pWallHit) + 512) & 2047;
|
||||
}
|
||||
break;
|
||||
|
@ -3898,7 +3898,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
|
||||
case kMissileArcGargoyle:
|
||||
sfxKill3DSound(missileActor, -1, -1);
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 306, missileActor->spr.sector());
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 306, missileActor->sector());
|
||||
GibSprite(missileActor, GIBTYPE_6, NULL, NULL);
|
||||
|
||||
if (hitCode == 3 && actorHit && (pThingInfo || pDudeInfo))
|
||||
|
@ -3912,7 +3912,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
case kMissileLifeLeechAltNormal:
|
||||
case kMissileLifeLeechAltSmall:
|
||||
sfxKill3DSound(missileActor, -1, -1);
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 306, missileActor->spr.sector());
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 306, missileActor->sector());
|
||||
|
||||
if (hitCode == 3 && actorHit && (pThingInfo || pDudeInfo))
|
||||
{
|
||||
|
@ -3951,7 +3951,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
evPostActor(actorHit, 0, kCallbackFXFlameLick);
|
||||
|
||||
actBurnSprite(missileOwner, actorHit, 480);
|
||||
actRadiusDamage(missileOwner, missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, missileActor->spr.sector(), 16, 20, 10, kDamageBullet, 6, 480);
|
||||
actRadiusDamage(missileOwner, missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, missileActor->sector(), 16, 20, 10, kDamageBullet, 6, 480);
|
||||
|
||||
// by NoOne: allow additional bullet damage for Flare Gun
|
||||
if (gGameOptions.weaponsV10x && !VanillaMode())
|
||||
|
@ -4026,7 +4026,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
|
||||
case kMissileEctoSkull:
|
||||
sfxKill3DSound(missileActor, -1, -1);
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 522, missileActor->spr.sector());
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 522, missileActor->sector());
|
||||
actPostSprite(missileActor, kStatDebris);
|
||||
seqSpawn(20, missileActor, -1);
|
||||
if (hitCode == 3 && actorHit && actorHit->hasX())
|
||||
|
@ -4059,7 +4059,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
|
|||
|
||||
case kMissileTeslaRegular:
|
||||
sfxKill3DSound(missileActor, -1, -1);
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 518, missileActor->spr.sector());
|
||||
sfxPlay3DSound(missileActor->spr.pos.X, missileActor->spr.pos.Y, missileActor->spr.pos.Z, 518, missileActor->sector());
|
||||
GibSprite(missileActor, (hitCode == 2) ? GIBTYPE_23 : GIBTYPE_22, NULL, NULL);
|
||||
evKillActor(missileActor);
|
||||
seqKill(missileActor);
|
||||
|
@ -4293,7 +4293,7 @@ static void checkHit(DBloodActor* actor)
|
|||
break;
|
||||
|
||||
case kThingZombieHead:
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 357, actor->spr.sector());
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 357, actor->sector());
|
||||
actKickObject(actor, actor2);
|
||||
actDamageSprite(nullptr, actor2, kDamageFall, 80);
|
||||
break;
|
||||
|
@ -4371,7 +4371,7 @@ static void checkFloorHit(DBloodActor* actor)
|
|||
pPlayer->kickPower = PlayClock + 60;
|
||||
}
|
||||
actKickObject(actor, actor2);
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 357, actor->spr.sector());
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 357, actor->sector());
|
||||
sfxPlay3DSound(actor, 374, 0, 0);
|
||||
break;
|
||||
case kThingZombieHead:
|
||||
|
@ -4381,7 +4381,7 @@ static void checkFloorHit(DBloodActor* actor)
|
|||
pPlayer->kickPower = PlayClock + 60;
|
||||
}
|
||||
actKickObject(actor, actor2);
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 357, actor->spr.sector());
|
||||
sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 357, actor->sector());
|
||||
actDamageSprite(nullptr, actor2, kDamageFall, 80);
|
||||
break;
|
||||
case kTrapSawCircular:
|
||||
|
@ -4501,8 +4501,8 @@ void actAirDrag(DBloodActor* actor, int a2)
|
|||
{
|
||||
int wind_x = 0;
|
||||
int wind_y = 0;
|
||||
assert(actor->spr.sector());
|
||||
sectortype* pSector = actor->spr.sector();
|
||||
assert(actor->sector());
|
||||
sectortype* pSector = actor->sector();
|
||||
if (pSector->hasX())
|
||||
{
|
||||
XSECTOR* pXSector = &pSector->xs();
|
||||
|
@ -4530,7 +4530,7 @@ static Collision MoveThing(DBloodActor* actor)
|
|||
assert(actor->hasX());
|
||||
assert(actor->spr.type >= kThingBase && actor->spr.type < kThingMax);
|
||||
const THINGINFO* pThingInfo = &thingInfo[actor->spr.type - kThingBase];
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
assert(pSector);
|
||||
int top, bottom;
|
||||
Collision lhit;
|
||||
|
@ -4549,7 +4549,7 @@ static Collision MoveThing(DBloodActor* actor)
|
|||
enginecompatibility_mode = bakCompat; // restore
|
||||
actor->spr.cstat = bakCstat;
|
||||
assert(pSector);
|
||||
if (actor->spr.sector() != pSector)
|
||||
if (actor->sector() != pSector)
|
||||
{
|
||||
assert(pSector);
|
||||
ChangeActorSect(actor, pSector);
|
||||
|
@ -4591,7 +4591,7 @@ static Collision MoveThing(DBloodActor* actor)
|
|||
actor->vel.Z += 58254;
|
||||
if (actor->spr.type == kThingZombieHead)
|
||||
{
|
||||
auto* fxActor = gFX.fxSpawnActor(FX_27, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto* fxActor = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (fxActor)
|
||||
{
|
||||
int v34 = (PlayClock * 3) & 2047;
|
||||
|
@ -4614,21 +4614,21 @@ static Collision MoveThing(DBloodActor* actor)
|
|||
GetActorExtents(actor, &top, &bottom);
|
||||
if (bottom >= floorZ)
|
||||
{
|
||||
actTouchFloor(actor, actor->spr.sector());
|
||||
actTouchFloor(actor, actor->sector());
|
||||
actor->hit.florhit = floorColl;
|
||||
actor->spr.pos.Z += floorZ - bottom;
|
||||
|
||||
int v20 = actor->vel.Z - actor->spr.sector()->velFloor;
|
||||
int v20 = actor->vel.Z - actor->sector()->velFloor;
|
||||
if (v20 > 0)
|
||||
{
|
||||
|
||||
actor->spr.flags |= 4;
|
||||
int vax = actFloorBounceVector(&actor->vel.X, &actor->vel.Y, (int*)&v20, actor->spr.sector(), pThingInfo->elastic);
|
||||
int vax = actFloorBounceVector(&actor->vel.X, &actor->vel.Y, (int*)&v20, actor->sector(), pThingInfo->elastic);
|
||||
int nDamage = MulScale(vax, vax, 30) - pThingInfo->dmgResist;
|
||||
if (nDamage > 0) actDamageSprite(actor, actor, kDamageFall, nDamage);
|
||||
|
||||
actor->vel.Z = v20;
|
||||
if (actor->spr.sector()->velFloor == 0 && abs(actor->vel.Z) < 0x10000)
|
||||
if (actor->sector()->velFloor == 0 && abs(actor->vel.Z) < 0x10000)
|
||||
{
|
||||
actor->vel.Z = 0;
|
||||
actor->spr.flags &= ~4;
|
||||
|
@ -4747,7 +4747,7 @@ void MoveDude(DBloodActor* actor)
|
|||
int bz = (bottom - actor->spr.pos.Z) / 4;
|
||||
int tz = (actor->spr.pos.Z - top) / 4;
|
||||
int wd = actor->spr.clipdist << 2;
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
int nAiStateType = (actor->xspr.aiState) ? actor->xspr.aiState->stateType : -1;
|
||||
|
||||
assert(pSector);
|
||||
|
@ -4759,7 +4759,7 @@ void MoveDude(DBloodActor* actor)
|
|||
actor->spr.pos.X += actor->vel.X >> 12;
|
||||
actor->spr.pos.Y += actor->vel.Y >> 12;
|
||||
if (!FindSector(actor->spr.pos.X, actor->spr.pos.Y, &pSector))
|
||||
pSector = actor->spr.sector();
|
||||
pSector = actor->sector();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4768,7 +4768,7 @@ void MoveDude(DBloodActor* actor)
|
|||
ClipMove(actor->spr.pos, &pSector, actor->vel.X >> 12, actor->vel.Y >> 12, wd, tz, bz, CLIPMASK0, actor->hit.hit);
|
||||
if (pSector == nullptr)
|
||||
{
|
||||
pSector = actor->spr.sector();
|
||||
pSector = actor->sector();
|
||||
if (actor->spr.statnum == kStatDude || actor->spr.statnum == kStatThing)
|
||||
actDamageSprite(actor, actor, kDamageFall, 1000 << 4);
|
||||
}
|
||||
|
@ -4847,10 +4847,10 @@ void MoveDude(DBloodActor* actor)
|
|||
|
||||
XSECTOR* pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
if (actor->spr.sector() != pSector)
|
||||
if (actor->sector() != pSector)
|
||||
{
|
||||
assert(actor->spr.sector());
|
||||
auto pOldSector = actor->spr.sector();
|
||||
assert(actor->sector());
|
||||
auto pOldSector = actor->sector();
|
||||
XSECTOR* pXOldSector = pOldSector->hasX() ? &pOldSector->xs() : nullptr;
|
||||
|
||||
if (pXOldSector && pXOldSector->Exit && (pPlayer || !pXOldSector->dudeLockout))
|
||||
|
@ -4864,7 +4864,7 @@ void MoveDude(DBloodActor* actor)
|
|||
trTriggerSector(pSector, kCmdSectorEnter);
|
||||
}
|
||||
|
||||
pSector = actor->spr.sector();
|
||||
pSector = actor->sector();
|
||||
}
|
||||
int bUnderwater = 0;
|
||||
int bDepth = 0;
|
||||
|
@ -4938,11 +4938,11 @@ void MoveDude(DBloodActor* actor)
|
|||
{
|
||||
case kMarkerLowStack:
|
||||
if (pPlayer == gView)
|
||||
gotpic.Set(actor->spr.sector()->floorpicnum);
|
||||
gotpic.Set(actor->sector()->floorpicnum);
|
||||
break;
|
||||
case kMarkerUpStack:
|
||||
if (pPlayer == gView)
|
||||
gotpic.Set(actor->spr.sector()->ceilingpicnum);
|
||||
gotpic.Set(actor->sector()->ceilingpicnum);
|
||||
break;
|
||||
case kMarkerLowWater:
|
||||
case kMarkerLowGoo:
|
||||
|
@ -5106,10 +5106,10 @@ void MoveDude(DBloodActor* actor)
|
|||
{
|
||||
actor->hit.florhit = floorColl;
|
||||
actor->spr.pos.Z += floorZ - bottom;
|
||||
int v30 = actor->vel.Z - actor->spr.sector()->velFloor;
|
||||
int v30 = actor->vel.Z - actor->sector()->velFloor;
|
||||
if (v30 > 0)
|
||||
{
|
||||
int vax = actFloorBounceVector((int*)&actor->vel.X, (int*)&actor->vel.Y, (int*)&v30, actor->spr.sector(), 0);
|
||||
int vax = actFloorBounceVector((int*)&actor->vel.X, (int*)&actor->vel.Y, (int*)&v30, actor->sector(), 0);
|
||||
int nDamage = MulScale(vax, vax, 30);
|
||||
if (pPlayer)
|
||||
{
|
||||
|
@ -5126,7 +5126,7 @@ void MoveDude(DBloodActor* actor)
|
|||
actor->vel.Z = v30;
|
||||
if (abs(actor->vel.Z) < 0x10000)
|
||||
{
|
||||
actor->vel.Z = actor->spr.sector()->velFloor;
|
||||
actor->vel.Z = actor->sector()->velFloor;
|
||||
actor->spr.flags &= ~4;
|
||||
}
|
||||
else
|
||||
|
@ -5135,16 +5135,16 @@ void MoveDude(DBloodActor* actor)
|
|||
switch (tileGetSurfType(floorColl))
|
||||
{
|
||||
case kSurfWater:
|
||||
gFX.fxSpawnActor(FX_9, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0);
|
||||
gFX.fxSpawnActor(FX_9, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0);
|
||||
break;
|
||||
case kSurfLava:
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_10, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_10, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0);
|
||||
if (pFX)
|
||||
{
|
||||
for (int i = 0; i < 7; i++)
|
||||
{
|
||||
auto pFX2 = gFX.fxSpawnActor(FX_14, pFX->spr.sector(), pFX->spr.pos.X, pFX->spr.pos.Y, pFX->spr.pos.Z, 0);
|
||||
auto pFX2 = gFX.fxSpawnActor(FX_14, pFX->sector(), pFX->spr.pos.X, pFX->spr.pos.Y, pFX->spr.pos.Z, 0);
|
||||
if (pFX2)
|
||||
{
|
||||
pFX2->vel.X = Random2(0x6aaaa);
|
||||
|
@ -5194,7 +5194,7 @@ void MoveDude(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
}
|
||||
if (IsUnderwaterSector(actor->spr.sector()))
|
||||
if (IsUnderwaterSector(actor->sector()))
|
||||
return;
|
||||
if (actor->xspr.height >= 0x100)
|
||||
return;
|
||||
|
@ -5258,7 +5258,7 @@ int MoveMissile(DBloodActor* actor)
|
|||
while (1)
|
||||
{
|
||||
vec3_t pos = actor->spr.pos;
|
||||
auto pSector2 = actor->spr.sector();
|
||||
auto pSector2 = actor->sector();
|
||||
const auto bakSpriteCstat = actor->spr.cstat;
|
||||
if (Owner && !isFlameSprite && !cl_bloodvanillaexplosions && !VanillaMode())
|
||||
{
|
||||
|
@ -5343,13 +5343,13 @@ int MoveMissile(DBloodActor* actor)
|
|||
actor->spr.pos = pos;
|
||||
actor->spr.pos.Z += vz;
|
||||
updatesector(pos.X, pos.Y, &pSector);
|
||||
if (pSector != nullptr && pSector != actor->spr.sector())
|
||||
if (pSector != nullptr && pSector != actor->sector())
|
||||
{
|
||||
assert(pSector);
|
||||
ChangeActorSect(actor, pSector);
|
||||
}
|
||||
CheckLink(actor);
|
||||
gHitInfo.hitSector = actor->spr.sector();
|
||||
gHitInfo.hitSector = actor->sector();
|
||||
gHitInfo.hitpos.X = actor->spr.pos.X;
|
||||
gHitInfo.hitpos.Y = actor->spr.pos.Y;
|
||||
gHitInfo.hitpos.Z = actor->spr.pos.Z;
|
||||
|
@ -5433,7 +5433,7 @@ void actExplodeSprite(DBloodActor* actor)
|
|||
|
||||
case kThingTNTBarrel:
|
||||
{
|
||||
auto spawned = actSpawnSprite(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0, 1);
|
||||
auto spawned = actSpawnSprite(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0, 1);
|
||||
spawned->SetOwner(actor->GetOwner());
|
||||
if (actCheckRespawn(actor))
|
||||
{
|
||||
|
@ -5530,7 +5530,7 @@ void actActivateGibObject(DBloodActor* actor)
|
|||
if (gib1 > 0) GibSprite(actor, (GIBTYPE)(gib1 - 1), nullptr, nullptr);
|
||||
if (gib2 > 0) GibSprite(actor, (GIBTYPE)(gib2 - 1), nullptr, nullptr);
|
||||
if (gib3 > 0 && actor->xspr.burnTime > 0) GibSprite(actor, (GIBTYPE)(gib3 - 1), nullptr, nullptr);
|
||||
if (sound > 0) sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, sound, actor->spr.sector());
|
||||
if (sound > 0) sfxPlay3DSound(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, sound, actor->sector());
|
||||
if (dropmsg > 0) actDropObject(actor, dropmsg);
|
||||
|
||||
if (!(actor->spr.cstat & CSTAT_SPRITE_INVISIBLE) && !(actor->spr.flags & kHitagRespawn))
|
||||
|
@ -5607,7 +5607,7 @@ static void actCheckProximity()
|
|||
proxyDist = 512;
|
||||
}
|
||||
|
||||
if (CheckProximity(dudeactor, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), proxyDist))
|
||||
if (CheckProximity(dudeactor, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), proxyDist))
|
||||
{
|
||||
switch (actor->spr.type)
|
||||
{
|
||||
|
@ -5655,7 +5655,7 @@ static void actCheckThings()
|
|||
if (actor->spr.flags & 32) continue;
|
||||
if (!actor->hasX()) continue;
|
||||
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
|
||||
XSECTOR* pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
if (pXSector && pXSector->panVel && (pXSector->panAlways || pXSector->state || pXSector->busy))
|
||||
|
@ -5691,7 +5691,7 @@ static void actCheckThings()
|
|||
actAirDrag(actor, 128);
|
||||
|
||||
if (((actor->GetIndex() >> 8) & 15) == (gFrameCount & 15) && (actor->spr.flags & 2)) actor->spr.flags |= 4;
|
||||
if ((actor->spr.flags & 4) || actor->vel.X || actor->vel.Y || actor->vel.Z || actor->spr.sector()->velFloor || actor->spr.sector()->velCeil)
|
||||
if ((actor->spr.flags & 4) || actor->vel.X || actor->vel.Y || actor->vel.Z || actor->sector()->velFloor || actor->sector()->velCeil)
|
||||
{
|
||||
Collision hit = MoveThing(actor);
|
||||
if (hit.type)
|
||||
|
@ -5726,7 +5726,7 @@ static void actCheckThings()
|
|||
case kThingPodGreenBall:
|
||||
if (hit.type == kHitSector)
|
||||
{
|
||||
actRadiusDamage(actor->GetOwner(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), 200, 1, 20, kDamageExplode, 6, 0);
|
||||
actRadiusDamage(actor->GetOwner(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), 200, 1, 20, kDamageExplode, 6, 0);
|
||||
evPostActor(actor, 0, kCallbackFXPodBloodSplat);
|
||||
}
|
||||
else if (hit.type == kHitSprite)
|
||||
|
@ -5789,7 +5789,7 @@ static void actCheckExplosion()
|
|||
int x = actor->spr.pos.X;
|
||||
int y = actor->spr.pos.Y;
|
||||
int z = actor->spr.pos.Z;
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
int radius = pExplodeInfo->radius;
|
||||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
|
@ -5954,7 +5954,7 @@ static void actCheckTraps()
|
|||
int dy = MulScale(t, Sin(actor->spr.ang), 30);
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_32, actor->spr.sector(), x, y, z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), x, y, z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = dx + Random2(0x8888);
|
||||
|
@ -6036,7 +6036,7 @@ static void actCheckDudes()
|
|||
|
||||
if (actor2->IsPlayerActor() && (unsigned int)actor2->xspr.health > 0)
|
||||
{
|
||||
if (CheckProximity(actor2, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), 128))
|
||||
if (CheckProximity(actor2, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), 128))
|
||||
trTriggerSprite(actor, kCmdSpriteProximity);
|
||||
}
|
||||
}
|
||||
|
@ -6089,7 +6089,7 @@ static void actCheckDudes()
|
|||
{
|
||||
if (actor->spr.flags & 32 || !actor->hasX()) continue;
|
||||
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
viewBackupSpriteLoc(actor);
|
||||
XSECTOR* pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
|
@ -6118,7 +6118,7 @@ static void actCheckDudes()
|
|||
if (pXSector && pXSector->Underwater) actAirDrag(actor, 5376);
|
||||
else actAirDrag(actor, 128);
|
||||
|
||||
if ((actor->spr.flags & 4) || actor->vel.X || actor->vel.Y || actor->vel.Z || actor->spr.sector()->velFloor || actor->spr.sector()->velCeil)
|
||||
if ((actor->spr.flags & 4) || actor->vel.X || actor->vel.Y || actor->vel.Z || actor->sector()->velFloor || actor->sector()->velCeil)
|
||||
MoveDude(actor);
|
||||
}
|
||||
}
|
||||
|
@ -6218,7 +6218,7 @@ DBloodActor* actSpawnSprite(sectortype* pSector, int x, int y, int z, int nStat,
|
|||
|
||||
DBloodActor* actSpawnSprite(DBloodActor* source, int nStat)
|
||||
{
|
||||
DBloodActor* actor = InsertSprite(source->spr.sector(), nStat);
|
||||
DBloodActor* actor = InsertSprite(source->sector(), nStat);
|
||||
|
||||
actor->spr.pos.X = source->spr.pos.X;
|
||||
actor->spr.pos.Y = source->spr.pos.Y;
|
||||
|
@ -6416,7 +6416,7 @@ DBloodActor* actFireThing(DBloodActor* actor, int a2, int a3, int a4, int thingT
|
|||
x = gHitInfo.hitpos.X - MulScale(actor->spr.clipdist << 1, Cos(actor->spr.ang), 28);
|
||||
y = gHitInfo.hitpos.Y - MulScale(actor->spr.clipdist << 1, Sin(actor->spr.ang), 28);
|
||||
}
|
||||
auto fired = actSpawnThing(actor->spr.sector(), x, y, z, thingType);
|
||||
auto fired = actSpawnThing(actor->sector(), x, y, z, thingType);
|
||||
fired->SetOwner(actor);
|
||||
fired->spr.ang = actor->spr.ang;
|
||||
fired->vel.X = MulScale(a6, Cos(fired->spr.ang), 30);
|
||||
|
@ -6539,7 +6539,7 @@ DBloodActor* actFireMissile(DBloodActor* actor, int a2, int a3, int a4, int a5,
|
|||
y = gHitInfo.hitpos.Y - MulScale(pMissileInfo->clipDist << 1, Sin(actor->spr.ang), 28);
|
||||
}
|
||||
}
|
||||
auto spawned = actSpawnSprite(actor->spr.sector(), x, y, z, 5, 1);
|
||||
auto spawned = actSpawnSprite(actor->sector(), x, y, z, 5, 1);
|
||||
|
||||
spawned->spr.cstat2 |= CSTAT2_SPRITE_MAPPED;
|
||||
spawned->spr.type = nType;
|
||||
|
@ -6941,7 +6941,7 @@ void actFireVector(DBloodActor* shooter, int a2, int a3, int a4, int a5, int a6,
|
|||
|
||||
void FireballSeqCallback(int, DBloodActor* actor)
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_11, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_11, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X;
|
||||
|
@ -6952,7 +6952,7 @@ void FireballSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
void NapalmSeqCallback(int, DBloodActor* actor)
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_12, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_12, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X;
|
||||
|
@ -6963,7 +6963,7 @@ void NapalmSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
void Fx32Callback(int, DBloodActor* actor)
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_32, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X;
|
||||
|
@ -6974,7 +6974,7 @@ void Fx32Callback(int, DBloodActor* actor)
|
|||
|
||||
void Fx33Callback(int, DBloodActor* actor)
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_33, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_33, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X;
|
||||
|
|
|
@ -144,7 +144,7 @@ bool CanMove(DBloodActor* actor, DBloodActor* target, int nAngle, int nRange)
|
|||
}
|
||||
x += MulScale(nRange, Cos(nAngle), 30);
|
||||
y += MulScale(nRange, Sin(nAngle), 30);
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
assert(pSector);
|
||||
if (!FindSector(x, y, z, &pSector))
|
||||
return false;
|
||||
|
@ -570,7 +570,7 @@ void aiActivateDude(DBloodActor* actor)
|
|||
case kDudeGillBeast:
|
||||
{
|
||||
DUDEEXTRA_STATS* pDudeExtraE = &actor->dudeExtra.stats;
|
||||
XSECTOR* pXSector = actor->spr.sector()->hasX()? &actor->spr.sector()->xs() : nullptr;
|
||||
XSECTOR* pXSector = actor->sector()->hasX()? &actor->sector()->xs() : nullptr;
|
||||
|
||||
pDudeExtraE->thinkTime = 0;
|
||||
pDudeExtraE->active = 1;
|
||||
|
@ -1405,7 +1405,7 @@ void RecoilDude(DBloodActor* actor)
|
|||
aiNewState(actor, &eelRecoil);
|
||||
break;
|
||||
case kDudeGillBeast: {
|
||||
XSECTOR* pXSector = actor->spr.sector()->hasX() ? &actor->spr.sector()->xs() : nullptr;
|
||||
XSECTOR* pXSector = actor->sector()->hasX() ? &actor->sector()->xs() : nullptr;
|
||||
|
||||
aiPlay3DSound(actor, 1702, AI_SFX_PRIORITY_2, -1);
|
||||
if (pXSector && pXSector->Underwater)
|
||||
|
@ -1511,13 +1511,13 @@ void aiThinkTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
|
@ -1557,13 +1557,13 @@ void aiLookForTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
@ -1582,7 +1582,7 @@ void aiLookForTarget(DBloodActor* actor)
|
|||
if (actor->xspr.state)
|
||||
{
|
||||
const bool newSectCheckMethod = !cl_bloodvanillaenemies && !VanillaMode(); // use new sector checking logic
|
||||
GetClosestSpriteSectors(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, 400, nullptr, newSectCheckMethod);
|
||||
GetClosestSpriteSectors(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, 400, nullptr, newSectCheckMethod);
|
||||
|
||||
BloodStatIterator it(kStatDude);
|
||||
while (DBloodActor* actor2 = it.Next())
|
||||
|
@ -1684,7 +1684,7 @@ void aiInit(void)
|
|||
|
||||
void aiInitSprite(DBloodActor* actor)
|
||||
{
|
||||
XSECTOR* pXSector = actor->spr.sector()->hasX() ? &actor->spr.sector()->xs() : nullptr;
|
||||
XSECTOR* pXSector = actor->sector()->hasX() ? &actor->sector()->xs() : nullptr;
|
||||
|
||||
DUDEEXTRA* pDudeExtra = &actor->dudeExtra;
|
||||
DUDEEXTRA_STATS* pDudeExtraE = &actor->dudeExtra.stats;
|
||||
|
|
|
@ -101,13 +101,13 @@ static void batThinkTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
@ -174,7 +174,7 @@ static void batThinkPonder(DBloodActor* actor)
|
|||
int height2 = (getDudeInfo(pTarget->spr.type)->eyeHeight * pTarget->spr.yrepeat) << 2;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z, pTarget->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z, pTarget->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
aiSetTarget(actor, actor->GetTarget());
|
||||
if (height2 - height < 0x3000 && nDist < 0x1800 && nDist > 0xc00 && abs(nDeltaAngle) < 85)
|
||||
|
@ -281,12 +281,12 @@ static void batThinkChase(DBloodActor* actor)
|
|||
int height2 = (pDudeInfo->eyeHeight * pTarget->spr.yrepeat) << 2;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z, pTarget->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z, pTarget->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
aiSetTarget(actor, actor->GetTarget());
|
||||
int floorZ = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
int floorZ = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (height2 - height < 0x2000 && nDist < 0x200 && abs(nDeltaAngle) < 85)
|
||||
aiNewState(actor, &batBite);
|
||||
else if ((height2 - height > 0x5000 || floorZ - bottom > 0x5000) && nDist < 0x1400 && nDist > 0x800 && abs(nDeltaAngle) < 85)
|
||||
|
@ -411,7 +411,7 @@ void batMoveToCeil(DBloodActor* actor)
|
|||
aiNewState(actor, &batIdle);
|
||||
}
|
||||
else
|
||||
aiSetTarget(actor, x, y, actor->spr.sector()->ceilingz);
|
||||
aiSetTarget(actor, x, y, actor->sector()->ceilingz);
|
||||
}
|
||||
|
||||
END_BLD_NS
|
||||
|
|
|
@ -86,7 +86,7 @@ void StompSeqCallback(int, DBloodActor* actor)
|
|||
int y = actor->spr.pos.Y;
|
||||
int z = actor->spr.pos.Z;
|
||||
int vc = 400;
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
int v1c = 5 + 2 * gGameOptions.nDifficulty;
|
||||
int v10 = 25 + 30 * gGameOptions.nDifficulty;
|
||||
const bool newSectCheckMethod = !cl_bloodvanillaenemies && !VanillaMode(); // use new sector checking logic
|
||||
|
@ -176,7 +176,7 @@ static void beastThinkGoto(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
int dx = actor->xspr.TargetPos.X - actor->spr.pos.X;
|
||||
|
@ -198,7 +198,7 @@ static void beastThinkChase(DBloodActor* actor)
|
|||
{
|
||||
if (actor->GetTarget() == nullptr)
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
if (pXSector && pXSector->Underwater)
|
||||
|
@ -216,7 +216,7 @@ static void beastThinkChase(DBloodActor* actor)
|
|||
int dy = target->spr.pos.Y - actor->spr.pos.Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
if (target->xspr.health == 0)
|
||||
|
@ -240,7 +240,7 @@ static void beastThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
@ -372,7 +372,7 @@ static void beastThinkSwimChase(DBloodActor* actor)
|
|||
int height = pDudeInfo->eyeHeight + actor->spr.pos.Z;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -113,13 +113,13 @@ static void eelThinkTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
@ -188,7 +188,7 @@ static void eelThinkPonder(DBloodActor* actor)
|
|||
int height2 = (getDudeInfo(target->spr.type)->eyeHeight * target->spr.yrepeat) << 2;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
aiSetTarget(actor, actor->GetTarget());
|
||||
if (height2 - height < -0x2000 && nDist < 0x1800 && nDist > 0xc00 && abs(nDeltaAngle) < 85)
|
||||
|
@ -295,7 +295,7 @@ static void eelThinkChase(DBloodActor* actor)
|
|||
GetActorExtents(actor, &top, &bottom);
|
||||
int top2, bottom2;
|
||||
GetActorExtents(target, &top2, &bottom2);
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
@ -415,7 +415,7 @@ void eelMoveToCeil(DBloodActor* actor)
|
|||
aiNewState(actor, &eelIdle);
|
||||
}
|
||||
else
|
||||
aiSetTarget(actor, x, y, actor->spr.sector()->ceilingz);
|
||||
aiSetTarget(actor, x, y, actor->sector()->ceilingz);
|
||||
}
|
||||
|
||||
END_BLD_NS
|
||||
|
|
|
@ -195,7 +195,7 @@ static void burnThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -91,7 +91,7 @@ static void calebThinkGoto(DBloodActor* actor)
|
|||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
int dx = actor->xspr.TargetPos.X - actor->spr.pos.X;
|
||||
|
@ -111,7 +111,7 @@ static void calebThinkGoto(DBloodActor* actor)
|
|||
|
||||
static void calebThinkChase(DBloodActor* actor)
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
if (actor->GetTarget() == nullptr)
|
||||
|
@ -153,7 +153,7 @@ static void calebThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
@ -253,7 +253,7 @@ static void calebThinkSwimChase(DBloodActor* actor)
|
|||
int height = pDudeInfo->eyeHeight + actor->spr.pos.Z;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -123,7 +123,7 @@ void cerberusBurnSeqCallback(int, DBloodActor* actor)
|
|||
if (abs(nDeltaAngle) <= tt1.at8)
|
||||
{
|
||||
int tz1 = actor2->spr.pos.Z - actor->spr.pos.Z;
|
||||
if (cansee(x, y, z, actor->spr.sector(), x2, y2, z2, actor2->spr.sector()))
|
||||
if (cansee(x, y, z, actor->sector(), x2, y2, z2, actor2->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(nAngle);
|
||||
|
@ -202,7 +202,7 @@ void cerberusBurnSeqCallback2(int, DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo2 = getDudeInfo(actor2->spr.type);
|
||||
int height1 = (pDudeInfo2->aimHeight * actor2->spr.yrepeat) << 2;
|
||||
int tz1 = (z2 - height1) - z;
|
||||
if (cansee(x, y, z, actor->spr.sector(), x2, y2, z2, actor2->spr.sector()))
|
||||
if (cansee(x, y, z, actor->sector(), x2, y2, z2, actor2->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(nAngle);
|
||||
|
@ -262,13 +262,13 @@ static void cerberusThinkTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
@ -374,7 +374,7 @@ static void cerberusThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery) {
|
||||
aiSetTarget(actor, actor->GetTarget());
|
||||
|
|
|
@ -274,7 +274,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
@ -282,7 +282,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
actor->dudeSlope = nDist == 0 ? 0 : DivScale(target->spr.pos.Z - actor->spr.pos.Z, nDist, 10);
|
||||
switch (actor->spr.type) {
|
||||
case kDudeCultistTommy:
|
||||
if (nDist < 0x1e00 && nDist > 0xe00 && abs(nDeltaAngle) < 85 && !TargetNearExplosion(target->spr.sector())
|
||||
if (nDist < 0x1e00 && nDist > 0xe00 && abs(nDeltaAngle) < 85 && !TargetNearExplosion(target->sector())
|
||||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && gPlayer[target->spr.type - kDudePlayer1].isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
|
@ -350,7 +350,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
break;
|
||||
case kDudeCultistShotgun:
|
||||
if (nDist < 0x2c00 && nDist > 0x1400 && !TargetNearExplosion(target->spr.sector())
|
||||
if (nDist < 0x2c00 && nDist > 0x1400 && !TargetNearExplosion(target->sector())
|
||||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty >= 2 && target->IsPlayerActor() && !gPlayer[target->spr.type - kDudePlayer1].isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
|
@ -418,7 +418,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
break;
|
||||
case kDudeCultistTesla:
|
||||
if (nDist < 0x1e00 && nDist > 0xe00 && !TargetNearExplosion(target->spr.sector())
|
||||
if (nDist < 0x1e00 && nDist > 0xe00 && !TargetNearExplosion(target->sector())
|
||||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && gPlayer[target->spr.type - kDudePlayer1].isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
|
@ -530,7 +530,7 @@ static void cultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
break;
|
||||
case kDudeCultistBeast:
|
||||
if (nDist < 0x1e00 && nDist > 0xe00 && !TargetNearExplosion(target->spr.sector())
|
||||
if (nDist < 0x1e00 && nDist > 0xe00 && !TargetNearExplosion(target->sector())
|
||||
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && gPlayer[target->spr.type - kDudePlayer1].isRunning
|
||||
&& Chance(0x8000))
|
||||
{
|
||||
|
|
|
@ -152,7 +152,7 @@ void BlastSSeqCallback(int, DBloodActor* actor)
|
|||
if (abs(nDeltaAngle) <= tt.at8)
|
||||
{
|
||||
int tz1 = actor2->spr.pos.Z - actor->spr.pos.Z;
|
||||
if (cansee(x, y, z, actor->spr.sector(), x2, y2, z2, actor2->spr.sector()))
|
||||
if (cansee(x, y, z, actor->sector(), x2, y2, z2, actor2->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(nAngle);
|
||||
|
@ -222,13 +222,13 @@ static void gargThinkTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
@ -364,12 +364,12 @@ static void gargThinkChase(DBloodActor* actor)
|
|||
int height2 = (pDudeInfo->eyeHeight * target->spr.yrepeat) << 2;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
aiSetTarget(actor, actor->GetTarget());
|
||||
int floorZ = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
int floorZ = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
switch (actor->spr.type)
|
||||
{
|
||||
case kDudeGargoyleFlesh:
|
||||
|
|
|
@ -138,7 +138,7 @@ void ghostBlastSeqCallback(int, DBloodActor* actor)
|
|||
if (abs(nDeltaAngle) <= tt.at8)
|
||||
{
|
||||
int tz1 = actor2->spr.pos.Z - actor->spr.pos.Z;
|
||||
if (cansee(x, y, z, actor->spr.sector(), x2, y2, z2, actor2->spr.sector()))
|
||||
if (cansee(x, y, z, actor->sector(), x2, y2, z2, actor2->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(nAngle);
|
||||
|
@ -202,13 +202,13 @@ static void ghostThinkTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
@ -343,12 +343,12 @@ static void ghostThinkChase(DBloodActor* actor)
|
|||
int height2 = (pDudeInfo->eyeHeight * target->spr.yrepeat) << 2;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
aiSetTarget(actor, actor->GetTarget());
|
||||
int floorZ = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
int floorZ = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
switch (actor->spr.type) {
|
||||
case kDudePhantasm:
|
||||
if (nDist < 0x2000 && nDist > 0x1000 && abs(nDeltaAngle) < 85) {
|
||||
|
|
|
@ -82,7 +82,7 @@ static void gillThinkGoto(DBloodActor* actor)
|
|||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
int dx = actor->xspr.TargetPos.X - actor->spr.pos.X;
|
||||
|
@ -102,7 +102,7 @@ static void gillThinkGoto(DBloodActor* actor)
|
|||
|
||||
static void gillThinkChase(DBloodActor* actor)
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
|
||||
|
||||
if (actor->GetTarget() == nullptr)
|
||||
|
@ -141,7 +141,7 @@ static void gillThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
@ -240,7 +240,7 @@ static void gillThinkSwimChase(DBloodActor* actor)
|
|||
int height = pDudeInfo->eyeHeight + actor->spr.pos.Z;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -106,7 +106,7 @@ static void handThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -123,7 +123,7 @@ static void houndThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -90,7 +90,7 @@ static void innocThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -122,7 +122,7 @@ void sub_70284(int, DBloodActor* actor)
|
|||
nDist = 75;
|
||||
break;
|
||||
}
|
||||
actRadiusDamage(actor, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), nDist, 1, 5 * (1 + gGameOptions.nDifficulty), dmgType, 2, nBurn);
|
||||
actRadiusDamage(actor, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), nDist, 1, 5 * (1 + gGameOptions.nDifficulty), dmgType, 2, nBurn);
|
||||
}
|
||||
|
||||
static void aiPodSearch(DBloodActor* actor)
|
||||
|
@ -203,7 +203,7 @@ static void aiPodChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -101,7 +101,7 @@ static void ratThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -210,7 +210,7 @@ static void spidThinkChase(DBloodActor* actor)
|
|||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector())) {
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector())) {
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery) {
|
||||
aiSetTarget(actor, actor->GetTarget());
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ void sub_71BD4(int, DBloodActor* actor)
|
|||
if (abs(nDeltaAngle) <= tt.at8)
|
||||
{
|
||||
int tz1 = actor2->spr.pos.Z - actor->spr.pos.Z;
|
||||
if (cansee(x, y, z, actor->spr.sector(), x2, y2, z2, actor2->spr.sector()))
|
||||
if (cansee(x, y, z, actor->sector(), x2, y2, z2, actor2->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(nAngle);
|
||||
|
@ -179,7 +179,7 @@ void sub_720AC(int, DBloodActor* actor)
|
|||
if (abs(nDeltaAngle) <= tt.at8)
|
||||
{
|
||||
int tz1 = actor2->spr.pos.Z - actor->spr.pos.Z;
|
||||
if (cansee(x, y, z, actor->spr.sector(), x2, y2, z2, actor2->spr.sector()))
|
||||
if (cansee(x, y, z, actor->sector(), x2, y2, z2, actor2->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(nAngle);
|
||||
|
@ -229,13 +229,13 @@ static void sub_725A4(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
@ -307,7 +307,7 @@ static void sub_72934(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -519,8 +519,8 @@ static void unicultThinkChase(DBloodActor* actor)
|
|||
int losAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int eyeAboveZ = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
|
||||
if (dist > pDudeInfo->seeDist || !cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(),
|
||||
actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - eyeAboveZ, actor->spr.sector()))
|
||||
if (dist > pDudeInfo->seeDist || !cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(),
|
||||
actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - eyeAboveZ, actor->sector()))
|
||||
{
|
||||
if (spriteIsUnderwater(actor, false)) aiGenDudeNewState(actor, &genDudeSearchW);
|
||||
else aiGenDudeNewState(actor, &genDudeSearchL);
|
||||
|
@ -580,8 +580,8 @@ static void unicultThinkChase(DBloodActor* actor)
|
|||
}
|
||||
|
||||
int ldist = aiFightGetTargetDist(target, pDudeInfo, actLeech);
|
||||
if (ldist > 3 || !cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(),
|
||||
actLeech->spr.pos.X, actLeech->spr.pos.Y, actLeech->spr.pos.Z, actLeech->spr.sector()) || actLeech->GetTarget() == nullptr)
|
||||
if (ldist > 3 || !cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(),
|
||||
actLeech->spr.pos.X, actLeech->spr.pos.Y, actLeech->spr.pos.Z, actLeech->sector()) || actLeech->GetTarget() == nullptr)
|
||||
{
|
||||
aiGenDudeNewState(actor, &genDudeThrow2);
|
||||
genDudeThrow2.nextState = &genDudeDodgeShortL;
|
||||
|
@ -726,7 +726,7 @@ static void unicultThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nType = curWeapon - kTrapExploder;
|
||||
const EXPLOSION* pExpl = &explodeInfo[nType];
|
||||
if (CheckProximity(actor, target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), pExpl->radius >> 1))
|
||||
if (CheckProximity(actor, target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), pExpl->radius >> 1))
|
||||
{
|
||||
actor->vel.X = actor->vel.Y = actor->vel.Z = 0;
|
||||
if (doExplosion(actor, nType) && actor->xspr.health > 0)
|
||||
|
@ -1348,7 +1348,7 @@ bool playGenDudeSound(DBloodActor* actor, int mode)
|
|||
|
||||
bool spriteIsUnderwater(DBloodActor* actor, bool oldWay)
|
||||
{
|
||||
return (IsUnderwaterSector(actor->spr.sector())
|
||||
return (IsUnderwaterSector(actor->sector())
|
||||
|| (oldWay && (actor->xspr.medium == kMediumWater || actor->xspr.medium == kMediumGoo)));
|
||||
}
|
||||
|
||||
|
@ -1400,7 +1400,7 @@ void removeLeech(DBloodActor* actLeech, bool delSprite)
|
|||
{
|
||||
if (actLeech != nullptr)
|
||||
{
|
||||
auto effectactor = gFX.fxSpawnActor((FX_ID)52, actLeech->spr.sector(), actLeech->spr.pos.X, actLeech->spr.pos.Y, actLeech->spr.pos.Z, actLeech->spr.ang);
|
||||
auto effectactor = gFX.fxSpawnActor((FX_ID)52, actLeech->sector(), actLeech->spr.pos.X, actLeech->spr.pos.Y, actLeech->spr.pos.Z, actLeech->spr.ang);
|
||||
if (effectactor != nullptr)
|
||||
{
|
||||
effectactor->spr.cstat = CSTAT_SPRITE_ALIGNMENT_FACING;
|
||||
|
@ -1791,7 +1791,7 @@ void dudeLeechOperate(DBloodActor* actor, const EVENT& event)
|
|||
int x = actTarget->spr.pos.X; int y = actTarget->spr.pos.Y; int z = actTarget->spr.pos.Z;
|
||||
int nDist = approxDist(x - actor->spr.pos.X, y - actor->spr.pos.Y);
|
||||
|
||||
if (nDist != 0 && cansee(actor->spr.pos.X, actor->spr.pos.Y, top, actor->spr.sector(), x, y, z, actTarget->spr.sector()))
|
||||
if (nDist != 0 && cansee(actor->spr.pos.X, actor->spr.pos.Y, top, actor->sector(), x, y, z, actTarget->sector()))
|
||||
{
|
||||
int t = DivScale(nDist, 0x1aaaaa, 12);
|
||||
x += (actTarget->vel.X * t) >> 12;
|
||||
|
@ -1831,7 +1831,7 @@ void dudeLeechOperate(DBloodActor* actor, const EVENT& event)
|
|||
|
||||
bool doExplosion(DBloodActor* actor, int nType)
|
||||
{
|
||||
auto actExplosion = actSpawnSprite(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, kStatExplosion, true);
|
||||
auto actExplosion = actSpawnSprite(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, kStatExplosion, true);
|
||||
if (!actExplosion->hasX())
|
||||
return false;
|
||||
|
||||
|
@ -2481,10 +2481,10 @@ bool genDudePrepare(DBloodActor* actor, int propId)
|
|||
|
||||
// make sure dudes aren't in the floor or ceiling
|
||||
int zTop, zBot; GetActorExtents(actor, &zTop, &zBot);
|
||||
if (!(actor->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY))
|
||||
actor->spr.pos.Z += ClipLow(actor->spr.sector()->ceilingz - zTop, 0);
|
||||
if (!(actor->spr.sector()->floorstat & CSTAT_SECTOR_SKY))
|
||||
actor->spr.pos.Z += ClipHigh(actor->spr.sector()->floorz - zBot, 0);
|
||||
if (!(actor->sector()->ceilingstat & CSTAT_SECTOR_SKY))
|
||||
actor->spr.pos.Z += ClipLow(actor->sector()->ceilingz - zTop, 0);
|
||||
if (!(actor->sector()->floorstat & CSTAT_SECTOR_SKY))
|
||||
actor->spr.pos.Z += ClipHigh(actor->sector()->floorz - zBot, 0);
|
||||
|
||||
actor->spr.clipdist = ClipRange((actor->spr.xrepeat + actor->spr.yrepeat) >> 1, 4, 120);
|
||||
if (propId) break;
|
||||
|
|
|
@ -135,7 +135,7 @@ static void zombaThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
@ -181,7 +181,7 @@ static void zombaThinkPonder(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
@ -215,13 +215,13 @@ static void myThinkTarget(DBloodActor* actor)
|
|||
int x = pPlayer->actor->spr.pos.X;
|
||||
int y = pPlayer->actor->spr.pos.Y;
|
||||
int z = pPlayer->actor->spr.pos.Z;
|
||||
auto pSector = pPlayer->actor->spr.sector();
|
||||
auto pSector = pPlayer->actor->sector();
|
||||
int dx = x - actor->spr.pos.X;
|
||||
int dy = y - actor->spr.pos.Y;
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist > pDudeInfo->seeDist && nDist > pDudeInfo->hearDist)
|
||||
continue;
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - ((pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2), actor->sector()))
|
||||
continue;
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
if (nDist < pDudeInfo->seeDist && abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
|
|
|
@ -130,7 +130,7 @@ static void zombfThinkChase(DBloodActor* actor)
|
|||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->spr.ang) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->spr.sector()))
|
||||
if (cansee(target->spr.pos.X, target->spr.pos.Y, target->spr.pos.Z, target->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - height, actor->sector()))
|
||||
{
|
||||
if (abs(nDeltaAngle) <= pDudeInfo->periphery)
|
||||
{
|
||||
|
|
|
@ -50,7 +50,7 @@ void fxFlameLick(DBloodActor* actor, sectortype*) // 0
|
|||
int x = actor->spr.pos.X + dx;
|
||||
int y = actor->spr.pos.Y + dy;
|
||||
int z = bottom - Random(bottom - top);
|
||||
auto pFX = gFX.fxSpawnActor(FX_32, actor->spr.sector(), x, y, z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), x, y, z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(-dx);
|
||||
|
@ -125,7 +125,7 @@ void FlareBurst(DBloodActor* actor, sectortype*) // 2
|
|||
void fxFlareSpark(DBloodActor* actor, sectortype*) // 3
|
||||
{
|
||||
if (!actor) return;
|
||||
auto pFX = gFX.fxSpawnActor(FX_28, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_28, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(0x1aaaa);
|
||||
|
@ -144,7 +144,7 @@ void fxFlareSpark(DBloodActor* actor, sectortype*) // 3
|
|||
void fxFlareSparkLite(DBloodActor* actor, sectortype*) // 4
|
||||
{
|
||||
if (!actor) return;
|
||||
auto pFX = gFX.fxSpawnActor(FX_28, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_28, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(0x1aaaa);
|
||||
|
@ -166,7 +166,7 @@ void fxZombieBloodSpurt(DBloodActor* actor, sectortype*) // 5
|
|||
assert(actor->hasX());
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
auto pFX = gFX.fxSpawnActor(FX_27, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, top, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, top, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(0x11111);
|
||||
|
@ -195,7 +195,7 @@ void fxZombieBloodSpurt(DBloodActor* actor, sectortype*) // 5
|
|||
void fxBloodSpurt(DBloodActor* actor, sectortype*) // 6
|
||||
{
|
||||
if (!actor) return;
|
||||
auto pFX = gFX.fxSpawnActor(FX_27, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->spr.ang = 0;
|
||||
|
@ -215,7 +215,7 @@ void fxBloodSpurt(DBloodActor* actor, sectortype*) // 6
|
|||
void fxArcSpark(DBloodActor* actor, sectortype*) // 7
|
||||
{
|
||||
if (!actor) return;
|
||||
auto pFX = gFX.fxSpawnActor(FX_15, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_15, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(0x10000);
|
||||
|
@ -240,7 +240,7 @@ void fxDynPuff(DBloodActor* actor, sectortype*) // 8
|
|||
int x = actor->spr.pos.X + MulScale(nDist, Cos(actor->spr.ang - 512), 30);
|
||||
int y = actor->spr.pos.Y + MulScale(nDist, Sin(actor->spr.ang - 512), 30);
|
||||
int z = actor->spr.pos.Z;
|
||||
auto pFX = gFX.fxSpawnActor(FX_7, actor->spr.sector(), x, y, z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_7, actor->sector(), x, y, z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X;
|
||||
|
@ -334,7 +334,7 @@ void Respawn(DBloodActor* actor, sectortype*) // 9
|
|||
actor->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE;
|
||||
}
|
||||
|
||||
gFX.fxSpawnActor(FX_29, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
gFX.fxSpawnActor(FX_29, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
sfxPlay3DSound(actor, 350, -1, 0);
|
||||
break;
|
||||
}
|
||||
|
@ -364,7 +364,7 @@ void PlayerBubble(DBloodActor* actor, sectortype*) // 10
|
|||
int x = actor->spr.pos.X + MulScale(nDist, Cos(nAngle), 30);
|
||||
int y = actor->spr.pos.Y + MulScale(nDist, Sin(nAngle), 30);
|
||||
int z = bottom - Random(bottom - top);
|
||||
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->spr.sector(), x, y, z, 0);
|
||||
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->sector(), x, y, z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(0x1aaaa);
|
||||
|
@ -394,7 +394,7 @@ void EnemyBubble(DBloodActor* actor, sectortype*) // 11
|
|||
int x = actor->spr.pos.X + MulScale(nDist, Cos(nAngle), 30);
|
||||
int y = actor->spr.pos.Y + MulScale(nDist, Sin(nAngle), 30);
|
||||
int z = bottom - Random(bottom - top);
|
||||
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->spr.sector(), x, y, z, 0);
|
||||
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->sector(), x, y, z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(0x1aaaa);
|
||||
|
@ -466,7 +466,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
|
|||
int nDist = Random(16) << 4;
|
||||
int x = actor->spr.pos.X + MulScale(nDist, Cos(nAngle), 28);
|
||||
int y = actor->spr.pos.Y + MulScale(nDist, Sin(nAngle), 28);
|
||||
gFX.fxSpawnActor(FX_48, actor->spr.sector(), x, y, actor->spr.pos.Z, 0);
|
||||
gFX.fxSpawnActor(FX_48, actor->sector(), x, y, actor->spr.pos.Z, 0);
|
||||
if (actor->spr.ang == 1024)
|
||||
{
|
||||
int nChannel = 28 + (actor->GetIndex() & 2); // this is a little stupid...
|
||||
|
@ -474,7 +474,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
|
|||
}
|
||||
if (Chance(0x5000))
|
||||
{
|
||||
auto pFX = gFX.fxSpawnActor(FX_36, actor->spr.sector(), x, y, floorZ - 64, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_36, actor->sector(), x, y, floorZ - 64, 0);
|
||||
if (pFX)
|
||||
pFX->spr.ang = nAngle;
|
||||
}
|
||||
|
@ -491,7 +491,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
|
|||
void fxTeslaAlt(DBloodActor* actor, sectortype*) // 15
|
||||
{
|
||||
if (!actor) return;
|
||||
auto pFX = gFX.fxSpawnActor(FX_49, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto pFX = gFX.fxSpawnActor(FX_49, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->vel.X = actor->vel.X + Random2(0x1aaaa);
|
||||
|
@ -521,13 +521,13 @@ void fxBouncingSleeve(DBloodActor* actor, sectortype*) // 16
|
|||
int top, bottom; GetActorExtents(actor, &top, &bottom);
|
||||
actor->spr.pos.Z += floorZ - bottom;
|
||||
|
||||
int zv = actor->vel.Z - actor->spr.sector()->velFloor;
|
||||
int zv = actor->vel.Z - actor->sector()->velFloor;
|
||||
|
||||
if (actor->vel.Z == 0) sleeveStopBouncing(actor);
|
||||
else if (zv > 0) {
|
||||
actFloorBounceVector((int*)&actor->vel.X, (int*)&actor->vel.Y, &zv, actor->spr.sector(), 0x9000);
|
||||
actFloorBounceVector((int*)&actor->vel.X, (int*)&actor->vel.Y, &zv, actor->sector(), 0x9000);
|
||||
actor->vel.Z = zv;
|
||||
if (actor->spr.sector()->velFloor == 0 && abs(actor->vel.Z) < 0x20000) {
|
||||
if (actor->sector()->velFloor == 0 && abs(actor->vel.Z) < 0x20000) {
|
||||
sleeveStopBouncing(actor);
|
||||
return;
|
||||
}
|
||||
|
@ -620,9 +620,9 @@ void fxPodBloodSpray(DBloodActor* actor, sectortype*) // 18
|
|||
if (!actor) return;
|
||||
DBloodActor* pFX;
|
||||
if (actor->spr.type == 53)
|
||||
pFX = gFX.fxSpawnActor(FX_53, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
pFX = gFX.fxSpawnActor(FX_53, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
else
|
||||
pFX = gFX.fxSpawnActor(FX_54, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
pFX = gFX.fxSpawnActor(FX_54, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (pFX)
|
||||
{
|
||||
pFX->spr.ang = 0;
|
||||
|
@ -663,13 +663,13 @@ void fxPodBloodSplat(DBloodActor* actor, sectortype*) // 19
|
|||
if (actor->spr.type == 53 || actor->spr.type == kThingPodGreenBall)
|
||||
{
|
||||
if (Chance(0x500) || actor->spr.type == kThingPodGreenBall)
|
||||
pFX = gFX.fxSpawnActor(FX_55, actor->spr.sector(), x, y, floorZ - 64, 0);
|
||||
pFX = gFX.fxSpawnActor(FX_55, actor->sector(), x, y, floorZ - 64, 0);
|
||||
if (pFX)
|
||||
pFX->spr.ang = nAngle;
|
||||
}
|
||||
else
|
||||
{
|
||||
pFX = gFX.fxSpawnActor(FX_32, actor->spr.sector(), x, y, floorZ - 64, 0);
|
||||
pFX = gFX.fxSpawnActor(FX_32, actor->sector(), x, y, floorZ - 64, 0);
|
||||
if (pFX)
|
||||
pFX->spr.ang = nAngle;
|
||||
}
|
||||
|
@ -710,9 +710,9 @@ void sub_76A08(DBloodActor* actor, DBloodActor* actor2, PLAYER* pPlayer) // ???
|
|||
GetActorExtents(actor, &top, &bottom);
|
||||
actor->spr.pos.X = actor2->spr.pos.X;
|
||||
actor->spr.pos.Y = actor2->spr.pos.Y;
|
||||
actor->spr.pos.Z = actor2->spr.sector()->floorz - (bottom - actor->spr.pos.Z);
|
||||
actor->spr.pos.Z = actor2->sector()->floorz - (bottom - actor->spr.pos.Z);
|
||||
actor->spr.ang = actor2->spr.ang;
|
||||
ChangeActorSect(actor, actor2->spr.sector());
|
||||
ChangeActorSect(actor, actor2->sector());
|
||||
sfxPlay3DSound(actor2, 201, -1, 0);
|
||||
actor->vel.X = actor->vel.Y = actor->vel.Z = 0;
|
||||
viewBackupSpriteLoc(actor);
|
||||
|
|
|
@ -203,7 +203,7 @@ void CFX::fxProcess(void)
|
|||
while (auto actor = it.Next())
|
||||
{
|
||||
viewBackupSpriteLoc(actor);
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
assert(pSector);
|
||||
assert(actor->spr.type < kFXMax);
|
||||
FXDATA* pFXData = &gFXData[actor->spr.type];
|
||||
|
@ -212,7 +212,7 @@ void CFX::fxProcess(void)
|
|||
actor->spr.pos.Y += actor->vel.Y >> 12;
|
||||
actor->spr.pos.Z += actor->vel.Z >> 8;
|
||||
// Weird...
|
||||
if (actor->vel.X || (actor->vel.Y && actor->spr.pos.Z >= actor->spr.sector()->floorz))
|
||||
if (actor->vel.X || (actor->vel.Y && actor->spr.pos.Z >= actor->sector()->floorz))
|
||||
{
|
||||
updatesector(actor->spr.pos.X, actor->spr.pos.Y, &pSector);
|
||||
if (pSector == nullptr)
|
||||
|
@ -220,7 +220,7 @@ void CFX::fxProcess(void)
|
|||
remove(actor);
|
||||
continue;
|
||||
}
|
||||
if (getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y) <= actor->spr.pos.Z)
|
||||
if (getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y) <= actor->spr.pos.Z)
|
||||
{
|
||||
if (pFXData->funcID < 0 || pFXData->funcID >= kCallbackMax)
|
||||
{
|
||||
|
@ -230,7 +230,7 @@ void CFX::fxProcess(void)
|
|||
gCallback[pFXData->funcID](actor, nullptr);
|
||||
continue;
|
||||
}
|
||||
if (pSector != actor->spr.sector())
|
||||
if (pSector != actor->sector())
|
||||
{
|
||||
assert(pSector);
|
||||
ChangeActorSect(actor, pSector);
|
||||
|
@ -270,12 +270,12 @@ void fxSpawnBlood(DBloodActor* actor, int)
|
|||
{
|
||||
if (!actor->insector())
|
||||
return;
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
if (!FindSector(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, &pSector))
|
||||
return;
|
||||
if (adult_lockout && gGameOptions.nGameType <= 0)
|
||||
return;
|
||||
auto bloodactor = gFX.fxSpawnActor(FX_27, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
auto bloodactor = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (bloodactor)
|
||||
{
|
||||
bloodactor->spr.ang = 1024;
|
||||
|
@ -296,16 +296,16 @@ void fxSpawnPodStuff(DBloodActor* actor, int)
|
|||
{
|
||||
if (!actor->insector())
|
||||
return;
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
if (!FindSector(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, &pSector))
|
||||
return;
|
||||
if (adult_lockout && gGameOptions.nGameType <= 0)
|
||||
return;
|
||||
DBloodActor* spawnactor;
|
||||
if (actor->spr.type == kDudePodGreen)
|
||||
spawnactor = gFX.fxSpawnActor(FX_53, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
spawnactor = gFX.fxSpawnActor(FX_53, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
else
|
||||
spawnactor = gFX.fxSpawnActor(FX_54, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
spawnactor = gFX.fxSpawnActor(FX_54, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
if (spawnactor)
|
||||
{
|
||||
spawnactor->spr.ang = 1024;
|
||||
|
@ -328,7 +328,7 @@ void fxSpawnEjectingBrass(DBloodActor* actor, int z, int a3, int a4)
|
|||
int y = actor->spr.pos.Y + MulScale(actor->spr.clipdist - 4, Sin(actor->spr.ang), 28);
|
||||
x += MulScale(a3, Cos(actor->spr.ang + 512), 30);
|
||||
y += MulScale(a3, Sin(actor->spr.ang + 512), 30);
|
||||
auto pBrass = gFX.fxSpawnActor((FX_ID)(FX_37 + Random(3)), actor->spr.sector(), x, y, z, 0);
|
||||
auto pBrass = gFX.fxSpawnActor((FX_ID)(FX_37 + Random(3)), actor->sector(), x, y, z, 0);
|
||||
if (pBrass)
|
||||
{
|
||||
if (!VanillaMode())
|
||||
|
@ -353,7 +353,7 @@ void fxSpawnEjectingShell(DBloodActor* actor, int z, int a3, int a4)
|
|||
int y = actor->spr.pos.Y + MulScale(actor->spr.clipdist - 4, Sin(actor->spr.ang), 28);
|
||||
x += MulScale(a3, Cos(actor->spr.ang + 512), 30);
|
||||
y += MulScale(a3, Sin(actor->spr.ang + 512), 30);
|
||||
auto pShell = gFX.fxSpawnActor((FX_ID)(FX_40 + Random(3)), actor->spr.sector(), x, y, z, 0);
|
||||
auto pShell = gFX.fxSpawnActor((FX_ID)(FX_40 + Random(3)), actor->sector(), x, y, z, 0);
|
||||
if (pShell)
|
||||
{
|
||||
if (!VanillaMode())
|
||||
|
|
|
@ -136,11 +136,11 @@ bool CheckProximity(DBloodActor* actor, int nX, int nY, int nZ, sectortype* pSec
|
|||
|
||||
int bottom, top;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), nX, nY, nZ, pSector))
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), nX, nY, nZ, pSector))
|
||||
return 1;
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, bottom, actor->spr.sector(), nX, nY, nZ, pSector))
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, bottom, actor->sector(), nX, nY, nZ, pSector))
|
||||
return 1;
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, top, actor->spr.sector(), nX, nY, nZ, pSector))
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, top, actor->sector(), nX, nY, nZ, pSector))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
@ -400,7 +400,7 @@ int HitScan(DBloodActor* actor, int z, int dx, int dy, int dz, unsigned int nMas
|
|||
{
|
||||
hitscangoal.X = hitscangoal.Y = 0x1ffffff;
|
||||
}
|
||||
hitscan({ x, y, z }, actor->spr.sector(), { dx, dy, dz << 4 }, gHitInfo, nMask);
|
||||
hitscan({ x, y, z }, actor->sector(), { dx, dy, dz << 4 }, gHitInfo, nMask);
|
||||
|
||||
hitscangoal.X = hitscangoal.Y = 0x1ffffff;
|
||||
actor->spr.cstat = bakCstat;
|
||||
|
@ -450,7 +450,7 @@ int VectorScan(DBloodActor* actor, int nOffset, int nZOffset, int dx, int dy, in
|
|||
hitscangoal.X = hitscangoal.Y = 0x1fffffff;
|
||||
}
|
||||
vec3_t pos = { x1, y1, z1 };
|
||||
hitscan(pos, actor->spr.sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
hitscan(pos, actor->sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
|
||||
hitscangoal.X = hitscangoal.Y = 0x1ffffff;
|
||||
actor->spr.cstat = bakCstat;
|
||||
|
@ -499,7 +499,7 @@ int VectorScan(DBloodActor* actor, int nOffset, int nZOffset, int dx, int dy, in
|
|||
other->spr.cstat &= ~CSTAT_SPRITE_BLOCK_HITSCAN;
|
||||
gHitInfo.clearObj();
|
||||
pos = gHitInfo.hitpos; // must make a copy!
|
||||
hitscan(pos, other->spr.sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
hitscan(pos, other->sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
other->spr.cstat = bakCstat;
|
||||
continue;
|
||||
}
|
||||
|
@ -581,7 +581,7 @@ int VectorScan(DBloodActor* actor, int nOffset, int nZOffset, int dx, int dy, in
|
|||
y1 = gHitInfo.hitpos.Y + link->spr.pos.Y - upper->spr.pos.Y;
|
||||
z1 = gHitInfo.hitpos.Z + link->spr.pos.Z - upper->spr.pos.Z;
|
||||
pos = { x1, y1, z1 };
|
||||
hitscan(pos, link->spr.sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
hitscan(pos, link->sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
@ -595,7 +595,7 @@ int VectorScan(DBloodActor* actor, int nOffset, int nZOffset, int dx, int dy, in
|
|||
y1 = gHitInfo.hitpos.Y + link->spr.pos.Y - lower->spr.pos.Y;
|
||||
z1 = gHitInfo.hitpos.Z + link->spr.pos.Z - lower->spr.pos.Z;
|
||||
pos = { x1, y1, z1 };
|
||||
hitscan(pos, link->spr.sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
hitscan(pos, link->sector(), { dx, dy, dz << 4 }, gHitInfo, CLIPMASK1);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -618,7 +618,7 @@ void GetZRange(DBloodActor* actor, int* ceilZ, Collision* ceilColl, int* floorZ,
|
|||
auto bakCstat = actor->spr.cstat;
|
||||
int32_t nTemp1;
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
getzrange(actor->spr.pos, actor->spr.sector(), (int32_t*)ceilZ, *ceilColl, (int32_t*)floorZ, *floorColl, nDist, nMask);
|
||||
getzrange(actor->spr.pos, actor->sector(), (int32_t*)ceilZ, *ceilColl, (int32_t*)floorZ, *floorColl, nDist, nMask);
|
||||
if (floorColl->type == kHitSector)
|
||||
{
|
||||
auto pSector = floorColl->hitSector;
|
||||
|
@ -634,7 +634,7 @@ void GetZRange(DBloodActor* actor, int* ceilZ, Collision* ceilColl, int* floorZ,
|
|||
{
|
||||
auto linkOwner = linkActor->GetOwner();
|
||||
vec3_t lpos = actor->spr.pos + linkOwner->spr.pos - linkActor->spr.pos;
|
||||
getzrange(lpos, linkOwner->spr.sector(), &nTemp1, scratch, (int32_t*)floorZ, *floorColl, nDist, nMask);
|
||||
getzrange(lpos, linkOwner->sector(), &nTemp1, scratch, (int32_t*)floorZ, *floorColl, nDist, nMask);
|
||||
*floorZ -= linkOwner->spr.pos.Z - linkActor->spr.pos.Z;
|
||||
}
|
||||
}
|
||||
|
@ -648,7 +648,7 @@ void GetZRange(DBloodActor* actor, int* ceilZ, Collision* ceilColl, int* floorZ,
|
|||
{
|
||||
auto linkOwner = linkActor->GetOwner();
|
||||
vec3_t lpos = actor->spr.pos + linkOwner->spr.pos - linkActor->spr.pos;
|
||||
getzrange(lpos, linkOwner->spr.sector(), (int32_t*)ceilZ, *ceilColl, &nTemp1, scratch, nDist, nMask);
|
||||
getzrange(lpos, linkOwner->sector(), (int32_t*)ceilZ, *ceilColl, &nTemp1, scratch, nDist, nMask);
|
||||
*ceilZ -= linkOwner->spr.pos.Z - linkActor->spr.pos.Z;
|
||||
}
|
||||
}
|
||||
|
@ -682,7 +682,7 @@ void GetZRangeAtXYZ(int x, int y, int z, sectortype* pSector, int* ceilZ, Collis
|
|||
{
|
||||
auto link = actor->GetOwner();
|
||||
vec3_t newpos = lpos + link->spr.pos - actor->spr.pos;
|
||||
getzrange(newpos, link->spr.sector(), &nTemp1, scratch, (int32_t*)floorZ, *floorColl, nDist, nMask);
|
||||
getzrange(newpos, link->sector(), &nTemp1, scratch, (int32_t*)floorZ, *floorColl, nDist, nMask);
|
||||
*floorZ -= link->spr.pos.Z - actor->spr.pos.Z;
|
||||
}
|
||||
}
|
||||
|
@ -696,7 +696,7 @@ void GetZRangeAtXYZ(int x, int y, int z, sectortype* pSector, int* ceilZ, Collis
|
|||
{
|
||||
auto link = actor->GetOwner();
|
||||
vec3_t newpos = lpos + link->spr.pos - actor->spr.pos;
|
||||
getzrange(newpos, link->spr.sector(), (int32_t*)ceilZ, *ceilColl, &nTemp1, scratch, nDist, nMask);
|
||||
getzrange(newpos, link->sector(), (int32_t*)ceilZ, *ceilColl, &nTemp1, scratch, nDist, nMask);
|
||||
*ceilZ -= link->spr.pos.Z - actor->spr.pos.Z;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -271,7 +271,7 @@ int ChanceToCount(int a1, int a2)
|
|||
|
||||
void GibFX(DBloodActor* actor, GIBFX* pGFX, CGibPosition* pPos, CGibVelocity* pVel)
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
if (adult_lockout && gGameOptions.nGameType == 0 && pGFX->fxId == FX_13)
|
||||
return;
|
||||
CGibPosition gPos(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z);
|
||||
|
@ -353,7 +353,7 @@ void GibThing(DBloodActor* actor, GIBTHING* pGThing, CGibPosition* pPos, CGibVel
|
|||
|
||||
if (pGThing->chance == 65536 || Chance(pGThing->chance))
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
int x, y, z;
|
||||
|
|
|
@ -135,8 +135,8 @@ void hudDraw(PLAYER* gView, sectortype* pSector, double bobx, double boby, doubl
|
|||
}
|
||||
int nShade = pSector->floorshade;
|
||||
int nPalette = 0;
|
||||
if (gView->actor->spr.sector()->hasX()) {
|
||||
sectortype* pViewSect = gView->actor->spr.sector();
|
||||
if (gView->actor->sector()->hasX()) {
|
||||
sectortype* pViewSect = gView->actor->sector();
|
||||
XSECTOR* pXSector = &pViewSect->xs();
|
||||
if (pXSector->color)
|
||||
nPalette = pViewSect->floorpal;
|
||||
|
|
|
@ -126,7 +126,7 @@ void InitMirrors(void)
|
|||
if (link2 == nullptr)
|
||||
continue;
|
||||
|
||||
auto sectj = link2->spr.sector();
|
||||
auto sectj = link2->sector();
|
||||
int j = sectnum(sectj);
|
||||
if (sectj->ceilingpicnum != 504)
|
||||
I_Error("Lower link sector %d doesn't have mirror picnum\n", j);
|
||||
|
|
|
@ -714,8 +714,8 @@ void nnExtInitModernStuff(TArray<DBloodActor*>& actors)
|
|||
|
||||
// very quick fix for floor sprites with Touch trigger flag if their Z is equals sector floorz / ceilgz
|
||||
if (actor->insector() && actor->xspr.Touch && (actor->spr.cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR)) {
|
||||
if (actor->spr.pos.Z == actor->spr.sector()->floorz) actor->spr.pos.Z--;
|
||||
else if (actor->spr.pos.Z == actor->spr.sector()->ceilingz) actor->spr.pos.Z++;
|
||||
if (actor->spr.pos.Z == actor->sector()->floorz) actor->spr.pos.Z--;
|
||||
else if (actor->spr.pos.Z == actor->sector()->ceilingz) actor->spr.pos.Z++;
|
||||
}
|
||||
|
||||
// make Proximity flag work not just for dudes and things...
|
||||
|
@ -1129,10 +1129,10 @@ void nnExtProcessSuperSprites()
|
|||
}
|
||||
else if (windactor->insector())
|
||||
{
|
||||
sectortype* pSect = windactor->spr.sector();
|
||||
sectortype* pSect = windactor->sector();
|
||||
XSECTOR* pXSector = (pSect->hasX()) ? &pSect->xs() : nullptr;
|
||||
if ((fWindAlways) || (pXSector && !pXSector->locked && (pXSector->windAlways || pXSector->busy)))
|
||||
windGenDoVerticalWind(windactor->xspr.sysData2, windactor->spr.sector());
|
||||
windGenDoVerticalWind(windactor->xspr.sysData2, windactor->sector());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1151,7 +1151,7 @@ void nnExtProcessSuperSprites()
|
|||
int x = pProx->spr.pos.X;
|
||||
int y = pProx->spr.pos.Y;
|
||||
int z = pProx->spr.pos.Z;
|
||||
auto pSect = pProx->spr.sector();
|
||||
auto pSect = pProx->sector();
|
||||
|
||||
if (!pProx->xspr.DudeLockout)
|
||||
{
|
||||
|
@ -1206,7 +1206,7 @@ void nnExtProcessSuperSprites()
|
|||
int x = pSight->spr.pos.X;
|
||||
int y = pSight->spr.pos.Y;
|
||||
int z = pSight->spr.pos.Z;
|
||||
auto pSightSect = pSight->spr.sector();
|
||||
auto pSightSect = pSight->sector();
|
||||
int ztop2, zbot2;
|
||||
|
||||
for (int a = connecthead; a >= 0; a = connectpoint2[a])
|
||||
|
@ -1217,7 +1217,7 @@ void nnExtProcessSuperSprites()
|
|||
|
||||
auto plActor = pPlayer->actor;
|
||||
GetActorExtents(plActor, &ztop2, &zbot2);
|
||||
if (cansee(x, y, z, pSightSect, plActor->spr.pos.X, plActor->spr.pos.Y, ztop2, plActor->spr.sector()))
|
||||
if (cansee(x, y, z, pSightSect, plActor->spr.pos.X, plActor->spr.pos.Y, ztop2, plActor->sector()))
|
||||
{
|
||||
if (pSight->xspr.Sight)
|
||||
{
|
||||
|
@ -1267,7 +1267,7 @@ void nnExtProcessSuperSprites()
|
|||
continue;
|
||||
}
|
||||
|
||||
XSECTOR* pXSector = (debrisactor->spr.sector()->hasX()) ? &debrisactor->spr.sector()->xs() : nullptr;
|
||||
XSECTOR* pXSector = (debrisactor->sector()->hasX()) ? &debrisactor->sector()->xs() : nullptr;
|
||||
viewBackupSpriteLoc(debrisactor);
|
||||
|
||||
bool uwater = false;
|
||||
|
@ -1280,7 +1280,7 @@ void nnExtProcessSuperSprites()
|
|||
if (pXSector != nullptr)
|
||||
{
|
||||
if ((uwater = pXSector->Underwater) != 0) airVel <<= 6;
|
||||
if (pXSector->panVel != 0 && getflorzofslopeptr(debrisactor->spr.sector(), debrisactor->spr.pos.X, debrisactor->spr.pos.Y) <= bottom)
|
||||
if (pXSector->panVel != 0 && getflorzofslopeptr(debrisactor->sector(), debrisactor->spr.pos.X, debrisactor->spr.pos.Y) <= bottom)
|
||||
{
|
||||
int angle = pXSector->panAngle; int speed = 0;
|
||||
if (pXSector->panAlways || pXSector->state || pXSector->busy)
|
||||
|
@ -1289,8 +1289,8 @@ void nnExtProcessSuperSprites()
|
|||
if (!pXSector->panAlways && pXSector->busy)
|
||||
speed = MulScale(speed, pXSector->busy, 16);
|
||||
}
|
||||
if (debrisactor->spr.sector()->floorstat & CSTAT_SECTOR_ALIGN)
|
||||
angle = (angle + GetWallAngle(debrisactor->spr.sector()->firstWall()) + 512) & 2047;
|
||||
if (debrisactor->sector()->floorstat & CSTAT_SECTOR_ALIGN)
|
||||
angle = (angle + GetWallAngle(debrisactor->sector()->firstWall()) + 512) & 2047;
|
||||
int dx = MulScale(speed, Cos(angle), 30);
|
||||
int dy = MulScale(speed, Sin(angle), 30);
|
||||
debrisactor->vel.X += dx;
|
||||
|
@ -1322,7 +1322,7 @@ void nnExtProcessSuperSprites()
|
|||
}
|
||||
|
||||
if (debrisactor->xspr.physAttr & kPhysGravity) debrisactor->xspr.physAttr |= kPhysFalling;
|
||||
if ((debrisactor->xspr.physAttr & kPhysFalling) || debrisactor->vel.X || debrisactor->vel.Y || debrisactor->vel.Z || debrisactor->spr.sector()->velFloor || debrisactor->spr.sector()->velCeil)
|
||||
if ((debrisactor->xspr.physAttr & kPhysFalling) || debrisactor->vel.X || debrisactor->vel.Y || debrisactor->vel.Z || debrisactor->sector()->velFloor || debrisactor->sector()->velCeil)
|
||||
debrisMove(i);
|
||||
|
||||
if (debrisactor->vel.X || debrisactor->vel.Y)
|
||||
|
@ -1344,7 +1344,7 @@ void nnExtProcessSuperSprites()
|
|||
if (ang < debrisactor->xspr.goalAng) debrisactor->spr.ang = ClipHigh(ang + angStep, debrisactor->xspr.goalAng);
|
||||
else if (ang > debrisactor->xspr.goalAng) debrisactor->spr.ang = ClipLow(ang - angStep, debrisactor->xspr.goalAng);
|
||||
|
||||
auto pSector = debrisactor->spr.sector();
|
||||
auto pSector = debrisactor->sector();
|
||||
int cz = getceilzofslopeptr(pSector, debrisactor->spr.pos.X, debrisactor->spr.pos.Y);
|
||||
int fz = getflorzofslopeptr(pSector, debrisactor->spr.pos.X, debrisactor->spr.pos.Y);
|
||||
|
||||
|
@ -1593,7 +1593,7 @@ void debrisBubble(DBloodActor* actor)
|
|||
int x = actor->spr.pos.X + MulScale(nDist, Cos(nAngle), 30);
|
||||
int y = actor->spr.pos.Y + MulScale(nDist, Sin(nAngle), 30);
|
||||
int z = bottom - Random(bottom - top);
|
||||
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->spr.sector(), x, y, z, 0);
|
||||
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->sector(), x, y, z, 0);
|
||||
if (pFX) {
|
||||
pFX->vel.X = actor->vel.X + Random2(0x1aaaa);
|
||||
pFX->vel.Y = actor->vel.Y + Random2(0x1aaaa);
|
||||
|
@ -1615,7 +1615,7 @@ void debrisBubble(DBloodActor* actor)
|
|||
void debrisMove(int listIndex)
|
||||
{
|
||||
DBloodActor* actor = gPhysSpritesList[listIndex];
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
|
||||
if (!actor->hasX() || !pSector)
|
||||
{
|
||||
|
@ -1652,7 +1652,7 @@ void debrisMove(int listIndex)
|
|||
actor->hit.hit = moveHit;
|
||||
|
||||
actor->spr.cstat = oldcstat;
|
||||
if (actor->spr.sector() != pSector)
|
||||
if (actor->sector() != pSector)
|
||||
{
|
||||
if (!pSector) return;
|
||||
else ChangeActorSect(actor, pSector);
|
||||
|
@ -1677,11 +1677,11 @@ void debrisMove(int listIndex)
|
|||
return;
|
||||
}
|
||||
|
||||
if (actor->spr.sector() != pSector)
|
||||
if (actor->sector() != pSector)
|
||||
{
|
||||
assert(pSector);
|
||||
ChangeActorSect(actor, pSector);
|
||||
pSector = actor->spr.sector();
|
||||
pSector = actor->sector();
|
||||
}
|
||||
|
||||
if (pSector->hasX())
|
||||
|
@ -1758,17 +1758,17 @@ void debrisMove(int listIndex)
|
|||
if (floorZ <= bottom) {
|
||||
|
||||
actor->hit.florhit = floorColl;
|
||||
int v30 = actor->vel.Z - actor->spr.sector()->velFloor;
|
||||
int v30 = actor->vel.Z - actor->sector()->velFloor;
|
||||
|
||||
if (v30 > 0)
|
||||
{
|
||||
actor->xspr.physAttr |= kPhysFalling;
|
||||
actFloorBounceVector(&actor->vel.X, &actor->vel.Y, &v30, actor->spr.sector(), tmpFraction);
|
||||
actFloorBounceVector(&actor->vel.X, &actor->vel.Y, &v30, actor->sector(), tmpFraction);
|
||||
actor->vel.Z = v30;
|
||||
|
||||
if (abs(actor->vel.Z) < 0x10000)
|
||||
{
|
||||
actor->vel.Z = actor->spr.sector()->velFloor;
|
||||
actor->vel.Z = actor->sector()->velFloor;
|
||||
actor->xspr.physAttr &= ~kPhysFalling;
|
||||
}
|
||||
|
||||
|
@ -1777,17 +1777,17 @@ void debrisMove(int listIndex)
|
|||
switch (tileGetSurfType(floorColl))
|
||||
{
|
||||
case kSurfLava:
|
||||
if ((pFX = gFX.fxSpawnActor(FX_10, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0)) == NULL) break;
|
||||
if ((pFX = gFX.fxSpawnActor(FX_10, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0)) == NULL) break;
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
if ((pFX2 = gFX.fxSpawnActor(FX_14, pFX->spr.sector(), pFX->spr.pos.X, pFX->spr.pos.Y, pFX->spr.pos.Z, 0)) == NULL) continue;
|
||||
if ((pFX2 = gFX.fxSpawnActor(FX_14, pFX->sector(), pFX->spr.pos.X, pFX->spr.pos.Y, pFX->spr.pos.Z, 0)) == NULL) continue;
|
||||
pFX2->vel.X = Random2(0x6aaaa);
|
||||
pFX2->vel.Y = Random2(0x6aaaa);
|
||||
pFX2->vel.Z = -(int)Random(0xd5555);
|
||||
}
|
||||
break;
|
||||
case kSurfWater:
|
||||
gFX.fxSpawnActor(FX_9, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0);
|
||||
gFX.fxSpawnActor(FX_9, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, floorZ, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1861,7 +1861,7 @@ bool ceilIsTooLow(DBloodActor* actor)
|
|||
{
|
||||
if (actor != nullptr)
|
||||
{
|
||||
sectortype* pSector = actor->spr.sector();
|
||||
sectortype* pSector = actor->sector();
|
||||
int a = pSector->ceilingz - pSector->floorz;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
|
@ -1899,9 +1899,9 @@ void aiSetGenIdleState(DBloodActor* actor)
|
|||
|
||||
void windGenStopWindOnSectors(DBloodActor* sourceactor)
|
||||
{
|
||||
if (sourceactor->xspr.txID <= 0 && sourceactor->spr.sector()->hasX())
|
||||
if (sourceactor->xspr.txID <= 0 && sourceactor->sector()->hasX())
|
||||
{
|
||||
sourceactor->spr.sector()->xs().windVel = 0;
|
||||
sourceactor->sector()->xs().windVel = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2933,11 +2933,11 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
|
|||
void useTeleportTarget(DBloodActor* sourceactor, DBloodActor* actor)
|
||||
{
|
||||
PLAYER* pPlayer = getPlayerById(actor->spr.type);
|
||||
XSECTOR* pXSector = (sourceactor->spr.sector()->hasX()) ? &sourceactor->spr.sector()->xs() : nullptr;
|
||||
XSECTOR* pXSector = (sourceactor->sector()->hasX()) ? &sourceactor->sector()->xs() : nullptr;
|
||||
bool isDude = (!pPlayer && actor->IsDudeActor());
|
||||
|
||||
if (actor->spr.sector() != sourceactor->spr.sector())
|
||||
ChangeActorSect(actor, sourceactor->spr.sector());
|
||||
if (actor->sector() != sourceactor->sector())
|
||||
ChangeActorSect(actor, sourceactor->sector());
|
||||
|
||||
actor->spr.pos.X = sourceactor->spr.pos.X; actor->spr.pos.Y = sourceactor->spr.pos.Y;
|
||||
int zTop, zBot;
|
||||
|
@ -2947,7 +2947,7 @@ void useTeleportTarget(DBloodActor* sourceactor, DBloodActor* actor)
|
|||
clampSprite(actor, 0x01);
|
||||
|
||||
if (sourceactor->spr.flags & kModernTypeFlag1) // force telefrag
|
||||
TeleFrag(actor, sourceactor->spr.sector());
|
||||
TeleFrag(actor, sourceactor->sector());
|
||||
|
||||
if (actor->spr.flags & kPhysGravity)
|
||||
actor->spr.flags |= kPhysFalling;
|
||||
|
@ -2956,12 +2956,12 @@ void useTeleportTarget(DBloodActor* sourceactor, DBloodActor* actor)
|
|||
{
|
||||
|
||||
if (pXSector->Enter && (pPlayer || (isDude && !pXSector->dudeLockout)))
|
||||
trTriggerSector(sourceactor->spr.sector(), kCmdSectorEnter);
|
||||
trTriggerSector(sourceactor->sector(), kCmdSectorEnter);
|
||||
|
||||
if (pXSector->Underwater)
|
||||
{
|
||||
DBloodActor* aUpper = nullptr;
|
||||
auto aLink = barrier_cast<DBloodActor*>(sourceactor->spr.sector()->lowerLink);
|
||||
auto aLink = barrier_cast<DBloodActor*>(sourceactor->sector()->lowerLink);
|
||||
if (aLink)
|
||||
{
|
||||
// must be sure we found exact same upper link
|
||||
|
@ -3095,14 +3095,14 @@ void useEffectGen(DBloodActor* sourceactor, DBloodActor* actor)
|
|||
case 3:
|
||||
case 4:
|
||||
if (!actor->insector()) pos = top;
|
||||
else pos = (sourceactor->xspr.data4 == 3) ? actor->spr.sector()->floorz : actor->spr.sector()->ceilingz;
|
||||
else pos = (sourceactor->xspr.data4 == 3) ? actor->sector()->floorz : actor->sector()->ceilingz;
|
||||
break;
|
||||
default:
|
||||
pos = top;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((pEffect = gFX.fxSpawnActor((FX_ID)fxId, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, pos, 0)) != NULL)
|
||||
if ((pEffect = gFX.fxSpawnActor((FX_ID)fxId, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, pos, 0)) != NULL)
|
||||
{
|
||||
pEffect->SetOwner(sourceactor);
|
||||
|
||||
|
@ -3143,14 +3143,14 @@ void useSectorWindGen(DBloodActor* sourceactor, sectortype* pSector)
|
|||
{
|
||||
pXSector = &pSector->xs();
|
||||
}
|
||||
else if (sourceactor->spr.sector()->hasX())
|
||||
else if (sourceactor->sector()->hasX())
|
||||
{
|
||||
pSector = sourceactor->spr.sector();
|
||||
pSector = sourceactor->sector();
|
||||
pXSector = &pSector->xs();
|
||||
}
|
||||
else
|
||||
{
|
||||
pSector = sourceactor->spr.sector();
|
||||
pSector = sourceactor->sector();
|
||||
pSector->allocX();
|
||||
pXSector = &pSector->xs();
|
||||
pXSector->windAlways = 1;
|
||||
|
@ -3244,7 +3244,7 @@ void useSectorWindGen(DBloodActor* sourceactor, sectortype* pSector)
|
|||
|
||||
void useSpriteDamager(DBloodActor* sourceactor, int objType, sectortype* targSect, DBloodActor* targetactor)
|
||||
{
|
||||
sectortype* pSector = sourceactor->spr.sector();
|
||||
sectortype* pSector = sourceactor->sector();
|
||||
|
||||
int top, bottom;
|
||||
bool floor, ceil, wall, enter;
|
||||
|
@ -3502,7 +3502,7 @@ void useSeqSpawnerGen(DBloodActor* sourceactor, int objType, sectortype* pSector
|
|||
{
|
||||
if (sourceactor->xspr.data3 > 0)
|
||||
{
|
||||
auto spawned = InsertSprite(iactor->spr.sector(), kStatDecoration);
|
||||
auto spawned = InsertSprite(iactor->sector(), kStatDecoration);
|
||||
int top, bottom; GetActorExtents(spawned, &top, &bottom);
|
||||
spawned->spr.pos.X = iactor->spr.pos.X;
|
||||
spawned->spr.pos.Y = iactor->spr.pos.Y;
|
||||
|
@ -4187,7 +4187,7 @@ bool condCheckDude(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
var = cansee(objActor->spr.pos.X, objActor->spr.pos.Y, objActor->spr.pos.Z, objActor->spr.sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - eyeAboveZ, targ->spr.sector());
|
||||
var = cansee(objActor->spr.pos.X, objActor->spr.pos.Y, objActor->spr.pos.Z, objActor->sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - eyeAboveZ, targ->sector());
|
||||
if (cond == 4 && var > 0)
|
||||
{
|
||||
var = ((1024 + getangle(dx, dy) - objActor->spr.ang) & 2047) - 1024;
|
||||
|
@ -4324,7 +4324,7 @@ bool condCheckSprite(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
return true;
|
||||
case 20: // stays in a sector?
|
||||
if (!objActor->insector()) return false;
|
||||
else if (PUSH) condPush(aCond, objActor->spr.sector());
|
||||
else if (PUSH) condPush(aCond, objActor->sector());
|
||||
return true;
|
||||
case 25:
|
||||
switch (arg1)
|
||||
|
@ -4337,7 +4337,7 @@ bool condCheckSprite(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
break;
|
||||
case 30:
|
||||
if (!spriteIsUnderwater(objActor) && !spriteIsUnderwater(objActor, true)) return false;
|
||||
else if (PUSH) condPush(aCond, objActor->spr.sector());
|
||||
else if (PUSH) condPush(aCond, objActor->sector());
|
||||
return true;
|
||||
case 31:
|
||||
if (arg1 == -1)
|
||||
|
@ -4874,7 +4874,7 @@ bool aiFightDudeCanSeeTarget(DBloodActor* dudeactor, DUDEINFO* pDudeInfo, DBlood
|
|||
int eyeAboveZ = pDudeInfo->eyeHeight * dudeactor->spr.yrepeat << 2;
|
||||
|
||||
// is there a line of sight to the target?
|
||||
if (cansee(dudeactor->spr.pos.X, dudeactor->spr.pos.Y, dudeactor->spr.pos.Z, dudeactor->spr.sector(), targetactor->spr.pos.X, targetactor->spr.pos.Y, targetactor->spr.pos.Z - eyeAboveZ, targetactor->spr.sector()))
|
||||
if (cansee(dudeactor->spr.pos.X, dudeactor->spr.pos.Y, dudeactor->spr.pos.Z, dudeactor->sector(), targetactor->spr.pos.X, targetactor->spr.pos.Y, targetactor->spr.pos.Z - eyeAboveZ, targetactor->sector()))
|
||||
{
|
||||
/*int nAngle = getangle(dx, dy);
|
||||
int losAngle = ((1024 + nAngle - dudeactor->spr.ang) & 2047) - 1024;
|
||||
|
@ -5454,7 +5454,7 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event)
|
|||
[[fallthrough]];
|
||||
case kCmdRepeat:
|
||||
if (actor->xspr.txID > 0) modernTypeSendCommand(actor, actor->xspr.txID, (COMMAND_ID)actor->xspr.command);
|
||||
else if (actor->xspr.data1 == 0 && actor->insector()) useSpriteDamager(actor, OBJ_SECTOR, actor->spr.sector(), nullptr);
|
||||
else if (actor->xspr.data1 == 0 && actor->insector()) useSpriteDamager(actor, OBJ_SECTOR, actor->sector(), nullptr);
|
||||
else if (actor->xspr.data1 >= 666 && actor->xspr.data1 < 669) useSpriteDamager(actor, -1, nullptr, nullptr);
|
||||
else
|
||||
{
|
||||
|
@ -6112,7 +6112,7 @@ void useRandomItemGen(DBloodActor* actor)
|
|||
{
|
||||
if ((unsigned int)iactor->spr.type == actor->xspr.dropMsg && iactor->spr.pos.X == actor->spr.pos.X && iactor->spr.pos.Y == actor->spr.pos.Y && iactor->spr.pos.Z == actor->spr.pos.Z)
|
||||
{
|
||||
gFX.fxSpawnActor((FX_ID)29, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
gFX.fxSpawnActor((FX_ID)29, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, 0);
|
||||
iactor->spr.type = kSpriteDecoration;
|
||||
actPostSprite(iactor, kStatFree);
|
||||
break;
|
||||
|
@ -6328,12 +6328,12 @@ void sprite2sectorSlope(DBloodActor* actor, sectortype* pSector, char rel, bool
|
|||
int slope = 0, z = 0;
|
||||
switch (rel) {
|
||||
default:
|
||||
z = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
z = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR) && actor->hasX() && actor->xspr.Touch) z--;
|
||||
slope = pSector->floorheinum;
|
||||
break;
|
||||
case 1:
|
||||
z = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
z = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR) && actor->hasX() && actor->xspr.Touch) z++;
|
||||
slope = pSector->ceilingheinum;
|
||||
break;
|
||||
|
@ -6465,11 +6465,11 @@ void useSlopeChanger(DBloodActor* sourceactor, int objType, sectortype* pSect, D
|
|||
if (!objActor->insector()) break;
|
||||
switch (sourceactor->xspr.data4)
|
||||
{
|
||||
case 1: sprite2sectorSlope(objActor, objActor->spr.sector(), 0, flag2); break;
|
||||
case 2: sprite2sectorSlope(objActor, objActor->spr.sector(), 1, flag2); break;
|
||||
case 1: sprite2sectorSlope(objActor, objActor->sector(), 0, flag2); break;
|
||||
case 2: sprite2sectorSlope(objActor, objActor->sector(), 1, flag2); break;
|
||||
case 3:
|
||||
if (getflorzofslopeptr(objActor->spr.sector(), objActor->spr.pos.X, objActor->spr.pos.Y) - kSlopeDist <= objActor->spr.pos.Z) sprite2sectorSlope(objActor, objActor->spr.sector(), 0, flag2);
|
||||
if (getceilzofslopeptr(objActor->spr.sector(), objActor->spr.pos.X, objActor->spr.pos.Y) + kSlopeDist >= objActor->spr.pos.Z) sprite2sectorSlope(objActor, objActor->spr.sector(), 1, flag2);
|
||||
if (getflorzofslopeptr(objActor->sector(), objActor->spr.pos.X, objActor->spr.pos.Y) - kSlopeDist <= objActor->spr.pos.Z) sprite2sectorSlope(objActor, objActor->sector(), 0, flag2);
|
||||
if (getceilzofslopeptr(objActor->sector(), objActor->spr.pos.X, objActor->spr.pos.Y) + kSlopeDist >= objActor->spr.pos.Z) sprite2sectorSlope(objActor, objActor->sector(), 1, flag2);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -7311,7 +7311,7 @@ bool setDataValueOfObject(int objType, sectortype* sect, walltype* wal, DBloodAc
|
|||
bool nnExtCanMove(DBloodActor* actor, DBloodActor* target, int nAngle, int nRange)
|
||||
{
|
||||
int x = actor->spr.pos.X, y = actor->spr.pos.Y, z = actor->spr.pos.Z;
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
HitScan(actor, z, Cos(nAngle) >> 16, Sin(nAngle) >> 16, 0, CLIPMASK0, nRange);
|
||||
int nDist = approxDist(x - gHitInfo.hitpos.X, y - gHitInfo.hitpos.Y);
|
||||
if (target != nullptr && nDist - (actor->spr.clipdist << 2) < nRange)
|
||||
|
@ -7604,7 +7604,7 @@ void aiPatrolSetMarker(DBloodActor* actor)
|
|||
continue;
|
||||
|
||||
GetActorExtents(nextactor, &zt1, &zb1);
|
||||
if (cansee(nextactor->spr.pos.X, nextactor->spr.pos.Y, zt1, nextactor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, zt2, actor->spr.sector()))
|
||||
if (cansee(nextactor->spr.pos.X, nextactor->spr.pos.Y, zt1, nextactor->sector(), actor->spr.pos.X, actor->spr.pos.Y, zt2, actor->sector()))
|
||||
{
|
||||
closest = dist;
|
||||
selected = nextactor;
|
||||
|
@ -7863,10 +7863,10 @@ void aiPatrolAlarmLite(DBloodActor* actor, DBloodActor* targetactor)
|
|||
|
||||
int eaz2 = (getDudeInfo(targetactor->spr.type)->eyeHeight * targetactor->spr.yrepeat) << 2;
|
||||
int nDist = approxDist(dudeactor->spr.pos.X - actor->spr.pos.X, dudeactor->spr.pos.Y - actor->spr.pos.Y);
|
||||
if (nDist >= kPatrolAlarmSeeDist || !cansee(actor->spr.pos.X, actor->spr.pos.Y, zt1, actor->spr.sector(), dudeactor->spr.pos.X, dudeactor->spr.pos.Y, dudeactor->spr.pos.Z - eaz2, dudeactor->spr.sector()))
|
||||
if (nDist >= kPatrolAlarmSeeDist || !cansee(actor->spr.pos.X, actor->spr.pos.Y, zt1, actor->sector(), dudeactor->spr.pos.X, dudeactor->spr.pos.Y, dudeactor->spr.pos.Z - eaz2, dudeactor->sector()))
|
||||
{
|
||||
nDist = approxDist(dudeactor->spr.pos.X - targetactor->spr.pos.X, dudeactor->spr.pos.Y - targetactor->spr.pos.Y);
|
||||
if (nDist >= kPatrolAlarmSeeDist || !cansee(targetactor->spr.pos.X, targetactor->spr.pos.Y, zt2, targetactor->spr.sector(), dudeactor->spr.pos.X, dudeactor->spr.pos.Y, dudeactor->spr.pos.Z - eaz2, dudeactor->spr.sector()))
|
||||
if (nDist >= kPatrolAlarmSeeDist || !cansee(targetactor->spr.pos.X, targetactor->spr.pos.Y, zt2, targetactor->sector(), dudeactor->spr.pos.X, dudeactor->spr.pos.Y, dudeactor->spr.pos.Z - eaz2, dudeactor->sector()))
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -7896,13 +7896,13 @@ void aiPatrolAlarmFull(DBloodActor* actor, DBloodActor* targetactor, bool chain)
|
|||
int eaz2 = (getDudeInfo(actor->spr.type)->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
int x2 = actor->spr.pos.X, y2 = actor->spr.pos.Y, z2 = actor->spr.pos.Z - eaz2;
|
||||
|
||||
auto pSect2 = actor->spr.sector();
|
||||
auto pSect2 = actor->sector();
|
||||
|
||||
int tzt, tzb;
|
||||
GetActorExtents(targetactor, &tzt, &tzb);
|
||||
int x3 = targetactor->spr.pos.X, y3 = targetactor->spr.pos.Y, z3 = tzt;
|
||||
|
||||
auto pSect3 = targetactor->spr.sector();
|
||||
auto pSect3 = targetactor->sector();
|
||||
|
||||
BloodStatIterator it(kStatDude);
|
||||
while (auto dudeactor = it.Next())
|
||||
|
@ -7916,7 +7916,7 @@ void aiPatrolAlarmFull(DBloodActor* actor, DBloodActor* targetactor, bool chain)
|
|||
int eaz1 = (getDudeInfo(dudeactor->spr.type)->eyeHeight * dudeactor->spr.yrepeat) << 2;
|
||||
int x1 = dudeactor->spr.pos.X, y1 = dudeactor->spr.pos.Y, z1 = dudeactor->spr.pos.Z - eaz1;
|
||||
|
||||
auto pSect1 = dudeactor->spr.sector();
|
||||
auto pSect1 = dudeactor->sector();
|
||||
|
||||
int nDist1 = approxDist(x1 - x2, y1 - y2);
|
||||
int nDist2 = approxDist(x1 - x3, y1 - y3);
|
||||
|
@ -8047,7 +8047,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
{
|
||||
eyeAboveZ = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
if (nDist < seeDist >> 3) GetActorExtents(pPlayer->actor, &z, &j); //use ztop of the target sprite
|
||||
if (!cansee(x, y, z, plActor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - eyeAboveZ, actor->spr.sector()))
|
||||
if (!cansee(x, y, z, plActor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - eyeAboveZ, actor->sector()))
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
@ -8081,7 +8081,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
{
|
||||
|
||||
if (!emitterActor->insector()) return false;
|
||||
searchsect = emitterActor->spr.sector();
|
||||
searchsect = emitterActor->sector();
|
||||
}
|
||||
}
|
||||
else if (chan->SourceType == SOURCE_Unattached)
|
||||
|
@ -8230,7 +8230,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
continue;
|
||||
|
||||
}
|
||||
else if (plActor->spr.sector() != steal->spr.sector())
|
||||
else if (plActor->sector() != steal->sector())
|
||||
continue;
|
||||
|
||||
if (crouch && pPlayer->posture == kPostureStand)
|
||||
|
@ -8245,7 +8245,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
continue;
|
||||
|
||||
}
|
||||
else if (plActor->spr.sector() != steal->spr.sector())
|
||||
else if (plActor->sector() != steal->sector())
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -8864,9 +8864,9 @@ void clampSprite(DBloodActor* actor, int which)
|
|||
{
|
||||
GetActorExtents(actor, &zTop, &zBot);
|
||||
if (which & 0x01)
|
||||
actor->spr.pos.Z += ClipHigh(getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y) - zBot, 0);
|
||||
actor->spr.pos.Z += ClipHigh(getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y) - zBot, 0);
|
||||
if (which & 0x02)
|
||||
actor->spr.pos.Z += ClipLow(getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y) - zTop, 0);
|
||||
actor->spr.pos.Z += ClipLow(getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y) - zTop, 0);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -894,7 +894,7 @@ void playerStart(int nPlayer, int bNewLevel)
|
|||
{
|
||||
viewInitializePrediction();
|
||||
}
|
||||
if (IsUnderwaterSector(actor->spr.sector()))
|
||||
if (IsUnderwaterSector(actor->sector()))
|
||||
{
|
||||
pPlayer->posture = 1;
|
||||
pPlayer->actor->xspr.medium = kMediumWater;
|
||||
|
@ -1235,7 +1235,7 @@ bool PickupItem(PLAYER* pPlayer, DBloodActor* itemactor)
|
|||
return 1;
|
||||
}
|
||||
|
||||
sfxPlay3DSound(plActor->spr.pos.X, plActor->spr.pos.Y, plActor->spr.pos.Z, pickupSnd, plActor->spr.sector());
|
||||
sfxPlay3DSound(plActor->spr.pos.X, plActor->spr.pos.Y, plActor->spr.pos.Z, pickupSnd, plActor->sector());
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1371,7 +1371,7 @@ void CheckPickUp(PLAYER* pPlayer)
|
|||
int x = plActor->spr.pos.X;
|
||||
int y = plActor->spr.pos.Y;
|
||||
int z = plActor->spr.pos.Z;
|
||||
auto pSector = plActor->spr.sector();
|
||||
auto pSector = plActor->sector();
|
||||
BloodStatIterator it(kStatItem);
|
||||
while (auto itemactor = it.Next())
|
||||
{
|
||||
|
@ -1395,9 +1395,9 @@ void CheckPickUp(PLAYER* pPlayer)
|
|||
if (approxDist(dx, dy) > 48)
|
||||
continue;
|
||||
GetActorExtents(itemactor, &top, &bottom);
|
||||
if (cansee(x, y, z, pSector, itemactor->spr.pos.X, itemactor->spr.pos.Y, itemactor->spr.pos.Z, itemactor->spr.sector())
|
||||
|| cansee(x, y, z, pSector, itemactor->spr.pos.X, itemactor->spr.pos.Y, top, itemactor->spr.sector())
|
||||
|| cansee(x, y, z, pSector, itemactor->spr.pos.X, itemactor->spr.pos.Y, bottom, itemactor->spr.sector()))
|
||||
if (cansee(x, y, z, pSector, itemactor->spr.pos.X, itemactor->spr.pos.Y, itemactor->spr.pos.Z, itemactor->sector())
|
||||
|| cansee(x, y, z, pSector, itemactor->spr.pos.X, itemactor->spr.pos.Y, top, itemactor->sector())
|
||||
|| cansee(x, y, z, pSector, itemactor->spr.pos.X, itemactor->spr.pos.Y, bottom, itemactor->sector()))
|
||||
PickUp(pPlayer, itemactor);
|
||||
}
|
||||
}
|
||||
|
@ -1481,8 +1481,8 @@ int ActionScan(PLAYER* pPlayer, HitInfo* out)
|
|||
}
|
||||
}
|
||||
}
|
||||
out->hitSector = plActor->spr.sector();
|
||||
if (plActor->spr.sector()->hasX() && plActor->spr.sector()->xs().Push)
|
||||
out->hitSector = plActor->sector();
|
||||
if (plActor->sector()->hasX() && plActor->sector()->xs().Push)
|
||||
return 6;
|
||||
return -1;
|
||||
}
|
||||
|
@ -1509,7 +1509,7 @@ void doslopetilting(PLAYER* pPlayer, double const scaleAdjust = 1)
|
|||
auto plActor = pPlayer->actor;
|
||||
int const florhit = pPlayer->actor->hit.florhit.type;
|
||||
bool const va = plActor->xspr.height < 16 && (florhit == kHitSector || florhit == 0) ? 1 : 0;
|
||||
pPlayer->horizon.calcviewpitch(plActor->spr.pos.vec2, buildang(plActor->spr.ang), va, plActor->spr.sector()->floorstat & CSTAT_SECTOR_SLOPE, plActor->spr.sector(), scaleAdjust);
|
||||
pPlayer->horizon.calcviewpitch(plActor->spr.pos.vec2, buildang(plActor->spr.ang), va, plActor->sector()->floorstat & CSTAT_SECTOR_SLOPE, plActor->sector(), scaleAdjust);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -1842,14 +1842,14 @@ void playerProcess(PLAYER* pPlayer)
|
|||
int dw = actor->spr.clipdist << 2;
|
||||
if (!gNoClip)
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
if (pushmove(&actor->spr.pos, &pSector, dw, dzt, dzb, CLIPMASK0) == -1)
|
||||
actDamageSprite(actor, actor, kDamageFall, 500 << 4);
|
||||
if (actor->spr.sector() != pSector)
|
||||
if (actor->sector() != pSector)
|
||||
{
|
||||
if (pSector == nullptr)
|
||||
{
|
||||
pSector = actor->spr.sector();
|
||||
pSector = actor->sector();
|
||||
actDamageSprite(actor, actor, kDamageFall, 500 << 4);
|
||||
}
|
||||
else
|
||||
|
@ -1921,10 +1921,10 @@ void playerProcess(PLAYER* pPlayer)
|
|||
if (pPlayer->posture == 1)
|
||||
{
|
||||
pPlayer->isUnderwater = 1;
|
||||
auto link = actor->spr.sector()->lowerLink;
|
||||
auto link = actor->sector()->lowerLink;
|
||||
if (link && (link->spr.type == kMarkerLowGoo || link->spr.type == kMarkerLowWater))
|
||||
{
|
||||
if (getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y) > pPlayer->zView)
|
||||
if (getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y) > pPlayer->zView)
|
||||
pPlayer->isUnderwater = 0;
|
||||
}
|
||||
}
|
||||
|
@ -2254,8 +2254,8 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage
|
|||
if (nDeathSeqID != 16)
|
||||
{
|
||||
powerupClear(pPlayer);
|
||||
if (pActor->spr.sector()->hasX() && pActor->spr.sector()->xs().Exit)
|
||||
trTriggerSector(pActor->spr.sector(), kCmdSectorExit);
|
||||
if (pActor->sector()->hasX() && pActor->sector()->xs().Exit)
|
||||
trTriggerSector(pActor->sector(), kCmdSectorExit);
|
||||
pActor->spr.flags |= 7;
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
|
|
|
@ -350,8 +350,8 @@ void SEQINST::Update()
|
|||
// by NoOne: add surfaceSound trigger feature
|
||||
if (!VanillaMode() && pSequence->frames[frameIndex].surfaceSound && actor->vel.Z == 0 && actor->vel.X != 0) {
|
||||
|
||||
if (actor->spr.sector()->upperLink) break; // don't play surface sound for stacked sectors
|
||||
int surf = tileGetSurfType(actor->spr.sector()->floorpicnum);
|
||||
if (actor->sector()->upperLink) break; // don't play surface sound for stacked sectors
|
||||
int surf = tileGetSurfType(actor->sector()->floorpicnum);
|
||||
if (!surf) break;
|
||||
static int surfSfxMove[15][4] = {
|
||||
/* {snd1, snd2, gameVolume, myVolume} */
|
||||
|
|
|
@ -269,7 +269,7 @@ void LifeLeechOperate(DBloodActor* actor, EVENT event)
|
|||
int y = target->spr.pos.Y;
|
||||
int z = target->spr.pos.Z;
|
||||
int nDist = approxDist(x - actor->spr.pos.X, y - actor->spr.pos.Y);
|
||||
if (nDist != 0 && cansee(actor->spr.pos.X, actor->spr.pos.Y, top, actor->spr.sector(), x, y, z, target->spr.sector()))
|
||||
if (nDist != 0 && cansee(actor->spr.pos.X, actor->spr.pos.Y, top, actor->sector(), x, y, z, target->sector()))
|
||||
{
|
||||
int t = DivScale(nDist, 0x1aaaaa, 12);
|
||||
x += (target->vel.X * t) >> 12;
|
||||
|
@ -1535,17 +1535,17 @@ void OperateTeleport(sectortype* pSector)
|
|||
pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
|
||||
else
|
||||
pPlayer = NULL;
|
||||
if (bPlayer || !SectorContainsDudes(destactor->spr.sector()))
|
||||
if (bPlayer || !SectorContainsDudes(destactor->sector()))
|
||||
{
|
||||
if (!(gGameOptions.uNetGameFlags & 2))
|
||||
{
|
||||
TeleFrag(pXSector->actordata, destactor->spr.sector());
|
||||
TeleFrag(pXSector->actordata, destactor->sector());
|
||||
}
|
||||
actor->spr.pos.X = destactor->spr.pos.X;
|
||||
actor->spr.pos.Y = destactor->spr.pos.Y;
|
||||
actor->spr.pos.Z += destactor->spr.sector()->floorz - pSector->floorz;
|
||||
actor->spr.pos.Z += destactor->sector()->floorz - pSector->floorz;
|
||||
actor->spr.ang = destactor->spr.ang;
|
||||
ChangeActorSect(actor, destactor->spr.sector());
|
||||
ChangeActorSect(actor, destactor->sector());
|
||||
sfxPlay3DSound(destactor, 201, -1, 0);
|
||||
actor->vel.X = actor->vel.Y = actor->vel.Z = 0;
|
||||
actor->interpolated = false;
|
||||
|
@ -2381,7 +2381,7 @@ void ActivateGenerator(DBloodActor* actor)
|
|||
case kGenDripBlood: {
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
actSpawnThing(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, bottom, (actor->spr.type == kGenDripWater) ? kThingDripWater : kThingDripBlood);
|
||||
actSpawnThing(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, bottom, (actor->spr.type == kGenDripWater) ? kThingDripWater : kThingDripBlood);
|
||||
break;
|
||||
}
|
||||
case kGenSound:
|
||||
|
@ -2406,7 +2406,7 @@ void ActivateGenerator(DBloodActor* actor)
|
|||
case kGenBubbleMulti: {
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
gFX.fxSpawnActor((actor->spr.type == kGenBubble) ? FX_23 : FX_26, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, top, 0);
|
||||
gFX.fxSpawnActor((actor->spr.type == kGenBubble) ? FX_23 : FX_26, actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, top, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -491,7 +491,7 @@ void SetupView(int& cX, int& cY, int& cZ, binangle& cA, fixedhoriz& cH, sectorty
|
|||
{
|
||||
int bobWidth, bobHeight;
|
||||
|
||||
pSector = gView->actor->spr.sector();
|
||||
pSector = gView->actor->sector();
|
||||
#if 0
|
||||
if (numplayers > 1 && gView == gMe && gPrediction && gMe->actor->xspr.health > 0)
|
||||
{
|
||||
|
|
|
@ -86,7 +86,7 @@ void warpInit(TArray<DBloodActor*>& actors)
|
|||
pZone->x = actor->spr.pos.X;
|
||||
pZone->y = actor->spr.pos.Y;
|
||||
pZone->z = actor->spr.pos.Z;
|
||||
pZone->sector = actor->spr.sector();
|
||||
pZone->sector = actor->sector();
|
||||
pZone->ang = actor->spr.ang;
|
||||
}
|
||||
DeleteSprite(actor);
|
||||
|
@ -99,7 +99,7 @@ void warpInit(TArray<DBloodActor*>& actors)
|
|||
pZone->x = actor->spr.pos.X;
|
||||
pZone->y = actor->spr.pos.Y;
|
||||
pZone->z = actor->spr.pos.Z;
|
||||
pZone->sector = actor->spr.sector();
|
||||
pZone->sector = actor->sector();
|
||||
pZone->ang = actor->spr.ang;
|
||||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
|
@ -110,7 +110,7 @@ void warpInit(TArray<DBloodActor*>& actors)
|
|||
pZone->x = actor->spr.pos.X;
|
||||
pZone->y = actor->spr.pos.Y;
|
||||
pZone->z = actor->spr.pos.Z;
|
||||
pZone->sector = actor->spr.sector();
|
||||
pZone->sector = actor->sector();
|
||||
pZone->ang = actor->spr.ang;
|
||||
team1++;
|
||||
|
||||
|
@ -120,7 +120,7 @@ void warpInit(TArray<DBloodActor*>& actors)
|
|||
pZone->x = actor->spr.pos.X;
|
||||
pZone->y = actor->spr.pos.Y;
|
||||
pZone->z = actor->spr.pos.Z;
|
||||
pZone->sector = actor->spr.sector();
|
||||
pZone->sector = actor->sector();
|
||||
pZone->ang = actor->spr.ang;
|
||||
team2++;
|
||||
}
|
||||
|
@ -132,30 +132,30 @@ void warpInit(TArray<DBloodActor*>& actors)
|
|||
}
|
||||
break;
|
||||
case kMarkerUpLink:
|
||||
actor->spr.sector()->upperLink = actor;
|
||||
actor->sector()->upperLink = actor;
|
||||
actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
break;
|
||||
case kMarkerLowLink:
|
||||
actor->spr.sector()->lowerLink = actor;
|
||||
actor->sector()->lowerLink = actor;
|
||||
actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
break;
|
||||
case kMarkerUpWater:
|
||||
case kMarkerUpStack:
|
||||
case kMarkerUpGoo:
|
||||
actor->spr.sector()->upperLink = actor;
|
||||
actor->sector()->upperLink = actor;
|
||||
actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
actor->spr.pos.Z = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->spr.pos.Z = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
break;
|
||||
case kMarkerLowWater:
|
||||
case kMarkerLowStack:
|
||||
case kMarkerLowGoo:
|
||||
actor->spr.sector()->lowerLink = actor;
|
||||
actor->sector()->lowerLink = actor;
|
||||
actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
actor->spr.pos.Z = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->spr.pos.Z = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -203,7 +203,7 @@ void warpInit(TArray<DBloodActor*>& actors)
|
|||
|
||||
int CheckLink(DBloodActor* actor)
|
||||
{
|
||||
auto pSector = actor->spr.sector();
|
||||
auto pSector = actor->sector();
|
||||
auto aUpper = barrier_cast<DBloodActor*>(pSector->upperLink);
|
||||
auto aLower = barrier_cast<DBloodActor*>(pSector->lowerLink);
|
||||
if (aUpper)
|
||||
|
@ -212,20 +212,20 @@ int CheckLink(DBloodActor* actor)
|
|||
if (aUpper->spr.type == kMarkerUpLink)
|
||||
z = aUpper->spr.pos.Z;
|
||||
else
|
||||
z = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
z = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (z <= actor->spr.pos.Z)
|
||||
{
|
||||
aLower = aUpper->GetOwner();
|
||||
assert(aLower);
|
||||
assert(aLower->insector());
|
||||
ChangeActorSect(actor, aLower->spr.sector());
|
||||
ChangeActorSect(actor, aLower->sector());
|
||||
actor->spr.pos.X += aLower->spr.pos.X - aUpper->spr.pos.X;
|
||||
actor->spr.pos.Y += aLower->spr.pos.Y - aUpper->spr.pos.Y;
|
||||
int z2;
|
||||
if (aLower->spr.type == kMarkerLowLink)
|
||||
z2 = aLower->spr.pos.Z;
|
||||
else
|
||||
z2 = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
z2 = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->spr.pos.Z += z2 - z;
|
||||
actor->interpolated = false;
|
||||
return aUpper->spr.type;
|
||||
|
@ -237,20 +237,20 @@ int CheckLink(DBloodActor* actor)
|
|||
if (aLower->spr.type == kMarkerLowLink)
|
||||
z = aLower->spr.pos.Z;
|
||||
else
|
||||
z = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
z = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (z >= actor->spr.pos.Z)
|
||||
{
|
||||
aUpper = aLower->GetOwner();
|
||||
assert(aUpper);
|
||||
assert(aUpper->insector());
|
||||
ChangeActorSect(actor, aUpper->spr.sector());
|
||||
ChangeActorSect(actor, aUpper->sector());
|
||||
actor->spr.pos.X += aUpper->spr.pos.X - aLower->spr.pos.X;
|
||||
actor->spr.pos.Y += aUpper->spr.pos.Y - aLower->spr.pos.Y;
|
||||
int z2;
|
||||
if (aUpper->spr.type == kMarkerUpLink)
|
||||
z2 = aUpper->spr.pos.Z;
|
||||
else
|
||||
z2 = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
z2 = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->spr.pos.Z += z2 - z;
|
||||
actor->interpolated = false;
|
||||
return aLower->spr.type;
|
||||
|
@ -281,7 +281,7 @@ int CheckLink(int* x, int* y, int* z, sectortype** pSector)
|
|||
aLower = aUpper->GetOwner();
|
||||
assert(aLower);
|
||||
assert(aLower->insector());
|
||||
*pSector = aLower->spr.sector();
|
||||
*pSector = aLower->sector();
|
||||
*x += aLower->spr.pos.X - aUpper->spr.pos.X;
|
||||
*y += aLower->spr.pos.Y - aUpper->spr.pos.Y;
|
||||
int z2;
|
||||
|
@ -304,7 +304,7 @@ int CheckLink(int* x, int* y, int* z, sectortype** pSector)
|
|||
{
|
||||
aUpper = aLower->GetOwner();
|
||||
assert(aUpper);
|
||||
*pSector = aUpper->spr.sector();
|
||||
*pSector = aUpper->sector();
|
||||
*x += aUpper->spr.pos.X - aLower->spr.pos.X;
|
||||
*y += aUpper->spr.pos.Y - aLower->spr.pos.Y;
|
||||
int z2;
|
||||
|
|
|
@ -472,7 +472,7 @@ void UpdateAimVector(PLAYER* pPlayer)
|
|||
int angle = getangle(x2 - x, y2 - y);
|
||||
if (abs(((angle - plActor->spr.ang + 1024) & 2047) - 1024) > pWeaponTrack->angleRange)
|
||||
continue;
|
||||
if (pPlayer->aimTargetsCount < 16 && cansee(x, y, z, plActor->spr.sector(), x2, y2, z2, actor->spr.sector()))
|
||||
if (pPlayer->aimTargetsCount < 16 && cansee(x, y, z, plActor->sector(), x2, y2, z2, actor->sector()))
|
||||
pPlayer->aimTargets[pPlayer->aimTargetsCount++] = actor;
|
||||
// Inlined?
|
||||
int dz = (lz - z2) >> 8;
|
||||
|
@ -484,7 +484,7 @@ void UpdateAimVector(PLAYER* pPlayer)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int center = (actor->spr.yrepeat * pDudeInfo->aimHeight) << 2;
|
||||
int dzCenter = (z2 - center) - z;
|
||||
if (cansee(x, y, z, plActor->spr.sector(), x2, y2, z2, actor->spr.sector()))
|
||||
if (cansee(x, y, z, plActor->sector(), x2, y2, z2, actor->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(angle);
|
||||
|
@ -522,7 +522,7 @@ void UpdateAimVector(PLAYER* pPlayer)
|
|||
int angle = getangle(dx, dy);
|
||||
if (abs(((angle - plActor->spr.ang + 1024) & 2047) - 1024) > pWeaponTrack->thingAngle)
|
||||
continue;
|
||||
if (pPlayer->aimTargetsCount < 16 && cansee(x, y, z, plActor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector()))
|
||||
if (pPlayer->aimTargetsCount < 16 && cansee(x, y, z, plActor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector()))
|
||||
pPlayer->aimTargets[pPlayer->aimTargetsCount++] = actor;
|
||||
// Inlined?
|
||||
int dz2 = (lz - z2) >> 8;
|
||||
|
@ -531,7 +531,7 @@ void UpdateAimVector(PLAYER* pPlayer)
|
|||
int nDist2 = ksqrt(dx2 * dx2 + dy2 * dy2 + dz2 * dz2);
|
||||
if (nDist2 >= nClosest)
|
||||
continue;
|
||||
if (cansee(x, y, z, plActor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector()))
|
||||
if (cansee(x, y, z, plActor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector()))
|
||||
{
|
||||
nClosest = nDist2;
|
||||
aim.dx = bcos(angle);
|
||||
|
@ -2996,7 +2996,7 @@ void teslaHit(DBloodActor* missileactor, int a2)
|
|||
int y = missileactor->spr.pos.Y;
|
||||
int z = missileactor->spr.pos.Z;
|
||||
int nDist = 300;
|
||||
auto pSector = missileactor->spr.sector();
|
||||
auto pSector = missileactor->sector();
|
||||
auto owneractor = missileactor->GetOwner();
|
||||
const bool newSectCheckMethod = !cl_bloodvanillaexplosions && !VanillaMode(); // use new sector checking logic
|
||||
auto sectorMap = GetClosestSpriteSectors(pSector, x, y, nDist, nullptr, newSectCheckMethod);
|
||||
|
|
|
@ -66,7 +66,7 @@ void SE40_Draw(int tag, spritetype *spr, int x, int y, int z, binangle a, fixedh
|
|||
act->spr.hitag == floor1->hitag
|
||||
)
|
||||
{
|
||||
auto sect = act->spr.sector();
|
||||
auto sect = act->sector();
|
||||
// repurpose otherwise unused fields in sectortype as temporary storage.
|
||||
if (k == tag + 0)
|
||||
{
|
||||
|
@ -100,7 +100,7 @@ void SE40_Draw(int tag, spritetype *spr, int x, int y, int z, binangle a, fixedh
|
|||
act->spr.hitag == floor1->hitag
|
||||
)
|
||||
{
|
||||
auto sect = act->spr.sector();
|
||||
auto sect = act->sector();
|
||||
if (k == tag + 0)
|
||||
{
|
||||
sect->setfloorz(sect->Flag, true);
|
||||
|
@ -143,7 +143,7 @@ void se40code(int x, int y, int z, binangle a, fixedhoriz h, int smoothratio)
|
|||
case 43:
|
||||
case 44:
|
||||
case 45:
|
||||
if (ps[screenpeek].cursector == act->spr.sector())
|
||||
if (ps[screenpeek].cursector == act->sector())
|
||||
SE40_Draw(tag, &act->spr, x, y, z, a, h, smoothratio);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ void RANDOMSCRAP(DDukeActor* origin)
|
|||
{
|
||||
int r1 = krand(), r2 = krand(), r3 = krand(), r4 = krand(), r5 = krand(), r6 = krand(), r7 = krand();
|
||||
int v = isRR() ? 16 : 48;
|
||||
EGS(origin->spr.sector(),
|
||||
EGS(origin->sector(),
|
||||
origin->spr.pos.X + (r7 & 255) - 128, origin->spr.pos.Y + (r6 & 255) - 128, origin->spr.pos.Z - (8 << 8) - (r5 & 8191),
|
||||
TILE_SCRAP6 + (r4 & 15), -8, v, v, r3 & 2047, (r2 & 63) + 64, -512 - (r1 & 2047), origin, 5);
|
||||
}
|
||||
|
@ -265,7 +265,7 @@ void lotsofstuff(DDukeActor* actor, int n, int spawntype)
|
|||
for (int i = n; i > 0; i--)
|
||||
{
|
||||
int r1 = krand(), r2 = krand(); // using the RANDCORRECT version from RR.
|
||||
auto j = EGS(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (r2 % (47 << 8)), spawntype, -32, 8, 8, r1 & 2047, 0, 0, actor, 5);
|
||||
auto j = EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (r2 % (47 << 8)), spawntype, -32, 8, 8, r1 & 2047, 0, 0, actor, 5);
|
||||
if (j) j->spr.cstat = randomFlip();
|
||||
}
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ void movedummyplayers(void)
|
|||
if (ps[p].on_ground && ps[p].on_warping_sector == 1 && ps[p].cursector->lotag == 1)
|
||||
{
|
||||
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
act->spr.pos.Z = act->spr.sector()->ceilingz + (27 << 8);
|
||||
act->spr.pos.Z = act->sector()->ceilingz + (27 << 8);
|
||||
act->spr.ang = ps[p].angle.ang.asbuild();
|
||||
if (act->temp_data[0] == 8)
|
||||
act->temp_data[0] = 0;
|
||||
|
@ -370,7 +370,7 @@ void movedummyplayers(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (act->spr.sector()->lotag != 2) act->spr.pos.Z = act->spr.sector()->floorz;
|
||||
if (act->sector()->lotag != 2) act->spr.pos.Z = act->sector()->floorz;
|
||||
act->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
}
|
||||
}
|
||||
|
@ -456,7 +456,7 @@ void moveplayers(void)
|
|||
act->SetHitOwner(act);
|
||||
|
||||
if (ud.god == 0)
|
||||
if (fi.ceilingspace(act->spr.sector()) || fi.floorspace(act->spr.sector()))
|
||||
if (fi.ceilingspace(act->sector()) || fi.floorspace(act->sector()))
|
||||
quickkill(p);
|
||||
}
|
||||
else
|
||||
|
@ -496,9 +496,9 @@ void moveplayers(void)
|
|||
else
|
||||
{
|
||||
act->spr.yrepeat = 36;
|
||||
if (act->spr.sector()->lotag != ST_2_UNDERWATER)
|
||||
if (act->sector()->lotag != ST_2_UNDERWATER)
|
||||
makeitfall(act);
|
||||
if (act->spr.zvel == 0 && act->spr.sector()->lotag == ST_1_ABOVE_WATER)
|
||||
if (act->spr.zvel == 0 && act->sector()->lotag == ST_1_ABOVE_WATER)
|
||||
act->spr.pos.Z += (32 << 8);
|
||||
}
|
||||
|
||||
|
@ -518,10 +518,10 @@ void moveplayers(void)
|
|||
|
||||
if (act->insector())
|
||||
{
|
||||
if (act->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade += (act->spr.sector()->ceilingshade - act->spr.shade) >> 1;
|
||||
if (act->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade += (act->sector()->ceilingshade - act->spr.shade) >> 1;
|
||||
else
|
||||
act->spr.shade += (act->spr.sector()->floorshade - act->spr.shade) >> 1;
|
||||
act->spr.shade += (act->sector()->floorshade - act->spr.shade) >> 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -584,7 +584,7 @@ void movefx(void)
|
|||
act->temp_data[0] = 0;
|
||||
}
|
||||
}
|
||||
else if (act->spr.lotag < 999 && (unsigned)act->spr.sector()->lotag < ST_9_SLIDING_ST_DOOR && snd_ambience && act->spr.sector()->floorz != act->spr.sector()->ceilingz)
|
||||
else if (act->spr.lotag < 999 && (unsigned)act->sector()->lotag < ST_9_SLIDING_ST_DOOR && snd_ambience && act->sector()->floorz != act->sector()->ceilingz)
|
||||
{
|
||||
int flags = S_GetUserFlags(act->spr.lotag);
|
||||
if (flags & SF_MSFX)
|
||||
|
@ -608,7 +608,7 @@ void movefx(void)
|
|||
{
|
||||
if (act->temp_data[4] > 0) act->temp_data[4]--;
|
||||
else for (p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
if (p == myconnectindex && ps[p].cursector == act->spr.sector())
|
||||
if (p == myconnectindex && ps[p].cursector == act->sector())
|
||||
{
|
||||
S_PlaySound(act->spr.lotag + (unsigned)global_random % (act->spr.hitag + 1));
|
||||
act->temp_data[4] = 26 * 40 + (global_random % (26 * 40));
|
||||
|
@ -628,7 +628,7 @@ void movefx(void)
|
|||
|
||||
void movecrane(DDukeActor *actor, int crane)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int x;
|
||||
auto& cpt = cranes[actor->temp_data[4]];
|
||||
|
||||
|
@ -665,7 +665,7 @@ void movecrane(DDukeActor *actor, int crane)
|
|||
}
|
||||
//IFMOVING; // JBF 20040825: see my rant above about this
|
||||
ssp(actor, CLIPMASK0);
|
||||
if (actor->spr.sector() == actor->temp_sect)
|
||||
if (actor->sector() == actor->temp_sect)
|
||||
actor->temp_data[0]++;
|
||||
}
|
||||
else if (actor->temp_data[0] == 2 || actor->temp_data[0] == 7)
|
||||
|
@ -803,7 +803,7 @@ void movecrane(DDukeActor *actor, int crane)
|
|||
ps[p].pos.Y = actor->spr.pos.Y - bsin(ang, -6);
|
||||
ps[p].pos.Z = actor->spr.pos.Z + (2 << 8);
|
||||
SetActor(ps[p].GetActor(), ps[p].pos);
|
||||
ps[p].setCursector(ps[p].GetActor()->spr.sector());
|
||||
ps[p].setCursector(ps[p].GetActor()->sector());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -891,7 +891,7 @@ void moveflammable(DDukeActor* actor, int tire, int box, int pool)
|
|||
if (box >= 0 && actor->spr.picnum == box)
|
||||
{
|
||||
makeitfall(actor);
|
||||
actor->ceilingz = actor->spr.sector()->ceilingz;
|
||||
actor->ceilingz = actor->sector()->ceilingz;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -958,7 +958,7 @@ void movemasterswitch(DDukeActor *actor, int spectype1, int spectype2)
|
|||
actor->spr.hitag--;
|
||||
if (actor->spr.hitag <= 0)
|
||||
{
|
||||
operatesectors(actor->spr.sector(), actor);
|
||||
operatesectors(actor->sector(), actor);
|
||||
|
||||
DukeSectIterator it(actor->sector());
|
||||
while (auto effector = it.Next())
|
||||
|
@ -1067,7 +1067,7 @@ void movewaterdrip(DDukeActor *actor, int drip)
|
|||
|
||||
void movedoorshock(DDukeActor* actor)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int j = abs(sectp->ceilingz - sectp->floorz) >> 9;
|
||||
actor->spr.yrepeat = j + 4;
|
||||
actor->spr.xrepeat = 16;
|
||||
|
@ -1082,7 +1082,7 @@ void movedoorshock(DDukeActor* actor)
|
|||
|
||||
void movetouchplate(DDukeActor* actor, int plate)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int x;
|
||||
int p;
|
||||
|
||||
|
@ -1100,7 +1100,7 @@ void movetouchplate(DDukeActor* actor, int plate)
|
|||
else
|
||||
{
|
||||
sectp->addfloorz(sectp->extra);
|
||||
p = checkcursectnums(actor->spr.sector());
|
||||
p = checkcursectnums(actor->sector());
|
||||
if (p >= 0) ps[p].pos.Z += sectp->extra;
|
||||
}
|
||||
}
|
||||
|
@ -1114,7 +1114,7 @@ void movetouchplate(DDukeActor* actor, int plate)
|
|||
else
|
||||
{
|
||||
sectp->addfloorz(-sectp->extra);
|
||||
p = checkcursectnums(actor->spr.sector());
|
||||
p = checkcursectnums(actor->sector());
|
||||
if (p >= 0)
|
||||
ps[p].pos.Z -= sectp->extra;
|
||||
}
|
||||
|
@ -1124,7 +1124,7 @@ void movetouchplate(DDukeActor* actor, int plate)
|
|||
|
||||
if (actor->temp_data[5] == 1) return;
|
||||
|
||||
p = checkcursectnums(actor->spr.sector());
|
||||
p = checkcursectnums(actor->sector());
|
||||
if (p >= 0 && (ps[p].on_ground || actor->spr.ang == 512))
|
||||
{
|
||||
if (actor->temp_data[0] == 0 && !check_activator_motion(actor->spr.lotag))
|
||||
|
@ -1267,7 +1267,7 @@ void bounce(DDukeActor* actor)
|
|||
int yvect = MulScale(actor->spr.xvel, bsin(actor->spr.ang), 10);
|
||||
int zvect = actor->spr.zvel;
|
||||
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
int daang = getangle(sectp->firstWall()->delta());
|
||||
|
||||
|
@ -1329,7 +1329,7 @@ void movetongue(DDukeActor *actor, int tongue, int jaw)
|
|||
actor->spr.pos.Z = Owner->spr.pos.Z - (34 << 8);
|
||||
for (int k = 0; k < actor->temp_data[0]; k++)
|
||||
{
|
||||
auto q = EGS(actor->spr.sector(),
|
||||
auto q = EGS(actor->sector(),
|
||||
actor->spr.pos.X + MulScale(k, bcos(actor->spr.ang), 9),
|
||||
actor->spr.pos.Y + MulScale(k, bsin(actor->spr.ang), 9),
|
||||
actor->spr.pos.Z + ((k * Sgn(actor->spr.zvel)) * abs(actor->spr.zvel / 12)), tongue, -40 + (k << 1),
|
||||
|
@ -1341,7 +1341,7 @@ void movetongue(DDukeActor *actor, int tongue, int jaw)
|
|||
}
|
||||
}
|
||||
int k = actor->temp_data[0]; // do not depend on the above loop counter.
|
||||
auto spawned = EGS(actor->spr.sector(),
|
||||
auto spawned = EGS(actor->sector(),
|
||||
actor->spr.pos.X + MulScale(k, bcos(actor->spr.ang), 9),
|
||||
actor->spr.pos.Y + MulScale(k, bsin(actor->spr.ang), 9),
|
||||
actor->spr.pos.Z + ((k * Sgn(actor->spr.zvel)) * abs(actor->spr.zvel / 12)), jaw, -40,
|
||||
|
@ -1469,7 +1469,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball)
|
|||
}
|
||||
|
||||
Collision coll;
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
int j = clipmove(actor->spr.pos, §,
|
||||
(MulScale(actor->spr.xvel, bcos(actor->spr.ang), 14) * TICSPERFRAME) << 11,
|
||||
(MulScale(actor->spr.xvel, bsin(actor->spr.ang), 14) * TICSPERFRAME) << 11,
|
||||
|
@ -1533,7 +1533,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball)
|
|||
}
|
||||
}
|
||||
}
|
||||
if (x < 512 && actor->spr.sector() == ps[p].cursector)
|
||||
if (x < 512 && actor->sector() == ps[p].cursector)
|
||||
{
|
||||
actor->spr.ang = getangle(actor->spr.pos.X - ps[p].pos.X, actor->spr.pos.Y - ps[p].pos.Y);
|
||||
actor->spr.xvel = 48;
|
||||
|
@ -1550,7 +1550,7 @@ bool queball(DDukeActor *actor, int pocket, int queball, int stripeball)
|
|||
|
||||
void forcesphere(DDukeActor* actor, int forcesphere)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
if (actor->spr.yvel == 0)
|
||||
{
|
||||
actor->spr.yvel = 1;
|
||||
|
@ -1605,7 +1605,7 @@ void forcesphere(DDukeActor* actor, int forcesphere)
|
|||
|
||||
void recon(DDukeActor *actor, int explosion, int firelaser, int attacksnd, int painsnd, int roamsnd, int shift, int (*getspawn)(DDukeActor* i))
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int a;
|
||||
|
||||
getglobalz(actor);
|
||||
|
@ -1681,7 +1681,7 @@ void recon(DDukeActor *actor, int explosion, int firelaser, int attacksnd, int p
|
|||
fi.shoot(actor, firelaser);
|
||||
actor->spr.ang = a;
|
||||
}
|
||||
if (actor->temp_data[2] > (26 * 3) || !cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (16 << 8), actor->spr.sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
if (actor->temp_data[2] > (26 * 3) || !cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (16 << 8), actor->sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
{
|
||||
actor->temp_data[0] = 0;
|
||||
actor->temp_data[2] = 0;
|
||||
|
@ -1704,7 +1704,7 @@ void recon(DDukeActor *actor, int explosion, int firelaser, int attacksnd, int p
|
|||
else
|
||||
{
|
||||
actor->temp_data[2]++;
|
||||
if (actor->temp_data[2] > (26 * 3) || !cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (16 << 8), actor->spr.sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
if (actor->temp_data[2] > (26 * 3) || !cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (16 << 8), actor->sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
{
|
||||
actor->temp_data[0] = 1;
|
||||
actor->temp_data[2] = 0;
|
||||
|
@ -1818,7 +1818,7 @@ void ooz(DDukeActor *actor)
|
|||
|
||||
void reactor(DDukeActor* const actor, int REACTOR, int REACTOR2, int REACTORBURNT, int REACTOR2BURNT, int REACTORSPARK, int REACTOR2SPARK)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
if (actor->temp_data[4] == 1)
|
||||
{
|
||||
|
@ -2118,7 +2118,7 @@ void frameeffect1(DDukeActor *actor)
|
|||
|
||||
bool money(DDukeActor* actor, int BLOODPOOL)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
actor->spr.xvel = (krand() & 7) + bsin(actor->temp_data[0], -9);
|
||||
actor->temp_data[0] += (krand() & 63);
|
||||
|
@ -2144,7 +2144,7 @@ bool money(DDukeActor* actor, int BLOODPOOL)
|
|||
deletesprite(actor);
|
||||
return false;
|
||||
}
|
||||
int l = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
int l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
|
||||
if (actor->spr.pos.Z > l)
|
||||
{
|
||||
|
@ -2175,7 +2175,7 @@ bool money(DDukeActor* actor, int BLOODPOOL)
|
|||
|
||||
bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool floorcheck, bool zcheck1, bool zcheck2)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
if (actor->spr.xvel > 0) actor->spr.xvel--;
|
||||
else actor->spr.xvel = 0;
|
||||
|
@ -2194,7 +2194,7 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f
|
|||
if (actor->spr.zvel > 1024 && actor->spr.zvel < 1280)
|
||||
{
|
||||
SetActor(actor, actor->spr.pos);
|
||||
sectp = actor->spr.sector();
|
||||
sectp = actor->sector();
|
||||
}
|
||||
|
||||
if (callsetsprite) SetActor(actor, actor->spr.pos);
|
||||
|
@ -2248,7 +2248,7 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f
|
|||
actor->spr.pos.Y += MulScale(actor->spr.xvel, bsin(actor->spr.ang), 14);
|
||||
actor->spr.pos.Z += actor->spr.zvel;
|
||||
|
||||
if (floorcheck && actor->spr.pos.Z >= actor->spr.sector()->floorz)
|
||||
if (floorcheck && actor->spr.pos.Z >= actor->sector()->floorz)
|
||||
{
|
||||
deletesprite(actor);
|
||||
return false;
|
||||
|
@ -2268,14 +2268,14 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f
|
|||
deletesprite(actor);
|
||||
return false;
|
||||
}
|
||||
if ((actor->spr.sector()->floorstat & CSTAT_SECTOR_SLOPE))
|
||||
if ((actor->sector()->floorstat & CSTAT_SECTOR_SLOPE))
|
||||
{
|
||||
deletesprite(actor);
|
||||
return false;
|
||||
}
|
||||
actor->temp_data[2]++;
|
||||
}
|
||||
l = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
|
||||
actor->spr.pos.Z = l - (2 << 8);
|
||||
actor->spr.xvel = 0;
|
||||
|
@ -2304,7 +2304,7 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f
|
|||
|
||||
bool bloodpool(DDukeActor* actor, bool puke, int TIRE)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
if (actor->temp_data[0] == 0)
|
||||
{
|
||||
|
@ -2388,7 +2388,7 @@ bool bloodpool(DDukeActor* actor, bool puke, int TIRE)
|
|||
|
||||
void shell(DDukeActor* actor, bool morecheck)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
ssp(actor, CLIPMASK0);
|
||||
|
||||
|
@ -2440,7 +2440,7 @@ void shell(DDukeActor* actor, bool morecheck)
|
|||
|
||||
void glasspieces(DDukeActor* actor)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
makeitfall(actor);
|
||||
|
||||
|
@ -2487,7 +2487,7 @@ void glasspieces(DDukeActor* actor)
|
|||
|
||||
void scrap(DDukeActor* actor, int SCRAP1, int SCRAP6)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
if (actor->spr.xvel > 0)
|
||||
actor->spr.xvel--;
|
||||
|
@ -2496,7 +2496,7 @@ void scrap(DDukeActor* actor, int SCRAP1, int SCRAP6)
|
|||
if (actor->spr.zvel > 1024 && actor->spr.zvel < 1280)
|
||||
{
|
||||
SetActor(actor, actor->spr.pos);
|
||||
sectp = actor->spr.sector();
|
||||
sectp = actor->sector();
|
||||
}
|
||||
|
||||
if (actor->spr.pos.Z < sectp->floorz - (2 << 8))
|
||||
|
@ -2568,7 +2568,7 @@ void gutsdir(DDukeActor* actor, int gtype, int n, int p)
|
|||
int r1 = krand();
|
||||
int r2 = krand();
|
||||
// TRANSITIONAL: owned by a player???
|
||||
EGS(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, gutz, gtype, -32, sx, sy, a, 256 + (r2 & 127), -512 - (r1 & 2047), ps[p].GetActor(), 5);
|
||||
EGS(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, gutz, gtype, -32, sx, sy, a, 256 + (r2 & 127), -512 - (r1 & 2047), ps[p].GetActor(), 5);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2605,7 +2605,7 @@ void handle_se00(DDukeActor* actor, int LASERLINE)
|
|||
{
|
||||
actor->tempang += 4;
|
||||
if (actor->tempang >= 256)
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
if (actor->spr.clipdist) l = 1;
|
||||
else l = -1;
|
||||
}
|
||||
|
@ -2633,7 +2633,7 @@ void handle_se00(DDukeActor* actor, int LASERLINE)
|
|||
{
|
||||
actor->tempang -= 4;
|
||||
if (actor->tempang <= 0)
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
if (actor->spr.clipdist) l = -1;
|
||||
else l = 1;
|
||||
}
|
||||
|
@ -2685,7 +2685,7 @@ void handle_se00(DDukeActor* actor, int LASERLINE)
|
|||
int p;
|
||||
for (p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
if (ps[p].cursector == actor->spr.sector() && ps[p].on_ground == 1)
|
||||
if (ps[p].cursector == actor->sector() && ps[p].on_ground == 1)
|
||||
{
|
||||
ps[p].angle.addadjustment(l * q);
|
||||
|
||||
|
@ -2837,11 +2837,11 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
|
|||
{
|
||||
auto k = ps[p].cursector;
|
||||
updatesector(ps[p].pos.X, ps[p].pos.Y, &k);
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->spr.sector() && ps[p].cursector != actor->spr.sector()))
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->sector() && ps[p].cursector != actor->sector()))
|
||||
{
|
||||
ps[p].pos.X = actor->spr.pos.X;
|
||||
ps[p].pos.Y = actor->spr.pos.Y;
|
||||
ps[p].setCursector(actor->spr.sector());
|
||||
ps[p].setCursector(actor->sector());
|
||||
|
||||
SetActor(ps[p].GetActor(), actor->spr.pos);
|
||||
quickkill(&ps[p]);
|
||||
|
@ -2858,13 +2858,13 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
|
|||
auto psp = ps[p].GetActor();
|
||||
if (ps[p].insector() && ps[p].cursector->lotag != 2)
|
||||
{
|
||||
if (po[p].os == actor->spr.sector())
|
||||
if (po[p].os == actor->sector())
|
||||
{
|
||||
po[p].opos.X += m;
|
||||
po[p].opos.Y += x;
|
||||
}
|
||||
|
||||
if (actor->spr.sector() == psp->spr.sector())
|
||||
if (actor->sector() == psp->sector())
|
||||
{
|
||||
rotatepoint(actor->spr.pos.vec2, ps[p].pos.vec2, q, &ps[p].pos.vec2);
|
||||
|
||||
|
@ -2892,7 +2892,7 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
|
|||
DukeSectIterator it(actor->sector());
|
||||
while (auto a2 = it.Next())
|
||||
{
|
||||
if (a2->spr.statnum != 10 && a2->spr.sector()->lotag != 2 && a2->spr.picnum != SECTOREFFECTOR && a2->spr.picnum != LOCATORS)
|
||||
if (a2->spr.statnum != 10 && a2->sector()->lotag != 2 && a2->spr.picnum != SECTOREFFECTOR && a2->spr.picnum != LOCATORS)
|
||||
{
|
||||
rotatepoint(actor->spr.pos.vec2, a2->spr.pos.vec2, q, &a2->spr.pos.vec2);
|
||||
|
||||
|
@ -2920,11 +2920,11 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
|
|||
{
|
||||
auto k = ps[p].cursector;
|
||||
updatesector(ps[p].pos.X, ps[p].pos.Y, &k);
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->spr.sector() && ps[p].cursector != actor->spr.sector()))
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->sector() && ps[p].cursector != actor->sector()))
|
||||
{
|
||||
ps[p].opos.X = ps[p].pos.X = actor->spr.pos.X;
|
||||
ps[p].opos.Y = ps[p].pos.Y = actor->spr.pos.Y;
|
||||
ps[p].setCursector(actor->spr.sector());
|
||||
ps[p].setCursector(actor->sector());
|
||||
|
||||
SetActor(ps[p].GetActor(), actor->spr.pos);
|
||||
quickkill(&ps[p]);
|
||||
|
@ -2940,9 +2940,9 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
|
|||
{
|
||||
if (a2->spr.statnum == 1 && badguy(a2) && a2->spr.picnum != SECTOREFFECTOR && a2->spr.picnum != LOCATORS)
|
||||
{
|
||||
auto k = a2->spr.sector();
|
||||
auto k = a2->sector();
|
||||
updatesector(a2->spr.pos.X, a2->spr.pos.Y, &k);
|
||||
if (a2->spr.extra >= 0 && k == actor->spr.sector())
|
||||
if (a2->spr.extra >= 0 && k == actor->sector())
|
||||
{
|
||||
gutsdir(a2, JIBS6, 72, myconnectindex);
|
||||
S_PlayActorSound(SQUISHED, actor);
|
||||
|
@ -3021,11 +3021,11 @@ void handle_se30(DDukeActor *actor, int JIBS6)
|
|||
{
|
||||
auto k = ps[p].cursector;
|
||||
updatesector(ps[p].pos.X, ps[p].pos.Y, &k);
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->spr.sector() && ps[p].cursector != actor->spr.sector()))
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->sector() && ps[p].cursector != actor->sector()))
|
||||
{
|
||||
ps[p].pos.X = actor->spr.pos.X;
|
||||
ps[p].pos.Y = actor->spr.pos.Y;
|
||||
ps[p].setCursector(actor->spr.sector());
|
||||
ps[p].setCursector(actor->sector());
|
||||
|
||||
SetActor(ps[p].GetActor(), actor->spr.pos);
|
||||
quickkill(&ps[p]);
|
||||
|
@ -3035,7 +3035,7 @@ void handle_se30(DDukeActor *actor, int JIBS6)
|
|||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
auto psp = ps[p].GetActor();
|
||||
if (psp->spr.sector() == actor->spr.sector())
|
||||
if (psp->sector() == actor->sector())
|
||||
{
|
||||
ps[p].pos.X += l;
|
||||
ps[p].pos.Y += x;
|
||||
|
@ -3050,14 +3050,14 @@ void handle_se30(DDukeActor *actor, int JIBS6)
|
|||
ps[p].bobpos.Y += x;
|
||||
}
|
||||
|
||||
if (po[p].os == actor->spr.sector())
|
||||
if (po[p].os == actor->sector())
|
||||
{
|
||||
po[p].opos.X += l;
|
||||
po[p].opos.Y += x;
|
||||
}
|
||||
}
|
||||
|
||||
DukeSectIterator its(actor->spr.sector());
|
||||
DukeSectIterator its(actor->sector());
|
||||
while (auto a2 = its.Next())
|
||||
{
|
||||
if (a2->spr.picnum != SECTOREFFECTOR && a2->spr.picnum != LOCATORS)
|
||||
|
@ -3083,7 +3083,7 @@ void handle_se30(DDukeActor *actor, int JIBS6)
|
|||
{
|
||||
auto k = ps[p].cursector;
|
||||
updatesector(ps[p].pos.X, ps[p].pos.Y, &k);
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->spr.sector() && ps[p].cursector != actor->spr.sector()))
|
||||
if ((k == nullptr && ud.clipping == 0) || (k == actor->sector() && ps[p].cursector != actor->sector()))
|
||||
{
|
||||
ps[p].pos.X = actor->spr.pos.X;
|
||||
ps[p].pos.Y = actor->spr.pos.Y;
|
||||
|
@ -3091,7 +3091,7 @@ void handle_se30(DDukeActor *actor, int JIBS6)
|
|||
ps[p].opos.X = ps[p].pos.X;
|
||||
ps[p].opos.Y = ps[p].pos.Y;
|
||||
|
||||
ps[p].setCursector(actor->spr.sector());
|
||||
ps[p].setCursector(actor->sector());
|
||||
|
||||
SetActor(ps[p].GetActor(), actor->spr.pos);
|
||||
quickkill(&ps[p]);
|
||||
|
@ -3107,9 +3107,9 @@ void handle_se30(DDukeActor *actor, int JIBS6)
|
|||
{
|
||||
// if(a2->spr.sector != actor->spr.sector)
|
||||
{
|
||||
auto k = a2->spr.sector();
|
||||
auto k = a2->sector();
|
||||
updatesector(a2->spr.pos.X, a2->spr.pos.Y, &k);
|
||||
if (a2->spr.extra >= 0 && k == actor->spr.sector())
|
||||
if (a2->spr.extra >= 0 && k == actor->sector())
|
||||
{
|
||||
gutsdir(a2, JIBS6, 24, myconnectindex);
|
||||
S_PlayActorSound(SQUISHED, a2);
|
||||
|
@ -3172,7 +3172,7 @@ void handle_se02(DDukeActor* actor)
|
|||
|
||||
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
if (ps[p].cursector == actor->spr.sector() && ps[p].on_ground)
|
||||
if (ps[p].cursector == actor->sector() && ps[p].on_ground)
|
||||
{
|
||||
ps[p].pos.X += m;
|
||||
ps[p].pos.Y += x;
|
||||
|
@ -3427,7 +3427,7 @@ void handle_se08(DDukeActor *actor, bool checkhitag1)
|
|||
}
|
||||
j = 1;
|
||||
}
|
||||
else j = getanimationgoal(anim_ceilingz, actor->spr.sector());
|
||||
else j = getanimationgoal(anim_ceilingz, actor->sector());
|
||||
|
||||
if (j >= 0)
|
||||
{
|
||||
|
@ -3502,7 +3502,7 @@ void handle_se10(DDukeActor* actor, const int* specialtags)
|
|||
if ((sc->lotag & 0xff) != 27)
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
if (sc->lotag != 30 && sc->lotag != 31 && sc->lotag != 0)
|
||||
if (actor->spr.sector() == ps[p].GetActor()->spr.sector())
|
||||
if (actor->sector() == ps[p].GetActor()->sector())
|
||||
j = 0;
|
||||
|
||||
if (j == 1)
|
||||
|
@ -3511,12 +3511,12 @@ void handle_se10(DDukeActor* actor, const int* specialtags)
|
|||
{
|
||||
if (specialtags) for (int i = 0; specialtags[i]; i++)
|
||||
{
|
||||
if (actor->spr.sector()->lotag == specialtags[i] && getanimationgoal(anim_ceilingz, actor->spr.sector()) >= 0)
|
||||
if (actor->sector()->lotag == specialtags[i] && getanimationgoal(anim_ceilingz, actor->sector()) >= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
fi.activatebysector(actor->spr.sector(), actor);
|
||||
fi.activatebysector(actor->sector(), actor);
|
||||
actor->temp_data[0] = 0;
|
||||
}
|
||||
else actor->temp_data[0]++;
|
||||
|
@ -3753,7 +3753,7 @@ void handle_se15(DDukeActor* actor)
|
|||
if (actor->temp_data[3] >= (actor->spr.yvel >> 3))
|
||||
{
|
||||
actor->temp_data[4] = 0; //Turn off the sliders
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
return;
|
||||
}
|
||||
actor->temp_data[3]++;
|
||||
|
@ -3763,7 +3763,7 @@ void handle_se15(DDukeActor* actor)
|
|||
if (actor->temp_data[3] < 1)
|
||||
{
|
||||
actor->temp_data[4] = 0;
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
return;
|
||||
}
|
||||
actor->temp_data[3]--;
|
||||
|
@ -3893,10 +3893,10 @@ void handle_se17(DDukeActor* actor)
|
|||
|
||||
ps[p].pos.X += act2->spr.pos.X - actor->spr.pos.X;
|
||||
ps[p].pos.Y += act2->spr.pos.Y - actor->spr.pos.Y;
|
||||
ps[p].pos.Z = act2->spr.sector()->floorz - (sc->floorz - ps[p].pos.Z);
|
||||
ps[p].pos.Z = act2->sector()->floorz - (sc->floorz - ps[p].pos.Z);
|
||||
|
||||
act3->floorz = act2->spr.sector()->floorz;
|
||||
act3->ceilingz = act2->spr.sector()->ceilingz;
|
||||
act3->floorz = act2->sector()->floorz;
|
||||
act3->ceilingz = act2->sector()->ceilingz;
|
||||
|
||||
ps[p].bobpos.X = ps[p].opos.X = ps[p].pos.X;
|
||||
ps[p].bobpos.Y = ps[p].opos.Y = ps[p].pos.Y;
|
||||
|
@ -3906,22 +3906,22 @@ void handle_se17(DDukeActor* actor)
|
|||
ps[p].truecz = act3->ceilingz;
|
||||
ps[p].bobcounter = 0;
|
||||
|
||||
ChangeActorSect(act3, act2->spr.sector());
|
||||
ps[p].setCursector(act2->spr.sector());
|
||||
ChangeActorSect(act3, act2->sector());
|
||||
ps[p].setCursector(act2->sector());
|
||||
}
|
||||
else if (act3->spr.statnum != STAT_EFFECTOR)
|
||||
{
|
||||
act3->spr.pos.X += act2->spr.pos.X - actor->spr.pos.X;
|
||||
act3->spr.pos.Y += act2->spr.pos.Y - actor->spr.pos.Y;
|
||||
act3->spr.pos.Z = act2->spr.sector()->floorz - (sc->floorz - act3->spr.pos.Z);
|
||||
act3->spr.pos.Z = act2->sector()->floorz - (sc->floorz - act3->spr.pos.Z);
|
||||
|
||||
act3->spr.backupz();
|
||||
|
||||
ChangeActorSect(act3, act2->spr.sector());
|
||||
ChangeActorSect(act3, act2->sector());
|
||||
SetActor(act3, act3->spr.pos);
|
||||
|
||||
act3->floorz = act2->spr.sector()->floorz;
|
||||
act3->ceilingz = act2->spr.sector()->ceilingz;
|
||||
act3->floorz = act2->sector()->floorz;
|
||||
act3->ceilingz = act2->sector()->ceilingz;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -4148,7 +4148,7 @@ void handle_se20(DDukeActor* actor)
|
|||
actor->spr.pos.X -= x;
|
||||
actor->spr.pos.Y -= l;
|
||||
actor->temp_data[0] = 0;
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -4171,7 +4171,7 @@ void handle_se20(DDukeActor* actor)
|
|||
dragpoint(wal[1], wal[1]->pos.X + x, wal[1]->pos.Y + l);
|
||||
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
if (ps[p].cursector == actor->spr.sector() && ps[p].on_ground)
|
||||
if (ps[p].cursector == actor->sector() && ps[p].on_ground)
|
||||
{
|
||||
ps[p].pos.X += x;
|
||||
ps[p].pos.Y += l;
|
||||
|
@ -4283,7 +4283,7 @@ void handle_se26(DDukeActor* actor)
|
|||
}
|
||||
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
if (ps[p].GetActor()->sector() == actor->spr.sector() && ps[p].on_ground)
|
||||
if (ps[p].GetActor()->sector() == actor->sector() && ps[p].on_ground)
|
||||
{
|
||||
ps[p].fric.X += l << 5;
|
||||
ps[p].fric.Y += x << 5;
|
||||
|
@ -4319,7 +4319,7 @@ void handle_se27(DDukeActor* actor)
|
|||
}
|
||||
else if (ud.recstat == 2 && ps[p].newOwner == nullptr)
|
||||
{
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
if (cansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
{
|
||||
if (x < sh)
|
||||
{
|
||||
|
@ -4406,7 +4406,7 @@ void handle_se24(DDukeActor *actor, const int16_t *list1, const int16_t *list2,
|
|||
|
||||
SetActor(a2, a2->spr.pos);
|
||||
|
||||
if (a2->spr.sector()->floorstat & CSTAT_SECTOR_SLOPE)
|
||||
if (a2->sector()->floorstat & CSTAT_SECTOR_SLOPE)
|
||||
if (a2->spr.statnum == 2)
|
||||
makeitfall(a2);
|
||||
}
|
||||
|
@ -4418,7 +4418,7 @@ void handle_se24(DDukeActor *actor, const int16_t *list1, const int16_t *list2,
|
|||
|
||||
for (auto p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
{
|
||||
if (ps[p].cursector == actor->spr.sector() && ps[p].on_ground)
|
||||
if (ps[p].cursector == actor->sector() && ps[p].on_ground)
|
||||
{
|
||||
if (abs(ps[p].pos.Z - ps[p].truefz) < gs.playerheight + (9 << 8))
|
||||
{
|
||||
|
@ -4488,7 +4488,7 @@ void handle_se32(DDukeActor *actor)
|
|||
if (abs(sc->ceilingz - actor->spr.pos.Z) < (actor->spr.yvel << 1))
|
||||
{
|
||||
sc->setceilingz(actor->spr.pos.Z);
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
actor->temp_data[2] = 0;
|
||||
actor->temp_data[0] = 0;
|
||||
}
|
||||
|
@ -4499,7 +4499,7 @@ void handle_se32(DDukeActor *actor)
|
|||
if (abs(sc->ceilingz - actor->temp_data[1]) < (actor->spr.yvel << 1))
|
||||
{
|
||||
sc->setceilingz(actor->temp_data[1]);
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
actor->temp_data[2] = 0;
|
||||
actor->temp_data[0] = 0;
|
||||
}
|
||||
|
@ -4514,7 +4514,7 @@ void handle_se32(DDukeActor *actor)
|
|||
{
|
||||
actor->temp_data[0] = 0;
|
||||
actor->temp_data[2] = !actor->temp_data[2];
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
sc->setceilingz(actor->spr.pos.Z);
|
||||
}
|
||||
else sc->addceilingz(Sgn(actor->spr.pos.Z - sc->ceilingz) * actor->spr.yvel);
|
||||
|
@ -4525,7 +4525,7 @@ void handle_se32(DDukeActor *actor)
|
|||
{
|
||||
actor->temp_data[0] = 0;
|
||||
actor->temp_data[2] = !actor->temp_data[2];
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
}
|
||||
else sc->addceilingz(-Sgn(actor->spr.pos.Z - actor->temp_data[1]) * actor->spr.yvel);
|
||||
}
|
||||
|
@ -4679,7 +4679,7 @@ void handle_se31(DDukeActor* actor, bool choosedir)
|
|||
actor->temp_data[2] = 0;
|
||||
actor->temp_data[0] = 0;
|
||||
if (choosedir) actor->temp_data[3] = actor->spr.hitag;
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4705,7 +4705,7 @@ void handle_se31(DDukeActor* actor, bool choosedir)
|
|||
if (abs(sec->floorz - actor->temp_data[1]) < actor->spr.yvel)
|
||||
{
|
||||
sec->setfloorz(actor->temp_data[1]);
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
actor->temp_data[2] = 0;
|
||||
actor->temp_data[0] = 0;
|
||||
if (choosedir) actor->temp_data[3] = actor->spr.hitag;
|
||||
|
@ -4736,7 +4736,7 @@ void handle_se31(DDukeActor* actor, bool choosedir)
|
|||
{
|
||||
if (abs(actor->spr.pos.Z - sec->floorz) < actor->spr.yvel)
|
||||
{
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
actor->temp_data[0] = 0;
|
||||
actor->temp_data[2] = 1;
|
||||
if (choosedir) actor->temp_data[3] = actor->spr.hitag;
|
||||
|
@ -4765,7 +4765,7 @@ void handle_se31(DDukeActor* actor, bool choosedir)
|
|||
if (abs(sec->floorz - actor->temp_data[1]) < actor->spr.yvel)
|
||||
{
|
||||
actor->temp_data[0] = 0;
|
||||
callsound(actor->spr.sector(), actor);
|
||||
callsound(actor->sector(), actor);
|
||||
actor->temp_data[2] = 1;
|
||||
actor->temp_data[3] = actor->spr.hitag;
|
||||
}
|
||||
|
@ -4810,7 +4810,7 @@ void getglobalz(DDukeActor* actor)
|
|||
|
||||
auto cc = actor->spr.cstat2;
|
||||
actor->spr.cstat2 |= CSTAT2_SPRITE_NOFIND; // don't clip against self. getzrange cannot detect this because it only receives a coordinate.
|
||||
getzrange({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (FOURSLEIGHT) }, actor->spr.sector(), &actor->ceilingz, hz, &actor->floorz, lz, zr, CLIPMASK0);
|
||||
getzrange({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (FOURSLEIGHT) }, actor->sector(), &actor->ceilingz, hz, &actor->floorz, lz, zr, CLIPMASK0);
|
||||
actor->spr.cstat2 = cc;
|
||||
|
||||
if( lz.type == kHitSprite && (lz.actor()->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0 )
|
||||
|
@ -4834,15 +4834,15 @@ void getglobalz(DDukeActor* actor)
|
|||
}
|
||||
else if(actor->spr.statnum == STAT_PROJECTILE && lz.actor()->spr.picnum == TILE_APLAYER && actor->GetOwner() == actor)
|
||||
{
|
||||
actor->ceilingz = actor->spr.sector()->ceilingz;
|
||||
actor->floorz = actor->spr.sector()->floorz;
|
||||
actor->ceilingz = actor->sector()->ceilingz;
|
||||
actor->floorz = actor->sector()->floorz;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->ceilingz = actor->spr.sector()->ceilingz;
|
||||
actor->floorz = actor->spr.sector()->floorz;
|
||||
actor->ceilingz = actor->sector()->ceilingz;
|
||||
actor->floorz = actor->sector()->floorz;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4856,11 +4856,11 @@ void makeitfall(DDukeActor* actor)
|
|||
{
|
||||
int c;
|
||||
|
||||
if( fi.floorspace(actor->spr.sector()) )
|
||||
if( fi.floorspace(actor->sector()) )
|
||||
c = 0;
|
||||
else
|
||||
{
|
||||
if( fi.ceilingspace(actor->spr.sector()) || actor->spr.sector()->lotag == ST_2_UNDERWATER)
|
||||
if( fi.ceilingspace(actor->sector()) || actor->sector()->lotag == ST_2_UNDERWATER)
|
||||
c = gs.gravity/6;
|
||||
else c = gs.gravity;
|
||||
}
|
||||
|
@ -4873,17 +4873,17 @@ void makeitfall(DDukeActor* actor)
|
|||
if ((actor->spr.statnum == STAT_ACTOR || actor->spr.statnum == STAT_PLAYER || actor->spr.statnum == STAT_ZOMBIEACTOR || actor->spr.statnum == STAT_STANDABLE))
|
||||
{
|
||||
Collision coll;
|
||||
getzrange({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (FOURSLEIGHT) }, actor->spr.sector(), &actor->ceilingz, coll, &actor->floorz, coll, 127, CLIPMASK0);
|
||||
getzrange({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (FOURSLEIGHT) }, actor->sector(), &actor->ceilingz, coll, &actor->floorz, coll, 127, CLIPMASK0);
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->ceilingz = actor->spr.sector()->ceilingz;
|
||||
actor->floorz = actor->spr.sector()->floorz;
|
||||
actor->ceilingz = actor->sector()->ceilingz;
|
||||
actor->floorz = actor->sector()->floorz;
|
||||
}
|
||||
|
||||
if( actor->spr.pos.Z < actor->floorz-(FOURSLEIGHT) )
|
||||
{
|
||||
if( actor->spr.sector()->lotag == 2 && actor->spr.zvel > 3122 )
|
||||
if( actor->sector()->lotag == 2 && actor->spr.zvel > 3122 )
|
||||
actor->spr.zvel = 3144;
|
||||
if(actor->spr.zvel < 6144)
|
||||
actor->spr.zvel += c;
|
||||
|
@ -4913,7 +4913,7 @@ int dodge(DDukeActor* actor)
|
|||
DukeStatIterator it(STAT_PROJECTILE);
|
||||
while (auto ac = it.Next())
|
||||
{
|
||||
if (ac->GetOwner() == ac || ac->spr.sector() != actor->spr.sector())
|
||||
if (ac->GetOwner() == ac || ac->sector() != actor->sector())
|
||||
continue;
|
||||
|
||||
bx = ac->spr.pos.X - mx;
|
||||
|
@ -4955,7 +4955,7 @@ int furthestangle(DDukeActor *actor, int angs)
|
|||
|
||||
for (j = actor->spr.ang; j < (2048 + actor->spr.ang); j += angincs)
|
||||
{
|
||||
hitscan({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (8 << 8) }, actor->spr.sector(), { bcos(j), bsin(j), 0 }, hit, CLIPMASK1);
|
||||
hitscan({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (8 << 8) }, actor->sector(), { bcos(j), bsin(j), 0 }, hit, CLIPMASK1);
|
||||
|
||||
d = abs(hit.hitpos.X - actor->spr.pos.X) + abs(hit.hitpos.Y - actor->spr.pos.Y);
|
||||
|
||||
|
@ -4988,13 +4988,13 @@ int furthestcanseepoint(DDukeActor *actor, DDukeActor* tosee, int* dax, int* day
|
|||
|
||||
for (j = tosee->spr.ang; j < (2048 + tosee->spr.ang); j += (angincs - (krand() & 511)))
|
||||
{
|
||||
hitscan({ tosee->spr.pos.X, tosee->spr.pos.Y, tosee->spr.pos.Z - (16 << 8) }, tosee->spr.sector(), { bcos(j), bsin(j), 16384 - (krand() & 32767) }, hit, CLIPMASK1);
|
||||
hitscan({ tosee->spr.pos.X, tosee->spr.pos.Y, tosee->spr.pos.Z - (16 << 8) }, tosee->sector(), { bcos(j), bsin(j), 16384 - (krand() & 32767) }, hit, CLIPMASK1);
|
||||
|
||||
d = abs(hit.hitpos.X - tosee->spr.pos.X) + abs(hit.hitpos.Y - tosee->spr.pos.Y);
|
||||
da = abs(hit.hitpos.X - actor->spr.pos.X) + abs(hit.hitpos.Y - actor->spr.pos.Y);
|
||||
|
||||
if (d < da && hit.hitSector)
|
||||
if (cansee(hit.hitpos.X, hit.hitpos.Y, hit.hitpos.Z, hit.hitSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (16 << 8), actor->spr.sector()))
|
||||
if (cansee(hit.hitpos.X, hit.hitpos.Y, hit.hitpos.Z, hit.hitSector, actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (16 << 8), actor->sector()))
|
||||
{
|
||||
*dax = hit.hitpos.X;
|
||||
*day = hit.hitpos.Y;
|
||||
|
@ -5032,7 +5032,7 @@ void alterang(int ang, DDukeActor* actor, int playernum)
|
|||
|
||||
// NOTE: looks like 'Owner' is set to target sprite ID...
|
||||
|
||||
if (holoduke && cansee(holoduke->spr.pos.X, holoduke->spr.pos.Y, holoduke->spr.pos.Z, holoduke->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector()))
|
||||
if (holoduke && cansee(holoduke->spr.pos.X, holoduke->spr.pos.Y, holoduke->spr.pos.Z, holoduke->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector()))
|
||||
actor->SetOwner(holoduke);
|
||||
else actor->SetOwner(ps[playernum].GetActor());
|
||||
|
||||
|
@ -5098,16 +5098,16 @@ void fall_common(DDukeActor *actor, int playernum, int JIBS6, int DRONE, int BLO
|
|||
int c;
|
||||
|
||||
int sphit = fallspecial? fallspecial(actor, playernum) : 0;
|
||||
if (fi.floorspace(actor->spr.sector()))
|
||||
if (fi.floorspace(actor->sector()))
|
||||
c = 0;
|
||||
else
|
||||
{
|
||||
if (fi.ceilingspace(actor->spr.sector()) || actor->spr.sector()->lotag == 2)
|
||||
if (fi.ceilingspace(actor->sector()) || actor->sector()->lotag == 2)
|
||||
c = gs.gravity / 6;
|
||||
else c = gs.gravity;
|
||||
}
|
||||
|
||||
if (actor->cgg <= 0 || (actor->spr.sector()->floorstat & CSTAT_SECTOR_SLOPE))
|
||||
if (actor->cgg <= 0 || (actor->sector()->floorstat & CSTAT_SECTOR_SLOPE))
|
||||
{
|
||||
getglobalz(actor);
|
||||
actor->cgg = 6;
|
||||
|
@ -5153,18 +5153,18 @@ void fall_common(DDukeActor *actor, int playernum, int JIBS6, int DRONE, int BLO
|
|||
actor->extra = 1;
|
||||
actor->spr.zvel = 0;
|
||||
}
|
||||
else if (actor->spr.zvel > 2048 && actor->spr.sector()->lotag != 1)
|
||||
else if (actor->spr.zvel > 2048 && actor->sector()->lotag != 1)
|
||||
{
|
||||
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
pushmove(&actor->spr.pos, §, 128, (4 << 8), (4 << 8), CLIPMASK0);
|
||||
if (sect != actor->spr.sector() && sect != nullptr)
|
||||
if (sect != actor->sector() && sect != nullptr)
|
||||
ChangeActorSect(actor, sect);
|
||||
|
||||
S_PlayActorSound(thud, actor);
|
||||
}
|
||||
}
|
||||
if (actor->spr.sector()->lotag == 1)
|
||||
if (actor->sector()->lotag == 1)
|
||||
actor->spr.pos.Z += gs.actorinfo[actor->spr.picnum].falladjustz;
|
||||
else actor->spr.zvel = 0;
|
||||
}
|
||||
|
@ -5182,7 +5182,7 @@ DDukeActor *LocateTheLocator(int n, sectortype* sect)
|
|||
DukeStatIterator it(STAT_LOCATOR);
|
||||
while (auto ac = it.Next())
|
||||
{
|
||||
if ((sect == nullptr || sect == ac->spr.sector()) && n == ac->spr.lotag)
|
||||
if ((sect == nullptr || sect == ac->sector()) && n == ac->spr.lotag)
|
||||
return ac;
|
||||
}
|
||||
return nullptr;
|
||||
|
|
|
@ -221,7 +221,7 @@ bool ifsquished(DDukeActor* actor, int p)
|
|||
if (actor->spr.picnum == APLAYER && ud.clipping)
|
||||
return false;
|
||||
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int floorceildist = sectp->floorz - sectp->ceilingz;
|
||||
|
||||
if (sectp->lotag != ST_23_SWINGING_DOOR)
|
||||
|
@ -263,7 +263,7 @@ void hitradius_d(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
|
||||
if(actor->spr.picnum != SHRINKSPARK && !(actor->spr.picnum == RPG && actor->spr.xrepeat < 11))
|
||||
{
|
||||
BFSSectorSearch search(actor->spr.sector());
|
||||
BFSSectorSearch search(actor->sector());
|
||||
|
||||
while (auto dasectp = search.GetNext())
|
||||
{
|
||||
|
@ -294,7 +294,7 @@ void hitradius_d(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
int y1 = (((wal.pos.Y + wal.point2Wall()->pos.Y) >> 1) + actor->spr.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->spr.sector()))
|
||||
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.pos.X, wal.pos.Y, actor->spr.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->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z + q, actor->spr.sector()))
|
||||
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()))
|
||||
continue;
|
||||
fi.checkhitsprite(act2, actor);
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ 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->spr.pos.Z += gs.playerheight;
|
||||
|
||||
if (d < r && cansee(act2->spr.pos.X, act2->spr.pos.Y, act2->spr.pos.Z - (8 << 8), act2->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (12 << 8), actor->spr.sector()))
|
||||
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()))
|
||||
{
|
||||
act2->ang = getangle(act2->spr.pos.X - actor->spr.pos.X, act2->spr.pos.Y - actor->spr.pos.Y);
|
||||
|
||||
|
@ -449,7 +449,7 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
return result.setNone();
|
||||
}
|
||||
|
||||
auto dasectp = actor->spr.sector();
|
||||
auto dasectp = actor->sector();
|
||||
|
||||
vec3_t pos = actor->spr.pos;
|
||||
pos.Z -= ((tileHeight(actor->spr.picnum) * actor->spr.yrepeat) << 1);
|
||||
|
@ -500,7 +500,7 @@ int movesprite_ex_d(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
actor->spr.pos.Y = pos.Y;
|
||||
|
||||
if (dasectp != nullptr)
|
||||
if (dasectp != actor->spr.sector())
|
||||
if (dasectp != actor->sector())
|
||||
ChangeActorSect(actor, dasectp);
|
||||
int daz = actor->spr.pos.Z + ((zchange * TICSPERFRAME) >> 3);
|
||||
if ((daz > actor->ceilingz) && (daz <= actor->floorz))
|
||||
|
@ -549,7 +549,7 @@ void guts_d(DDukeActor* actor, int gtype, int n, int p)
|
|||
else sx = sy = 32;
|
||||
|
||||
gutz = actor->spr.pos.Z - (8 << 8);
|
||||
floorz = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
floorz = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
|
||||
if (gutz > (floorz - (8 << 8)))
|
||||
gutz = floorz - (8 << 8);
|
||||
|
@ -573,7 +573,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->spr.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->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);
|
||||
if (spawned)
|
||||
{
|
||||
if (spawned->spr.picnum == JIBS2)
|
||||
|
@ -606,7 +606,7 @@ void movefta_d(void)
|
|||
{
|
||||
p = findplayer(act, &x);
|
||||
|
||||
ssect = psect = act->spr.sector();
|
||||
ssect = psect = act->sector();
|
||||
|
||||
auto pa = ps[p].GetActor();
|
||||
if (pa->spr.extra > 0)
|
||||
|
@ -635,13 +635,13 @@ void movefta_d(void)
|
|||
|
||||
int r1 = krand();
|
||||
int r2 = krand();
|
||||
j = cansee(sx, sy, act->spr.pos.Z - (r2 % (52 << 8)), act->spr.sector(), px, py, ps[p].opos.Z - (r1 % (32 << 8)), ps[p].cursector);
|
||||
j = cansee(sx, sy, act->spr.pos.Z - (r2 % (52 << 8)), act->sector(), px, py, ps[p].opos.Z - (r1 % (32 << 8)), ps[p].cursector);
|
||||
}
|
||||
else
|
||||
{
|
||||
int r1 = krand();
|
||||
int r2 = krand();
|
||||
j = cansee(act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - ((r2 & 31) << 8), act->spr.sector(), ps[p].opos.X, ps[p].opos.Y, ps[p].opos.Z - ((r1 & 31) << 8), ps[p].cursector);
|
||||
j = cansee(act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - ((r2 & 31) << 8), act->sector(), ps[p].opos.X, ps[p].opos.Y, ps[p].opos.Z - ((r1 & 31) << 8), ps[p].cursector);
|
||||
}
|
||||
|
||||
|
||||
|
@ -661,9 +661,9 @@ void movefta_d(void)
|
|||
case NUKEBARRELDENTED:
|
||||
case NUKEBARRELLEAKED:
|
||||
case TRIPBOMB:
|
||||
if (act->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->spr.sector()->ceilingshade;
|
||||
else act->spr.shade = act->spr.sector()->floorshade;
|
||||
if (act->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->sector()->ceilingshade;
|
||||
else act->spr.shade = act->sector()->floorshade;
|
||||
|
||||
act->timetosleep = 0;
|
||||
ChangeActorStat(act, STAT_STANDABLE);
|
||||
|
@ -680,9 +680,9 @@ void movefta_d(void)
|
|||
}
|
||||
if (badguy(act))
|
||||
{
|
||||
if (act->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->spr.sector()->ceilingshade;
|
||||
else act->spr.shade = act->spr.sector()->floorshade;
|
||||
if (act->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->sector()->ceilingshade;
|
||||
else act->spr.shade = act->sector()->floorshade;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -699,7 +699,7 @@ DDukeActor* ifhitsectors_d(sectortype* sect)
|
|||
DukeStatIterator it(STAT_MISC);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
if (a1->spr.picnum == EXPLOSION2 && sect == a1->spr.sector())
|
||||
if (a1->spr.picnum == EXPLOSION2 && sect == a1->sector())
|
||||
return a1;
|
||||
}
|
||||
return nullptr;
|
||||
|
@ -833,7 +833,7 @@ void movefallers_d(void)
|
|||
DukeStatIterator iti(STAT_FALLER);
|
||||
while (auto act = iti.Next())
|
||||
{
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
if (act->temp_data[0] == 0)
|
||||
{
|
||||
|
@ -889,10 +889,10 @@ void movefallers_d(void)
|
|||
ssp(act, CLIPMASK0);
|
||||
}
|
||||
|
||||
if (fi.floorspace(act->spr.sector())) x = 0;
|
||||
if (fi.floorspace(act->sector())) x = 0;
|
||||
else
|
||||
{
|
||||
if (fi.ceilingspace(act->spr.sector()))
|
||||
if (fi.ceilingspace(act->sector()))
|
||||
x = gs.gravity / 6;
|
||||
else
|
||||
x = gs.gravity;
|
||||
|
@ -1005,8 +1005,8 @@ static void movetripbomb(DDukeActor *actor)
|
|||
actor->spr.pos.Z -= (3 << 8);
|
||||
|
||||
// Laser fix from EDuke32.
|
||||
auto const oldSect = actor->spr.sector();
|
||||
auto curSect = actor->spr.sector();
|
||||
auto const oldSect = actor->sector();
|
||||
auto curSect = actor->sector();
|
||||
|
||||
updatesectorneighbor(actor->spr.pos.X, actor->spr.pos.Y, &curSect, 2048);
|
||||
ChangeActorSect(actor, curSect);
|
||||
|
@ -1135,7 +1135,7 @@ static void movefireext(DDukeActor* actor)
|
|||
|
||||
for (int k = 0; k < 16; k++)
|
||||
{
|
||||
auto spawned = EGS(actor->spr.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->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);
|
||||
if(spawned) spawned->spr.pal = 2;
|
||||
}
|
||||
|
||||
|
@ -1200,7 +1200,7 @@ static void moveviewscreen(DDukeActor* actor)
|
|||
static void movesidebolt(DDukeActor* actor)
|
||||
{
|
||||
int x;
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
findplayer(actor, &x);
|
||||
if (x > 20480) return;
|
||||
|
@ -1241,7 +1241,7 @@ CLEAR_THE_BOLT2:
|
|||
static void movebolt(DDukeActor *actor)
|
||||
{
|
||||
int x;
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
findplayer(actor, &x);
|
||||
if (x > 20480) return;
|
||||
|
@ -1427,7 +1427,7 @@ static bool movefireball(DDukeActor* actor)
|
|||
{
|
||||
auto Owner = actor->GetOwner();
|
||||
|
||||
if (actor->spr.sector()->lotag == 2)
|
||||
if (actor->sector()->lotag == 2)
|
||||
{
|
||||
deletesprite(actor);
|
||||
return true;
|
||||
|
@ -1587,14 +1587,14 @@ static bool weaponhitsector(DDukeActor* proj, const vec3_t& oldpos, bool firebal
|
|||
|
||||
if (proj->spr.zvel < 0)
|
||||
{
|
||||
if (proj->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
if (proj->spr.sector()->ceilingpal == 0)
|
||||
if (proj->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
if (proj->sector()->ceilingpal == 0)
|
||||
{
|
||||
deletesprite(proj);
|
||||
return true;
|
||||
}
|
||||
|
||||
fi.checkhitceiling(proj->spr.sector());
|
||||
fi.checkhitceiling(proj->sector());
|
||||
}
|
||||
else if (fireball)
|
||||
{
|
||||
|
@ -1639,7 +1639,7 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
int k, ll;
|
||||
vec3_t oldpos = proj->spr.pos;
|
||||
|
||||
if (proj->spr.picnum == RPG && proj->spr.sector()->lotag == 2)
|
||||
if (proj->spr.picnum == RPG && proj->sector()->lotag == 2)
|
||||
{
|
||||
k = proj->spr.xvel >> 1;
|
||||
ll = proj->spr.zvel >> 1;
|
||||
|
@ -1655,7 +1655,7 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
switch (proj->spr.picnum)
|
||||
{
|
||||
case RPG:
|
||||
if (proj->attackertype != BOSS2 && proj->spr.xrepeat >= 10 && proj->spr.sector()->lotag != 2)
|
||||
if (proj->attackertype != BOSS2 && proj->spr.xrepeat >= 10 && proj->sector()->lotag != 2)
|
||||
{
|
||||
auto spawned = spawn(proj, SMALLSMOKE);
|
||||
if (spawned) spawned->spr.pos.Z += (1 << 8);
|
||||
|
@ -1686,15 +1686,15 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
{
|
||||
if (proj->spr.pos.Z < proj->ceilingz)
|
||||
{
|
||||
coll.setSector(proj->spr.sector());
|
||||
coll.setSector(proj->sector());
|
||||
proj->spr.zvel = -1;
|
||||
}
|
||||
else
|
||||
if ((proj->spr.pos.Z > proj->floorz && proj->spr.sector()->lotag != 1) ||
|
||||
(proj->spr.pos.Z > proj->floorz + (16 << 8) && proj->spr.sector()->lotag == 1))
|
||||
if ((proj->spr.pos.Z > proj->floorz && proj->sector()->lotag != 1) ||
|
||||
(proj->spr.pos.Z > proj->floorz + (16 << 8) && proj->sector()->lotag == 1))
|
||||
{
|
||||
coll.setSector(proj->spr.sector());
|
||||
if (proj->spr.sector()->lotag != 1)
|
||||
coll.setSector(proj->sector());
|
||||
if (proj->sector()->lotag != 1)
|
||||
proj->spr.zvel = 1;
|
||||
}
|
||||
}
|
||||
|
@ -1703,7 +1703,7 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
{
|
||||
for (k = -3; k < 2; k++)
|
||||
{
|
||||
auto spawned = EGS(proj->spr.sector(),
|
||||
auto spawned = 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),
|
||||
|
@ -1794,7 +1794,7 @@ static void weaponcommon_d(DDukeActor* proj)
|
|||
return;
|
||||
}
|
||||
}
|
||||
else if (proj->spr.picnum == RPG && proj->spr.sector()->lotag == 2 && proj->spr.xrepeat >= 10 && rnd(140))
|
||||
else if (proj->spr.picnum == RPG && proj->sector()->lotag == 2 && proj->spr.xrepeat >= 10 && rnd(140))
|
||||
spawn(proj, WATERBUBBLE);
|
||||
|
||||
}
|
||||
|
@ -1884,7 +1884,7 @@ void movetransports_d(void)
|
|||
continue;
|
||||
}
|
||||
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
int sectlotag = sectp->lotag;
|
||||
int onfloorz = act->temp_data[4];
|
||||
|
||||
|
@ -1934,7 +1934,7 @@ void movetransports_d(void)
|
|||
ps[p].opos.Z = ps[p].pos.Z = Owner->spr.pos.Z - gs.playerheight;
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
ps[p].setCursector(act2->spr.sector());
|
||||
ps[p].setCursector(act2->sector());
|
||||
|
||||
if (act->spr.pal == 0)
|
||||
{
|
||||
|
@ -2119,7 +2119,7 @@ void movetransports_d(void)
|
|||
case 0:
|
||||
if (onfloorz)
|
||||
{
|
||||
if (act2->spr.statnum == STAT_PROJECTILE || (checkcursectnums(act->spr.sector()) == -1 && checkcursectnums(Owner->spr.sector()) == -1))
|
||||
if (act2->spr.statnum == STAT_PROJECTILE || (checkcursectnums(act->sector()) == -1 && checkcursectnums(Owner->sector()) == -1))
|
||||
{
|
||||
act2->spr.pos.X += (Owner->spr.pos.X - act->spr.pos.X);
|
||||
act2->spr.pos.Y += (Owner->spr.pos.Y - act->spr.pos.Y);
|
||||
|
@ -2198,7 +2198,7 @@ void movetransports_d(void)
|
|||
|
||||
static void greenslime(DDukeActor *actor)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int j;
|
||||
|
||||
// #ifndef isShareware()
|
||||
|
@ -2256,7 +2256,7 @@ static void greenslime(DDukeActor *actor)
|
|||
return;
|
||||
for (j = 16; j >= 0; j--)
|
||||
{
|
||||
auto k = EGS(actor->spr.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->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);
|
||||
k->spr.pal = 1;
|
||||
}
|
||||
ps[p].actors_killed++;
|
||||
|
@ -2294,7 +2294,7 @@ static void greenslime(DDukeActor *actor)
|
|||
{
|
||||
for (x = 0; x < 8; x++)
|
||||
{
|
||||
auto spawned = EGS(actor->spr.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->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);
|
||||
spawned->spr.pal = 6;
|
||||
}
|
||||
|
||||
|
@ -2409,7 +2409,7 @@ static void greenslime(DDukeActor *actor)
|
|||
|
||||
for (x = 0; x < 8; x++)
|
||||
{
|
||||
auto spawned = EGS(actor->spr.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->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);
|
||||
if (spawned) spawned->spr.pal = 6;
|
||||
}
|
||||
actor->temp_data[0] = -3;
|
||||
|
@ -2597,7 +2597,7 @@ static void greenslime(DDukeActor *actor)
|
|||
|
||||
static void flamethrowerflame(DDukeActor *actor)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int x;
|
||||
int p = findplayer(actor, &x);
|
||||
execute(actor, p, x);
|
||||
|
@ -2643,14 +2643,14 @@ static void flamethrowerflame(DDukeActor *actor)
|
|||
{
|
||||
if (actor->spr.pos.Z < actor->ceilingz)
|
||||
{
|
||||
coll.setSector(actor->spr.sector());
|
||||
coll.setSector(actor->sector());
|
||||
actor->spr.zvel = -1;
|
||||
}
|
||||
else if ((actor->spr.pos.Z > actor->floorz && actor->spr.sector()->lotag != 1)
|
||||
|| (actor->spr.pos.Z > actor->floorz + (16 << 8) && actor->spr.sector()->lotag == 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))
|
||||
{
|
||||
coll.setSector(actor->spr.sector());
|
||||
if (actor->spr.sector()->lotag != 1)
|
||||
coll.setSector(actor->sector());
|
||||
if (actor->sector()->lotag != 1)
|
||||
actor->spr.zvel = 1;
|
||||
}
|
||||
}
|
||||
|
@ -2672,7 +2672,7 @@ static void flamethrowerflame(DDukeActor *actor)
|
|||
{
|
||||
SetActor(actor, { dax, day, daz });
|
||||
if (actor->spr.zvel < 0)
|
||||
fi.checkhitceiling(actor->spr.sector());
|
||||
fi.checkhitceiling(actor->sector());
|
||||
}
|
||||
|
||||
if (actor->spr.xrepeat >= 10)
|
||||
|
@ -2697,7 +2697,7 @@ static void flamethrowerflame(DDukeActor *actor)
|
|||
static void heavyhbomb(DDukeActor *actor)
|
||||
{
|
||||
auto Owner = actor->GetOwner();
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int x, l;
|
||||
|
||||
if ((actor->spr.cstat & CSTAT_SPRITE_INVISIBLE))
|
||||
|
@ -2739,7 +2739,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
if (actor->spr.yvel > 0 || (actor->spr.yvel == 0 && actor->floorz == sectp->floorz))
|
||||
S_PlayActorSound(PIPEBOMB_BOUNCE, actor);
|
||||
actor->spr.zvel = -((4 - actor->spr.yvel) << 8);
|
||||
if (actor->spr.sector()->lotag == 2)
|
||||
if (actor->sector()->lotag == 2)
|
||||
actor->spr.zvel >>= 2;
|
||||
actor->spr.yvel++;
|
||||
}
|
||||
|
@ -2756,7 +2756,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
MulScale(actor->spr.xvel, bsin(actor->spr.ang), 14),
|
||||
actor->spr.zvel, CLIPMASK0, coll);
|
||||
|
||||
if (actor->spr.sector()->lotag == 1 && actor->spr.zvel == 0)
|
||||
if (actor->sector()->lotag == 1 && actor->spr.zvel == 0)
|
||||
{
|
||||
actor->spr.pos.Z += (32 << 8);
|
||||
if (actor->temp_data[5] == 0)
|
||||
|
@ -2860,7 +2860,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->spr.sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
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 (ps[p].ammo_amount[HANDBOMB_WEAPON] < gs.max_ammo_amount[HANDBOMB_WEAPON])
|
||||
{
|
||||
if (ud.coop >= 1 && Owner == actor)
|
||||
|
@ -2918,7 +2918,7 @@ void moveactors_d(void)
|
|||
DukeStatIterator it(STAT_ACTOR);
|
||||
while (auto act = it.Next())
|
||||
{
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
if (act->spr.xrepeat == 0 || sectp == nullptr)
|
||||
{
|
||||
|
@ -3144,7 +3144,7 @@ void moveexplosions_d(void) // STATNUM 5
|
|||
continue;
|
||||
}
|
||||
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
switch (act->spr.picnum)
|
||||
{
|
||||
|
@ -3230,7 +3230,7 @@ void moveexplosions_d(void) // STATNUM 5
|
|||
case MONEY + 1:
|
||||
case MAIL + 1:
|
||||
case PAPER + 1:
|
||||
act->floorz = act->spr.pos.Z = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
act->floorz = act->spr.pos.Z = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
break;
|
||||
case MONEY:
|
||||
case MAIL:
|
||||
|
@ -3408,7 +3408,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->spr.sector(), ps[screenpeek].pos.X, ps[screenpeek].pos.Y, ps[screenpeek].pos.Z, ps[screenpeek].cursector);
|
||||
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);
|
||||
|
||||
if (rnd(192) && (actor->temp_data[2] & 1))
|
||||
{
|
||||
|
@ -3637,7 +3637,7 @@ void moveeffectors_d(void) //STATNUM 3
|
|||
auto sc = act->sector();
|
||||
if (sc->wallnum != 4) continue;
|
||||
auto wal = sc->firstWall() + 2;
|
||||
alignflorslope(act->spr.sector(), wal->pos.X, wal->pos.Y, wal->nextSector()->floorz);
|
||||
alignflorslope(act->sector(), wal->pos.X, wal->pos.Y, wal->nextSector()->floorz);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3738,14 +3738,14 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
{
|
||||
if (actor->spr.picnum == COMMANDER)
|
||||
{
|
||||
actor->floorz = l = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (actor->spr.pos.Z > (l - (8 << 8)))
|
||||
{
|
||||
if (actor->spr.pos.Z > (l - (8 << 8))) actor->spr.pos.Z = l - (8 << 8);
|
||||
actor->spr.zvel = 0;
|
||||
}
|
||||
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (80 << 8))
|
||||
{
|
||||
actor->spr.pos.Z = l + (80 << 8);
|
||||
|
@ -3756,13 +3756,13 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
{
|
||||
if (actor->spr.zvel > 0)
|
||||
{
|
||||
actor->floorz = l = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (actor->spr.pos.Z > (l - (30 << 8)))
|
||||
actor->spr.pos.Z = l - (30 << 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (50 << 8))
|
||||
{
|
||||
actor->spr.pos.Z = l + (50 << 8);
|
||||
|
@ -3777,7 +3777,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
actor->spr.pos.Z = actor->floorz;
|
||||
if (actor->spr.zvel < 0)
|
||||
{
|
||||
l = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (66 << 8))
|
||||
{
|
||||
actor->spr.pos.Z = l + (66 << 8);
|
||||
|
@ -3835,11 +3835,11 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
|
||||
if (a)
|
||||
{
|
||||
if (actor->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
actor->spr.shade += (actor->spr.sector()->ceilingshade - actor->spr.shade) >> 1;
|
||||
else actor->spr.shade += (actor->spr.sector()->floorshade - actor->spr.shade) >> 1;
|
||||
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
|
||||
else actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
|
||||
|
||||
if (actor->spr.sector()->floorpicnum == MIRROR)
|
||||
if (actor->sector()->floorpicnum == MIRROR)
|
||||
deletesprite(actor);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -128,8 +128,8 @@ void addtorch(DDukeActor* actor)
|
|||
if (torchcnt >= 64)
|
||||
I_Error("Too many torch effects");
|
||||
|
||||
torchsector[torchcnt] = actor->spr.sector();
|
||||
torchsectorshade[torchcnt] = actor->spr.sector()->floorshade;
|
||||
torchsector[torchcnt] = actor->sector();
|
||||
torchsectorshade[torchcnt] = actor->sector()->floorshade;
|
||||
torchtype[torchcnt] = actor->spr.lotag;
|
||||
torchcnt++;
|
||||
}
|
||||
|
@ -139,8 +139,8 @@ void addlightning(DDukeActor* actor)
|
|||
if (lightnincnt >= 64)
|
||||
I_Error("Too many lightnin effects");
|
||||
|
||||
lightninsector[lightnincnt] = actor->spr.sector();
|
||||
lightninsectorshade[lightnincnt] = actor->spr.sector()->floorshade;
|
||||
lightninsector[lightnincnt] = actor->sector();
|
||||
lightninsectorshade[lightnincnt] = actor->sector()->floorshade;
|
||||
lightnincnt++;
|
||||
}
|
||||
|
||||
|
|
|
@ -221,7 +221,7 @@ void hitradius_r(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
|
||||
if (actor->spr.xrepeat >= 11 || !(actor->spr.picnum == RPG || ((isRRRA()) && actor->spr.picnum == RPG2)))
|
||||
{
|
||||
BFSSectorSearch search(actor->spr.sector());
|
||||
BFSSectorSearch search(actor->sector());
|
||||
|
||||
while (auto dasectp = search.GetNext())
|
||||
{
|
||||
|
@ -252,7 +252,7 @@ void hitradius_r(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h
|
|||
int y1 = (((wal.pos.Y + wal.point2Wall()->pos.Y) >> 1) + actor->spr.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->spr.sector()))
|
||||
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.pos.X, wal.pos.Y, actor->spr.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->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z + q, actor->spr.sector()))
|
||||
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()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -294,7 +294,7 @@ 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->spr.pos.Z += gs.playerheight;
|
||||
|
||||
if (d < r && cansee(act2->spr.pos.X, act2->spr.pos.Y, act2->spr.pos.Z - (8 << 8), act2->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (12 << 8), actor->spr.sector()))
|
||||
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 ((isRRRA()) && act2->spr.picnum == MINION && act2->spr.pal == 19)
|
||||
{
|
||||
|
@ -378,7 +378,7 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
return result.setNone();
|
||||
}
|
||||
|
||||
auto dasectp = actor->spr.sector();
|
||||
auto dasectp = actor->sector();
|
||||
|
||||
vec3_t pos = actor->spr.pos;
|
||||
pos.Z -= ((tileHeight(actor->spr.picnum) * actor->spr.yrepeat) << 1);
|
||||
|
@ -416,7 +416,7 @@ int movesprite_ex_r(DDukeActor* actor, int xchange, int ychange, int zchange, un
|
|||
actor->spr.pos.Y = pos.Y;
|
||||
|
||||
if (dasectp)
|
||||
if ((dasectp != actor->spr.sector()))
|
||||
if ((dasectp != actor->sector()))
|
||||
ChangeActorSect(actor, dasectp);
|
||||
int daz = actor->spr.pos.Z + ((zchange * TICSPERFRAME) >> 3);
|
||||
if ((daz > actor->ceilingz) && (daz <= actor->floorz))
|
||||
|
@ -457,7 +457,7 @@ void guts_r(DDukeActor* actor, int gtype, int n, int p)
|
|||
else sx = sy = 32;
|
||||
|
||||
gutz = actor->spr.pos.Z - (8 << 8);
|
||||
floorz = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
floorz = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
|
||||
if (gutz > (floorz - (8 << 8)))
|
||||
gutz = floorz - (8 << 8);
|
||||
|
@ -485,7 +485,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->spr.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->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);
|
||||
if (spawned && pal != 0)
|
||||
spawned->spr.pal = pal;
|
||||
}
|
||||
|
@ -510,7 +510,7 @@ void movefta_r(void)
|
|||
p = findplayer(act, &x);
|
||||
j = 0;
|
||||
|
||||
ssect = psect = act->spr.sector();
|
||||
ssect = psect = act->sector();
|
||||
|
||||
if (ps[p].GetActor()->spr.extra > 0)
|
||||
{
|
||||
|
@ -544,14 +544,14 @@ void movefta_r(void)
|
|||
{
|
||||
int r1 = krand();
|
||||
int r2 = krand();
|
||||
j = cansee(sx, sy, act->spr.pos.Z - (r2 % (52 << 8)), act->spr.sector(), px, py, ps[p].opos.Z - (r1 % (32 << 8)), ps[p].cursector);
|
||||
j = cansee(sx, sy, act->spr.pos.Z - (r2 % (52 << 8)), act->sector(), px, py, ps[p].opos.Z - (r1 % (32 << 8)), ps[p].cursector);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int r1 = krand();
|
||||
int r2 = krand();
|
||||
j = cansee(act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - ((r2 & 31) << 8), act->spr.sector(), ps[p].opos.X, ps[p].opos.Y, ps[p].opos.Z - ((r1 & 31) << 8), ps[p].cursector);
|
||||
j = cansee(act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - ((r2 & 31) << 8), act->sector(), ps[p].opos.X, ps[p].opos.Y, ps[p].opos.Z - ((r1 & 31) << 8), ps[p].cursector);
|
||||
}
|
||||
|
||||
|
||||
|
@ -567,9 +567,9 @@ void movefta_r(void)
|
|||
case NUKEBARREL:
|
||||
case NUKEBARRELDENTED:
|
||||
case NUKEBARRELLEAKED:
|
||||
if (act->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->spr.sector()->ceilingshade;
|
||||
else act->spr.shade = act->spr.sector()->floorshade;
|
||||
if (act->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->sector()->ceilingshade;
|
||||
else act->spr.shade = act->sector()->floorshade;
|
||||
|
||||
act->timetosleep = 0;
|
||||
ChangeActorStat(act, STAT_STANDABLE);
|
||||
|
@ -589,9 +589,9 @@ void movefta_r(void)
|
|||
}
|
||||
if (/*!j &&*/ badguy(act)) // this is like RedneckGDX. j is uninitialized here, i.e. most likely not 0.
|
||||
{
|
||||
if (act->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->spr.sector()->ceilingshade;
|
||||
else act->spr.shade = act->spr.sector()->floorshade;
|
||||
if (act->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
act->spr.shade = act->sector()->ceilingshade;
|
||||
else act->spr.shade = act->sector()->floorshade;
|
||||
|
||||
if (act->spr.picnum == HEN || act->spr.picnum == COW || act->spr.picnum == PIG || act->spr.picnum == DOGRUN || ((isRRRA()) && act->spr.picnum == RABBIT))
|
||||
{
|
||||
|
@ -619,7 +619,7 @@ DDukeActor* ifhitsectors_r(sectortype* sect)
|
|||
DukeStatIterator it(STAT_MISC);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
if (a1->spr.picnum == EXPLOSION2 || (a1->spr.picnum == EXPLOSION3 && sect == a1->spr.sector()))
|
||||
if (a1->spr.picnum == EXPLOSION2 || (a1->spr.picnum == EXPLOSION3 && sect == a1->sector()))
|
||||
return a1;
|
||||
}
|
||||
return nullptr;
|
||||
|
@ -774,7 +774,7 @@ void movefallers_r(void)
|
|||
DukeStatIterator it(STAT_FALLER);
|
||||
while (auto act = it.Next())
|
||||
{
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
if (act->temp_data[0] == 0)
|
||||
{
|
||||
|
@ -828,10 +828,10 @@ void movefallers_r(void)
|
|||
}
|
||||
|
||||
int x;
|
||||
if (fi.floorspace(act->spr.sector())) x = 0;
|
||||
if (fi.floorspace(act->sector())) x = 0;
|
||||
else
|
||||
{
|
||||
if (fi.ceilingspace(act->spr.sector()))
|
||||
if (fi.ceilingspace(act->sector()))
|
||||
x = gs.gravity / 6;
|
||||
else
|
||||
x = gs.gravity;
|
||||
|
@ -903,7 +903,7 @@ static void movecrack(DDukeActor* actor)
|
|||
static void movebolt(DDukeActor* actor)
|
||||
{
|
||||
int x;
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
findplayer(actor, &x);
|
||||
if (x > 20480) return;
|
||||
|
@ -1066,7 +1066,7 @@ void movestandables_r(void)
|
|||
static void chickenarrow(DDukeActor* actor)
|
||||
{
|
||||
actor->spr.hitag++;
|
||||
if (actor->attackertype != BOSS2 && actor->spr.xrepeat >= 10 && actor->spr.sector()->lotag != 2)
|
||||
if (actor->attackertype != BOSS2 && actor->spr.xrepeat >= 10 && actor->sector()->lotag != 2)
|
||||
{
|
||||
auto spawned = spawn(actor, SMALLSMOKE);
|
||||
if (spawned) spawned->spr.pos.Z += (1 << 8);
|
||||
|
@ -1285,14 +1285,14 @@ bool weaponhitsector(DDukeActor *proj, const vec3_t& oldpos)
|
|||
|
||||
if (proj->spr.zvel < 0)
|
||||
{
|
||||
if (proj->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
if (proj->spr.sector()->ceilingpal == 0)
|
||||
if (proj->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
if (proj->sector()->ceilingpal == 0)
|
||||
{
|
||||
deletesprite(proj);
|
||||
return true;
|
||||
}
|
||||
|
||||
fi.checkhitceiling(proj->spr.sector());
|
||||
fi.checkhitceiling(proj->sector());
|
||||
}
|
||||
|
||||
if (!isRRRA() && proj->spr.picnum == FREEZEBLAST)
|
||||
|
@ -1323,12 +1323,12 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
|
||||
p = -1;
|
||||
|
||||
if (proj->spr.picnum == RPG && proj->spr.sector()->lotag == 2)
|
||||
if (proj->spr.picnum == RPG && proj->sector()->lotag == 2)
|
||||
{
|
||||
k = proj->spr.xvel >> 1;
|
||||
ll = proj->spr.zvel >> 1;
|
||||
}
|
||||
else if (isRRRA() && proj->spr.picnum == RPG2 && proj->spr.sector()->lotag == 2)
|
||||
else if (isRRRA() && proj->spr.picnum == RPG2 && proj->sector()->lotag == 2)
|
||||
{
|
||||
k = proj->spr.xvel >> 1;
|
||||
ll = proj->spr.zvel >> 1;
|
||||
|
@ -1346,7 +1346,7 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
switch (proj->spr.picnum)
|
||||
{
|
||||
case RPG:
|
||||
if (proj->attackertype != BOSS2 && proj->spr.xrepeat >= 10 && proj->spr.sector()->lotag != 2)
|
||||
if (proj->attackertype != BOSS2 && proj->spr.xrepeat >= 10 && proj->sector()->lotag != 2)
|
||||
{
|
||||
spawn(proj, SMALLSMOKE)->spr.pos.Z += (1 << 8);
|
||||
}
|
||||
|
@ -1365,7 +1365,7 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
}
|
||||
else
|
||||
makeitfall(proj);
|
||||
if (proj->spr.xrepeat >= 10 && proj->spr.sector()->lotag != 2)
|
||||
if (proj->spr.xrepeat >= 10 && proj->sector()->lotag != 2)
|
||||
{
|
||||
spawn(proj, SMALLSMOKE)->spr.pos.Z += (1 << 8);
|
||||
}
|
||||
|
@ -1381,7 +1381,7 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
if (FindDistance2D(proj->spr.pos.vec2 - proj->temp_actor->spr.pos.vec2) < 256)
|
||||
coll.setSprite(proj->temp_actor);
|
||||
|
||||
if (!proj->insector()) // || (isRR() && proj->spr.sector()->filler == 800))
|
||||
if (!proj->insector()) // || (isRR() && proj->sector()->filler == 800))
|
||||
{
|
||||
deletesprite(proj);
|
||||
return;
|
||||
|
@ -1391,14 +1391,14 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
{
|
||||
if (proj->spr.pos.Z < proj->ceilingz)
|
||||
{
|
||||
coll.setSector(proj->spr.sector());
|
||||
coll.setSector(proj->sector());
|
||||
proj->spr.zvel = -1;
|
||||
}
|
||||
else
|
||||
if (proj->spr.pos.Z > proj->floorz)
|
||||
{
|
||||
coll.setSector(proj->spr.sector());
|
||||
if (proj->spr.sector()->lotag != 1)
|
||||
coll.setSector(proj->sector());
|
||||
if (proj->sector()->lotag != 1)
|
||||
proj->spr.zvel = 1;
|
||||
}
|
||||
}
|
||||
|
@ -1407,7 +1407,7 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
{
|
||||
for (k = -3; k < 2; k++)
|
||||
{
|
||||
auto x = EGS(proj->spr.sector(),
|
||||
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),
|
||||
|
@ -1463,7 +1463,7 @@ static void weaponcommon_r(DDukeActor *proj)
|
|||
deletesprite(proj);
|
||||
return;
|
||||
}
|
||||
if ((proj->spr.picnum == RPG || (isRRRA() && proj->spr.picnum == RPG2)) && proj->spr.sector()->lotag == 2 && proj->spr.xrepeat >= 10 && rnd(184))
|
||||
if ((proj->spr.picnum == RPG || (isRRRA() && proj->spr.picnum == RPG2)) && proj->sector()->lotag == 2 && proj->spr.xrepeat >= 10 && rnd(184))
|
||||
spawn(proj, WATERBUBBLE);
|
||||
|
||||
}
|
||||
|
@ -1552,7 +1552,7 @@ void movetransports_r(void)
|
|||
DukeStatIterator iti(STAT_TRANSPORT);
|
||||
while (auto act = iti.Next())
|
||||
{
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
sectlotag = sectp->lotag;
|
||||
|
||||
auto Owner = act->GetOwner();
|
||||
|
@ -1606,7 +1606,7 @@ void movetransports_r(void)
|
|||
ps[p].opos.Z = ps[p].pos.Z = Owner->spr.pos.Z - (gs.playerheight - (4 << 8));
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
ps[p].setCursector(act2->spr.sector());
|
||||
ps[p].setCursector(act2->sector());
|
||||
|
||||
auto beam = spawn(Owner, TRANSPORTERBEAM);
|
||||
if (beam) S_PlayActorSound(TELEPORTER, beam);
|
||||
|
@ -1815,7 +1815,7 @@ void movetransports_r(void)
|
|||
case ST_0_NO_EFFECT:
|
||||
if (onfloorz)
|
||||
{
|
||||
if (checkcursectnums(act->spr.sector()) == -1 && checkcursectnums(Owner->spr.sector()) == -1)
|
||||
if (checkcursectnums(act->sector()) == -1 && checkcursectnums(Owner->sector()) == -1)
|
||||
{
|
||||
act2->spr.pos.X += (Owner->spr.pos.X - act->spr.pos.X);
|
||||
act2->spr.pos.Y += (Owner->spr.pos.Y - act->spr.pos.Y);
|
||||
|
@ -2061,7 +2061,7 @@ static void rrra_specialstats()
|
|||
act->spr.extra = 1;
|
||||
}
|
||||
movesprite_ex(act, 0, 0, -300, CLIPMASK0, coll);
|
||||
if (act->spr.sector()->ceilingz + (4 << 8) > act->spr.pos.Z)
|
||||
if (act->sector()->ceilingz + (4 << 8) > act->spr.pos.Z)
|
||||
{
|
||||
act->spr.picnum = 0;
|
||||
act->spr.extra = 100;
|
||||
|
@ -2069,7 +2069,7 @@ static void rrra_specialstats()
|
|||
}
|
||||
else if (act->spr.extra == 200)
|
||||
{
|
||||
SetActor(act, { act->spr.pos.X, act->spr.pos.Y, act->spr.sector()->floorz - 10 });
|
||||
SetActor(act, { act->spr.pos.X, act->spr.pos.Y, act->sector()->floorz - 10 });
|
||||
act->spr.extra = 1;
|
||||
act->spr.picnum = PIG + 11;
|
||||
spawn(act, TRANSPORTERSTAR);
|
||||
|
@ -2293,8 +2293,8 @@ void rr_specialstats()
|
|||
if (act->spr.hitag == 100)
|
||||
{
|
||||
act->spr.pos.Z += (4 << 8);
|
||||
if (act->spr.pos.Z >= act->spr.sector()->floorz + 15168)
|
||||
act->spr.pos.Z = act->spr.sector()->floorz + 15168;
|
||||
if (act->spr.pos.Z >= act->sector()->floorz + 15168)
|
||||
act->spr.pos.Z = act->sector()->floorz + 15168;
|
||||
}
|
||||
|
||||
if (act->spr.picnum == LUMBERBLADE)
|
||||
|
@ -2303,7 +2303,7 @@ void rr_specialstats()
|
|||
if (act->spr.extra == 192)
|
||||
{
|
||||
act->spr.hitag = 0;
|
||||
act->spr.pos.Z = act->spr.sector()->floorz - 15168;
|
||||
act->spr.pos.Z = act->sector()->floorz - 15168;
|
||||
act->spr.extra = 0;
|
||||
act->spr.picnum = RRTILE3410;
|
||||
DukeStatIterator it2(STAT_DEFAULT);
|
||||
|
@ -2410,13 +2410,13 @@ void rr_specialstats()
|
|||
if (act->spr.picnum == BOWLINGPINSPOT)
|
||||
if (act->spr.lotag == 100)
|
||||
{
|
||||
auto pst = pinsectorresetup(act->spr.sector());
|
||||
auto pst = pinsectorresetup(act->sector());
|
||||
if (pst)
|
||||
{
|
||||
act->spr.lotag = 0;
|
||||
if (act->spr.extra == 1)
|
||||
{
|
||||
pst = checkpins(act->spr.sector());
|
||||
pst = checkpins(act->sector());
|
||||
if (!pst)
|
||||
{
|
||||
act->spr.extra = 2;
|
||||
|
@ -2425,7 +2425,7 @@ void rr_specialstats()
|
|||
if (act->spr.extra == 2)
|
||||
{
|
||||
act->spr.extra = 0;
|
||||
resetpins(act->spr.sector());
|
||||
resetpins(act->sector());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2469,7 +2469,7 @@ void rr_specialstats()
|
|||
|
||||
static void heavyhbomb(DDukeActor *actor)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int x, l;
|
||||
auto Owner = actor->GetOwner();
|
||||
|
||||
|
@ -2520,7 +2520,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
}
|
||||
}
|
||||
actor->spr.zvel = -((4 - actor->spr.yvel) << 8);
|
||||
if (actor->spr.sector()->lotag == 2)
|
||||
if (actor->sector()->lotag == 2)
|
||||
actor->spr.zvel >>= 2;
|
||||
actor->spr.yvel++;
|
||||
}
|
||||
|
@ -2536,7 +2536,7 @@ static void heavyhbomb(DDukeActor *actor)
|
|||
MulScale(actor->spr.xvel, bsin(actor->spr.ang), 14),
|
||||
actor->spr.zvel, CLIPMASK0, coll);
|
||||
|
||||
if (actor->spr.sector()->lotag == 1 && actor->spr.zvel == 0)
|
||||
if (actor->sector()->lotag == 1 && actor->spr.zvel == 0)
|
||||
{
|
||||
actor->spr.pos.Z += (32 << 8);
|
||||
if (actor->temp_data[5] == 0)
|
||||
|
@ -2620,7 +2620,7 @@ DETONATEB:
|
|||
case CHEERBOMB: m = gs.morterblastradius; break;
|
||||
}
|
||||
|
||||
if (actor->spr.sector()->lotag != 800)
|
||||
if (actor->sector()->lotag != 800)
|
||||
{
|
||||
fi.hitradius(actor, m, x >> 2, x >> 1, x - (x >> 2), x);
|
||||
spawn(actor, EXPLOSION2);
|
||||
|
@ -2651,7 +2651,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->spr.sector(), ps[p].pos.X, ps[p].pos.Y, ps[p].pos.Z, ps[p].cursector))
|
||||
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 (ps[p].ammo_amount[DYNAMITE_WEAPON] < gs.max_ammo_amount[DYNAMITE_WEAPON])
|
||||
if (actor->spr.pal == 0)
|
||||
{
|
||||
|
@ -2713,7 +2713,7 @@ static int henstand(DDukeActor *actor)
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
if (actor->spr.sector()->lotag == 900)
|
||||
if (actor->sector()->lotag == 900)
|
||||
actor->spr.xvel = 0;
|
||||
if (actor->spr.xvel)
|
||||
{
|
||||
|
@ -2771,7 +2771,7 @@ static int henstand(DDukeActor *actor)
|
|||
return 2;//deletesprite(actor); still needs to run a script but should not do on a deleted object
|
||||
}
|
||||
}
|
||||
else if (actor->spr.sector()->lotag == 900)
|
||||
else if (actor->sector()->lotag == 900)
|
||||
{
|
||||
if (actor->spr.picnum == BOWLINGBALL)
|
||||
ballreturn(actor);
|
||||
|
@ -2813,7 +2813,7 @@ void moveactors_r(void)
|
|||
continue;
|
||||
}
|
||||
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
switch(act->spr.picnum)
|
||||
{
|
||||
|
@ -2934,7 +2934,7 @@ void moveactors_r(void)
|
|||
deletesprite(act);
|
||||
continue;
|
||||
}
|
||||
if (act->spr.sector()->lotag == 900)
|
||||
if (act->sector()->lotag == 900)
|
||||
{
|
||||
S_StopSound(356, nullptr);
|
||||
}
|
||||
|
@ -3073,7 +3073,7 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
while (auto act = it.Next())
|
||||
{
|
||||
t = &act->temp_data[0];
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
if (!act->insector() || act->spr.xrepeat == 0)
|
||||
{
|
||||
|
@ -3084,8 +3084,8 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
switch (act->spr.picnum)
|
||||
{
|
||||
case SHOTGUNSPRITE:
|
||||
if (act->spr.sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->spr.sector()->floorz - (8 << 8))
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -3174,8 +3174,8 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
deletesprite(act);
|
||||
continue;
|
||||
case FEATHER + 1: // feather
|
||||
act->floorz = act->spr.pos.Z = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (act->spr.sector()->lotag == 800)
|
||||
act->floorz = act->spr.pos.Z = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (act->sector()->lotag == 800)
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -3184,8 +3184,8 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
case FEATHER:
|
||||
if (!money(act, BLOODPOOL)) continue;
|
||||
|
||||
if (act->spr.sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->spr.sector()->floorz - (8 << 8))
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -3239,8 +3239,8 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
if (!jibs(act, JIBS6, false, true, true, act->spr.picnum == DUKELEG || act->spr.picnum == DUKETORSO || act->spr.picnum == DUKEGUN,
|
||||
isRRRA() && (act->spr.picnum == RRTILE2465 || act->spr.picnum == RRTILE2560))) continue;
|
||||
|
||||
if (act->spr.sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->spr.sector()->floorz - (8 << 8))
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
continue;
|
||||
|
@ -3251,8 +3251,8 @@ void moveexplosions_r(void) // STATNUM 5
|
|||
case BLOODPOOL:
|
||||
if (!bloodpool(act, false, TIRE)) continue;
|
||||
|
||||
if (act->spr.sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->spr.sector()->floorz - (8 << 8))
|
||||
if (act->sector()->lotag == 800)
|
||||
if (act->spr.pos.Z >= act->sector()->floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(act);
|
||||
}
|
||||
|
@ -3328,7 +3328,7 @@ void handle_se06_r(DDukeActor *actor)
|
|||
}
|
||||
if (!hulkspawn)
|
||||
{
|
||||
ns = EGS(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.sector()->ceilingz + 119428, 3677, -8, 16, 16, 0, 0, 0, actor, 5);
|
||||
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);
|
||||
if (ns)
|
||||
{
|
||||
ns->spr.cstat = CSTAT_SPRITE_TRANS_FLIP | CSTAT_SPRITE_TRANSLUCENT;
|
||||
|
@ -3341,7 +3341,7 @@ void handle_se06_r(DDukeActor *actor)
|
|||
{
|
||||
ns->spr.cstat = 0;
|
||||
ns->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
ns->spr.pos.Z = actor->spr.sector()->floorz - 6144;
|
||||
ns->spr.pos.Z = actor->sector()->floorz - 6144;
|
||||
}
|
||||
deletesprite(actor);
|
||||
return;
|
||||
|
@ -3761,20 +3761,20 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
}
|
||||
if (badguy(actor) && actor->spr.extra <= 0)
|
||||
{
|
||||
if (actor->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
{
|
||||
if (actor->spr.sector()->shadedsector == 1)
|
||||
if (actor->sector()->shadedsector == 1)
|
||||
{
|
||||
actor->spr.shade += (16 - actor->spr.shade) >> 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->spr.shade += (actor->spr.sector()->ceilingshade - actor->spr.shade) >> 1;
|
||||
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->spr.shade += (actor->spr.sector()->floorshade - actor->spr.shade) >> 1;
|
||||
actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
@ -3803,7 +3803,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
{
|
||||
if (actor->spr.zvel > 0)
|
||||
{
|
||||
actor->floorz = l = getflorzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->floorz = l = getflorzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if (isRRRA())
|
||||
{
|
||||
if (actor->spr.pos.Z > (l - (28 << 8)))
|
||||
|
@ -3817,7 +3817,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
}
|
||||
else
|
||||
{
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
actor->ceilingz = l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (50 << 8))
|
||||
{
|
||||
actor->spr.pos.Z = l + (50 << 8);
|
||||
|
@ -3829,7 +3829,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
actor->spr.pos.Z = actor->floorz;
|
||||
if (actor->spr.zvel < 0)
|
||||
{
|
||||
l = getceilzofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
l = getceilzofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y);
|
||||
if ((actor->spr.pos.Z - l) < (66 << 8))
|
||||
{
|
||||
actor->spr.pos.Z = l + (66 << 8);
|
||||
|
@ -3881,7 +3881,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
}
|
||||
if (isRRRA())
|
||||
{
|
||||
if (actor->spr.sector()->lotag != 1)
|
||||
if (actor->sector()->lotag != 1)
|
||||
{
|
||||
switch (actor->spr.picnum)
|
||||
{
|
||||
|
@ -3892,7 +3892,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
break;
|
||||
}
|
||||
}
|
||||
else if (actor->spr.sector()->lotag == 1)
|
||||
else if (actor->sector()->lotag == 1)
|
||||
{
|
||||
switch (actor->spr.picnum)
|
||||
{
|
||||
|
@ -3913,20 +3913,20 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
|
||||
if (a)
|
||||
{
|
||||
if (actor->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
if (actor->sector()->ceilingstat & CSTAT_SECTOR_SKY)
|
||||
{
|
||||
if (actor->spr.sector()->shadedsector == 1)
|
||||
if (actor->sector()->shadedsector == 1)
|
||||
{
|
||||
actor->spr.shade += (16 - actor->spr.shade) >> 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->spr.shade += (actor->spr.sector()->ceilingshade - actor->spr.shade) >> 1;
|
||||
actor->spr.shade += (actor->sector()->ceilingshade - actor->spr.shade) >> 1;
|
||||
}
|
||||
}
|
||||
else actor->spr.shade += (actor->spr.sector()->floorshade - actor->spr.shade) >> 1;
|
||||
else actor->spr.shade += (actor->sector()->floorshade - actor->spr.shade) >> 1;
|
||||
|
||||
if (actor->spr.sector()->floorpicnum == MIRROR)
|
||||
if (actor->sector()->floorpicnum == MIRROR)
|
||||
deletesprite(actor);
|
||||
}
|
||||
}
|
||||
|
@ -3965,7 +3965,7 @@ static int fallspecial(DDukeActor *actor, int playernum)
|
|||
int sphit = 0;
|
||||
if (isRRRA())
|
||||
{
|
||||
if (actor->spr.sector()->lotag == 801)
|
||||
if (actor->sector()->lotag == 801)
|
||||
{
|
||||
if (actor->spr.picnum == ROCK)
|
||||
{
|
||||
|
@ -3975,7 +3975,7 @@ static int fallspecial(DDukeActor *actor, int playernum)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
else if (actor->spr.sector()->lotag == 802)
|
||||
else if (actor->sector()->lotag == 802)
|
||||
{
|
||||
if (actor->spr.picnum != APLAYER && badguy(actor) && actor->spr.pos.Z == actor->floorz - FOURSLEIGHT)
|
||||
{
|
||||
|
@ -3985,14 +3985,14 @@ static int fallspecial(DDukeActor *actor, int playernum)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
else if (actor->spr.sector()->lotag == 803)
|
||||
else if (actor->sector()->lotag == 803)
|
||||
{
|
||||
if (actor->spr.picnum == ROCK2)
|
||||
addspritetodelete();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (actor->spr.sector()->lotag == 800)
|
||||
if (actor->sector()->lotag == 800)
|
||||
{
|
||||
if (actor->spr.picnum == 40)
|
||||
{
|
||||
|
@ -4016,7 +4016,7 @@ static int fallspecial(DDukeActor *actor, int playernum)
|
|||
actor->attackertype = SHOTSPARK1;
|
||||
actor->extra = 1;
|
||||
}
|
||||
else if (isRRRA() && (actor->spr.sector()->floorpicnum == RRTILE7820 || actor->spr.sector()->floorpicnum == RRTILE7768))
|
||||
else if (isRRRA() && (actor->sector()->floorpicnum == RRTILE7820 || actor->sector()->floorpicnum == RRTILE7768))
|
||||
{
|
||||
if (actor->spr.picnum != MINION && actor->spr.pal != 19)
|
||||
{
|
||||
|
@ -4066,7 +4066,7 @@ void destroyit(DDukeActor *actor)
|
|||
DukeStatIterator it(STAT_DESTRUCT);
|
||||
while (auto a2 = it.Next())
|
||||
{
|
||||
auto it_sect = a2->spr.sector();
|
||||
auto it_sect = a2->sector();
|
||||
if (hitag && hitag == a2->spr.hitag)
|
||||
{
|
||||
DukeSectIterator its(it_sect);
|
||||
|
@ -4079,10 +4079,10 @@ void destroyit(DDukeActor *actor)
|
|||
}
|
||||
}
|
||||
}
|
||||
if (spr && spr->spr.sector() != it_sect)
|
||||
if (spr && spr->sector() != it_sect)
|
||||
if (lotag == a2->spr.lotag)
|
||||
{
|
||||
auto sect = spr->spr.sector();
|
||||
auto sect = spr->sector();
|
||||
|
||||
auto destsect = spr->sector();
|
||||
auto srcsect = it_sect;
|
||||
|
@ -4127,7 +4127,7 @@ void destroyit(DDukeActor *actor)
|
|||
destsect->extra = srcsect->extra;
|
||||
}
|
||||
}
|
||||
it1.Reset(actor->spr.sector());
|
||||
it1.Reset(actor->sector());
|
||||
while (auto a2 = it1.Next())
|
||||
{
|
||||
switch (a2->spr.picnum)
|
||||
|
|
|
@ -175,7 +175,7 @@ void animatesprites_d(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
|
|||
t->pos = h->spr.interpolatedvec3(smoothratio);
|
||||
}
|
||||
|
||||
auto sectp = h->spr.sector();
|
||||
auto sectp = h->sector();
|
||||
t1 = h->temp_data[1];
|
||||
t3 = h->temp_data[3];
|
||||
t4 = h->temp_data[4];
|
||||
|
@ -401,7 +401,7 @@ void animatesprites_d(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
|
|||
goto PALONLY;
|
||||
}
|
||||
|
||||
if (ps[p].on_crane == nullptr && (h->spr.sector()->lotag & 0x7ff) != 1)
|
||||
if (ps[p].on_crane == nullptr && (h->sector()->lotag & 0x7ff) != 1)
|
||||
{
|
||||
l = h->spr.pos.Z - ps[p].GetActor()->floorz + (3 << 8);
|
||||
if (l > 1024 && h->spr.yrepeat > 32 && h->spr.extra > 0)
|
||||
|
|
|
@ -107,7 +107,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
|
|||
default:
|
||||
if (((t->cstat & CSTAT_SPRITE_ALIGNMENT_WALL)) || (badguypic(t->picnum) && t->extra > 0) || t->statnum == STAT_PLAYER)
|
||||
{
|
||||
if (h->spr.sector()->shadedsector == 1 && h->spr.statnum != 1)
|
||||
if (h->sector()->shadedsector == 1 && h->spr.statnum != 1)
|
||||
{
|
||||
h->spr.shade = 16;
|
||||
t->shade = 16;
|
||||
|
@ -158,7 +158,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
|
|||
t->pos = h->spr.interpolatedvec3(smoothratio);
|
||||
}
|
||||
|
||||
auto sectp = h->spr.sector();
|
||||
auto sectp = h->sector();
|
||||
t1 = h->temp_data[1];
|
||||
t3 = h->temp_data[3];
|
||||
t4 = h->temp_data[4];
|
||||
|
@ -444,7 +444,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
|
|||
goto PALONLY;
|
||||
}
|
||||
|
||||
if (ps[p].on_crane == nullptr && (h->spr.sector()->lotag & 0x7ff) != 1)
|
||||
if (ps[p].on_crane == nullptr && (h->sector()->lotag & 0x7ff) != 1)
|
||||
{
|
||||
l = h->spr.pos.Z - ps[p].GetActor()->floorz + (3 << 8);
|
||||
if (l > 1024 && h->spr.yrepeat > 32 && h->spr.extra > 0)
|
||||
|
@ -582,7 +582,7 @@ void animatesprites_r(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
|
|||
stuff:
|
||||
if (t->pal == 6) t->shade = -120;
|
||||
|
||||
if (h->spr.sector()->shadedsector == 1)
|
||||
if (h->sector()->shadedsector == 1)
|
||||
t->shade = 16;
|
||||
[[fallthrough]];
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ void ballreturn(DDukeActor *ball)
|
|||
DukeStatIterator it(STAT_BOWLING);
|
||||
while (auto act = it.Next())
|
||||
{
|
||||
if (act->spr.picnum == RRTILE281 && ball->spr.sector() == act->spr.sector())
|
||||
if (act->spr.picnum == RRTILE281 && ball->sector() == act->sector())
|
||||
{
|
||||
DukeStatIterator it2(STAT_BOWLING);
|
||||
while (auto act2 = it2.Next())
|
||||
|
|
|
@ -1478,7 +1478,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->spr.sector(), tosee->spr.pos.X, tosee->spr.pos.Y, tosee->spr.pos.Z, tosee->sector());
|
||||
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());
|
||||
|
||||
if (j == 0)
|
||||
{
|
||||
|
@ -1490,7 +1490,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->spr.sector(), tosee->spr.pos.X, tosee->spr.pos.Y, tosee->spr.pos.Z - ((isRR()? 28 : 24) << 8), tosee->sector());
|
||||
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());
|
||||
|
||||
if (j == 0)
|
||||
{
|
||||
|
@ -1541,12 +1541,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->spr.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->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());
|
||||
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->spr.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->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());
|
||||
parseifelse(j);
|
||||
if (j) g_ac->timetosleep = SLEEPTIME;
|
||||
break;
|
||||
|
@ -1857,7 +1857,7 @@ int ParseState::parse(void)
|
|||
break;
|
||||
case concmd_tearitup:
|
||||
insptr++;
|
||||
tearitup(g_ac->spr.sector());
|
||||
tearitup(g_ac->sector());
|
||||
break;
|
||||
case concmd_fall:
|
||||
insptr++;
|
||||
|
@ -2189,7 +2189,7 @@ int ParseState::parse(void)
|
|||
s = 0;
|
||||
else s = (krand()%3);
|
||||
|
||||
auto spawned = EGS(g_ac->spr.sector(),
|
||||
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),
|
||||
dnum + s, g_ac->spr.shade, 32 + (krand() & 15), 32 + (krand() & 15),
|
||||
krand() & 2047, (krand() & 127) + 32, -(krand() & 2047), g_ac, 5);
|
||||
|
@ -2299,10 +2299,10 @@ int ParseState::parse(void)
|
|||
parseifelse(ud.coop || numplayers > 2);
|
||||
break;
|
||||
case concmd_ifonmud:
|
||||
parseifelse(abs(g_ac->spr.pos.Z - g_ac->spr.sector()->floorz) < (32 << 8) && g_ac->spr.sector()->floorpicnum == 3073); // eew, hard coded tile numbers.. :?
|
||||
parseifelse(abs(g_ac->spr.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->spr.sector()->floorz) < (32<<8) && g_ac->spr.sector()->lotag == ST_1_ABOVE_WATER);
|
||||
parseifelse( abs(g_ac->spr.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);
|
||||
|
@ -2323,7 +2323,7 @@ int ParseState::parse(void)
|
|||
break;
|
||||
|
||||
case concmd_ifinwater:
|
||||
parseifelse( g_ac->spr.sector()->lotag == 2);
|
||||
parseifelse( g_ac->sector()->lotag == 2);
|
||||
break;
|
||||
case concmd_ifcount:
|
||||
insptr++;
|
||||
|
@ -2496,17 +2496,17 @@ int ParseState::parse(void)
|
|||
parseifelse(PlayerInput(g_p, SB_OPEN));
|
||||
break;
|
||||
case concmd_ifoutside:
|
||||
parseifelse(g_ac->spr.sector()->ceilingstat & CSTAT_SECTOR_SKY);
|
||||
parseifelse(g_ac->sector()->ceilingstat & CSTAT_SECTOR_SKY);
|
||||
break;
|
||||
case concmd_ifmultiplayer:
|
||||
parseifelse(ud.multimode > 1);
|
||||
break;
|
||||
case concmd_operate:
|
||||
insptr++;
|
||||
if( g_ac->spr.sector()->lotag == 0 )
|
||||
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->spr.sector(), g_ac->spr.ang, hit, 768, 1);
|
||||
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);
|
||||
auto sectp = hit.hitSector;
|
||||
if (sectp)
|
||||
{
|
||||
|
@ -2528,7 +2528,7 @@ int ParseState::parse(void)
|
|||
}
|
||||
break;
|
||||
case concmd_ifinspace:
|
||||
parseifelse(fi.ceilingspace(g_ac->spr.sector()));
|
||||
parseifelse(fi.ceilingspace(g_ac->sector()));
|
||||
break;
|
||||
|
||||
case concmd_spritepal:
|
||||
|
@ -2813,7 +2813,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->spr.sector(),ps[g_p].pos.X,ps[g_p].pos.Y,ps[g_p].pos.Z+(16<<8),ps[g_p].GetActor()->spr.sector()) )
|
||||
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()) )
|
||||
{
|
||||
ps[g_p].knee_incs = 1;
|
||||
if(ps[g_p].weapon_pos == 0)
|
||||
|
@ -2823,21 +2823,21 @@ int ParseState::parse(void)
|
|||
break;
|
||||
case concmd_ifawayfromwall:
|
||||
{
|
||||
auto s1 = g_ac->spr.sector();
|
||||
auto s1 = g_ac->sector();
|
||||
|
||||
j = 0;
|
||||
|
||||
updatesector(g_ac->spr.pos.X + 108, g_ac->spr.pos.Y + 108, &s1);
|
||||
if (s1 == g_ac->spr.sector())
|
||||
if (s1 == g_ac->sector())
|
||||
{
|
||||
updatesector(g_ac->spr.pos.X - 108, g_ac->spr.pos.Y - 108, &s1);
|
||||
if (s1 == g_ac->spr.sector())
|
||||
if (s1 == g_ac->sector())
|
||||
{
|
||||
updatesector(g_ac->spr.pos.X + 108, g_ac->spr.pos.Y - 108, &s1);
|
||||
if (s1 == g_ac->spr.sector())
|
||||
if (s1 == g_ac->sector())
|
||||
{
|
||||
updatesector(g_ac->spr.pos.X - 108, g_ac->spr.pos.Y + 108, &s1);
|
||||
if (s1 == g_ac->spr.sector())
|
||||
if (s1 == g_ac->sector())
|
||||
j = 1;
|
||||
}
|
||||
}
|
||||
|
@ -2852,7 +2852,7 @@ int ParseState::parse(void)
|
|||
insptr++;
|
||||
break;
|
||||
case concmd_ifinouterspace:
|
||||
parseifelse( fi.floorspace(g_ac->spr.sector()));
|
||||
parseifelse( fi.floorspace(g_ac->sector()));
|
||||
break;
|
||||
case concmd_ifnotmoving:
|
||||
parseifelse( (g_ac->movflag&kHitTypeMask) > kHitSector );
|
||||
|
@ -3461,19 +3461,19 @@ int ParseState::parse(void)
|
|||
case concmd_sectgetlotag:
|
||||
{
|
||||
insptr++;
|
||||
SetGameVarID(g_iLoTagID, g_ac->spr.sector()->lotag, g_ac, g_p);
|
||||
SetGameVarID(g_iLoTagID, g_ac->sector()->lotag, g_ac, g_p);
|
||||
break;
|
||||
}
|
||||
case concmd_sectgethitag:
|
||||
{
|
||||
insptr++;
|
||||
SetGameVarID(g_iHiTagID, g_ac->spr.sector()->hitag, g_ac, g_p);
|
||||
SetGameVarID(g_iHiTagID, g_ac->sector()->hitag, g_ac, g_p);
|
||||
break;
|
||||
}
|
||||
case concmd_gettexturefloor:
|
||||
{
|
||||
insptr++;
|
||||
SetGameVarID(g_iTextureID, g_ac->spr.sector()->floorpicnum, g_ac, g_p);
|
||||
SetGameVarID(g_iTextureID, g_ac->sector()->floorpicnum, g_ac, g_p);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3610,7 +3610,7 @@ int ParseState::parse(void)
|
|||
case concmd_gettextureceiling:
|
||||
{
|
||||
insptr++;
|
||||
SetGameVarID(g_iTextureID, g_ac->spr.sector()->ceilingpicnum, g_ac, g_p);
|
||||
SetGameVarID(g_iTextureID, g_ac->sector()->ceilingpicnum, g_ac, g_p);
|
||||
break;
|
||||
}
|
||||
case concmd_ifvarvarand:
|
||||
|
|
|
@ -67,7 +67,7 @@ inline int checkcursectnums(sectortype* se)
|
|||
{
|
||||
int i;
|
||||
for(i=connecthead;i>=0;i=connectpoint2[i])
|
||||
if(ps[i].GetActor() && ps[i].GetActor()->spr.sector() == se ) return i;
|
||||
if(ps[i].GetActor() && ps[i].GetActor()->sector() == se ) return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -174,7 +174,7 @@ int hits(DDukeActor* actor)
|
|||
if (actor->spr.picnum == TILE_APLAYER) zoff = isRR() ? PHEIGHT_RR : PHEIGHT_DUKE;
|
||||
else zoff = 0;
|
||||
|
||||
hitscan(actor->spr.pos, actor->spr.sector(), { bcos(actor->spr.ang), bsin(actor->spr.ang), 0 }, hit, CLIPMASK1);
|
||||
hitscan(actor->spr.pos, actor->sector(), { bcos(actor->spr.ang), bsin(actor->spr.ang), 0 }, hit, CLIPMASK1);
|
||||
return (FindDistance2D(hit.hitpos.vec2 - actor->spr.pos.vec2));
|
||||
}
|
||||
|
||||
|
@ -194,7 +194,7 @@ int hitasprite(DDukeActor* actor, DDukeActor** hitsp)
|
|||
else if (actor->spr.picnum == TILE_APLAYER) zoff = (39 << 8);
|
||||
else zoff = 0;
|
||||
|
||||
hitscan({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - zoff }, actor->spr.sector(), { bcos(actor->spr.ang), bsin(actor->spr.ang), 0 }, hit, CLIPMASK1);
|
||||
hitscan({ actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - 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))
|
||||
|
@ -346,7 +346,7 @@ DDukeActor* aim(DDukeActor* actor, int aang)
|
|||
a = (abs(Scale(act->spr.pos.Z - actor->spr.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->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z - (32 << 8), actor->spr.sector());
|
||||
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());
|
||||
|
||||
if (a && cans)
|
||||
{
|
||||
|
@ -500,7 +500,7 @@ void footprints(int snum)
|
|||
if ((p->cursector->floorstat & CSTAT_SECTOR_SLOPE) != 2)
|
||||
{
|
||||
int j = -1;
|
||||
DukeSectIterator it(actor->spr.sector());
|
||||
DukeSectIterator it(actor->sector());
|
||||
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)
|
||||
|
@ -999,7 +999,7 @@ int haskey(sectortype* sectp, int snum)
|
|||
|
||||
void shootbloodsplat(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, int atwith, int BIGFORCE, int OOZFILTER, int NEWBEAST)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int zvel;
|
||||
HitInfo hit{};
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ static void shootfireball(DDukeActor *actor, int p, int sx, int sy, int sz, int
|
|||
sizy = 7;
|
||||
}
|
||||
|
||||
auto spawned = EGS(actor->spr.sector(), sx, sy, sz, FIREBALL, -127, sizx, sizy, sa, vel, zvel, actor, (short)4);
|
||||
auto spawned = EGS(actor->sector(), sx, sy, sz, FIREBALL, -127, sizx, sizy, sa, vel, zvel, actor, (short)4);
|
||||
if (spawned)
|
||||
{
|
||||
spawned->spr.extra += (krand() & 7);
|
||||
|
@ -176,7 +176,7 @@ static void shootflamethrowerflame(DDukeActor* actor, int p, int sx, int sy, int
|
|||
if (badguy(actor) && (actor->spr.hitag & face_player_smart) != 0)
|
||||
sa = (short)(actor->spr.ang + (krand() & 31) - 16);
|
||||
|
||||
if (actor->spr.sector()->lotag == 2 && (krand() % 5) == 0)
|
||||
if (actor->sector()->lotag == 2 && (krand() % 5) == 0)
|
||||
spawned = spawn(actor, WATERBUBBLE);
|
||||
}
|
||||
else
|
||||
|
@ -186,7 +186,7 @@ static void shootflamethrowerflame(DDukeActor* actor, int p, int sx, int sy, int
|
|||
vel = (int)((((512 - (1024
|
||||
- abs(abs(getangle(sx - ps[p].opos.X, sy - ps[p].opos.Y) - sa) - 1024)))
|
||||
* 0.001953125f) * ps[p].GetActor()->spr.xvel) + 400);
|
||||
if (actor->spr.sector()->lotag == 2 && (krand() % 5) == 0)
|
||||
if (actor->sector()->lotag == 2 && (krand() % 5) == 0)
|
||||
spawned = spawn(actor, WATERBUBBLE);
|
||||
}
|
||||
|
||||
|
@ -201,7 +201,7 @@ static void shootflamethrowerflame(DDukeActor* actor, int p, int sx, int sy, int
|
|||
spawned->spr.pos.X = sx + bsin(sa + 630) / 448;
|
||||
spawned->spr.pos.Y = sy + bsin(sa + 112) / 448;
|
||||
spawned->spr.pos.Z = sz - 256;
|
||||
spawned->setsector(actor->spr.sector());
|
||||
spawned->setsector(actor->sector());
|
||||
spawned->spr.cstat = CSTAT_SPRITE_YCENTER;
|
||||
spawned->spr.ang = sa;
|
||||
spawned->spr.xrepeat = 2;
|
||||
|
@ -230,7 +230,7 @@ static void shootflamethrowerflame(DDukeActor* actor, int p, int sx, int sy, int
|
|||
|
||||
static void shootknee(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int zvel;
|
||||
HitInfo hit{};
|
||||
|
||||
|
@ -316,7 +316,7 @@ static void shootknee(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
|||
|
||||
static void shootweapon(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int zvel = 0;
|
||||
HitInfo hit{};
|
||||
|
||||
|
@ -565,7 +565,7 @@ static void shootweapon(DDukeActor *actor, int p, int sx, int sy, int sz, int sa
|
|||
|
||||
static void shootstuff(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
sectortype* sect = actor->spr.sector();
|
||||
sectortype* sect = actor->sector();
|
||||
int vel, zvel;
|
||||
int l, scount;
|
||||
|
||||
|
@ -676,7 +676,7 @@ static void shootstuff(DDukeActor* actor, int p, int sx, int sy, int sz, int sa,
|
|||
|
||||
static void shootrpg(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
int vel, zvel;
|
||||
int l, scount;
|
||||
|
||||
|
@ -842,7 +842,7 @@ static void shootrpg(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, i
|
|||
|
||||
static void shootlaser(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int zvel;
|
||||
int j;
|
||||
HitInfo hit{};
|
||||
|
@ -912,7 +912,7 @@ static void shootlaser(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
|||
|
||||
static void shootgrowspark(DDukeActor* actor, int p, int sx, int sy, int sz, int sa)
|
||||
{
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
int zvel;
|
||||
int k;
|
||||
HitInfo hit{};
|
||||
|
@ -1018,7 +1018,7 @@ void shoot_d(DDukeActor* actor, int atwith)
|
|||
}
|
||||
|
||||
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
zvel = 0;
|
||||
|
||||
if (actor->spr.picnum == TILE_APLAYER)
|
||||
|
@ -2891,9 +2891,9 @@ void processinput_d(int snum)
|
|||
|
||||
if (p->spritebridge == 0 && pact->insector())
|
||||
{
|
||||
j = pact->spr.sector()->floorpicnum;
|
||||
j = pact->sector()->floorpicnum;
|
||||
|
||||
if (j == PURPLELAVA || pact->spr.sector()->ceilingpicnum == PURPLELAVA)
|
||||
if (j == PURPLELAVA || pact->sector()->ceilingpicnum == PURPLELAVA)
|
||||
{
|
||||
if (p->boot_amount > 0)
|
||||
{
|
||||
|
@ -3053,7 +3053,7 @@ HORIZONLY:
|
|||
|
||||
if (psectlotag < 3)
|
||||
{
|
||||
psectp = pact->spr.sector();
|
||||
psectp = pact->sector();
|
||||
if (ud.clipping == 0 && psectp->lotag == 31)
|
||||
{
|
||||
auto secact = barrier_cast<DDukeActor*>(psectp->hitagactor);
|
||||
|
@ -3069,7 +3069,7 @@ HORIZONLY:
|
|||
if (!S_CheckActorSoundPlaying(pact, DUKE_ONWATER))
|
||||
S_PlayActorSound(DUKE_ONWATER, pact);
|
||||
|
||||
if (p->cursector != pact->spr.sector())
|
||||
if (p->cursector != pact->sector())
|
||||
ChangeActorSect(pact, p->cursector);
|
||||
|
||||
if (ud.clipping == 0)
|
||||
|
@ -3080,9 +3080,9 @@ HORIZONLY:
|
|||
{
|
||||
if (abs(pact->floorz - pact->ceilingz) < (48 << 8) || j)
|
||||
{
|
||||
if (!(pact->spr.sector()->lotag & 0x8000) && (isanunderoperator(pact->spr.sector()->lotag) ||
|
||||
isanearoperator(pact->spr.sector()->lotag)))
|
||||
fi.activatebysector(pact->spr.sector(), pact);
|
||||
if (!(pact->sector()->lotag & 0x8000) && (isanunderoperator(pact->sector()->lotag) ||
|
||||
isanearoperator(pact->sector()->lotag)))
|
||||
fi.activatebysector(pact->sector(), pact);
|
||||
if (j)
|
||||
{
|
||||
quickkill(p);
|
||||
|
|
|
@ -85,7 +85,7 @@ void incur_damage_r(struct player_struct* p)
|
|||
|
||||
static void shootmelee(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int zvel;
|
||||
HitInfo hit{};
|
||||
|
||||
|
@ -111,7 +111,7 @@ static void shootmelee(DDukeActor *actor, int p, int sx, int sy, int sz, int sa,
|
|||
DukeStatIterator its(STAT_EFFECTOR);
|
||||
while (auto effector = its.Next())
|
||||
{
|
||||
if (effector->spr.sector() == hit.hitSector && effector->spr.picnum == SECTOREFFECTOR && effector->GetOwner()
|
||||
if (effector->sector() == hit.hitSector && effector->spr.picnum == SECTOREFFECTOR && effector->GetOwner()
|
||||
&& effector->spr.lotag == SE_7_TELEPORT)
|
||||
{
|
||||
int nx, ny, nz;
|
||||
|
@ -125,7 +125,7 @@ static void shootmelee(DDukeActor *actor, int p, int sx, int sy, int sz, int sa,
|
|||
{
|
||||
nz = effector->GetOwner()->sector()->ceilingz;
|
||||
}
|
||||
hitscan({ nx, ny, nz }, effector->GetOwner()->spr.sector(), { bcos(sa), bsin(sa), zvel << 6 }, hit, CLIPMASK1);
|
||||
hitscan({ nx, ny, nz }, effector->GetOwner()->sector(), { bcos(sa), bsin(sa), zvel << 6 }, hit, CLIPMASK1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ static void shootmelee(DDukeActor *actor, int p, int sx, int sy, int sz, int sa,
|
|||
|
||||
static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int zvel = 0;
|
||||
HitInfo hit{};
|
||||
|
||||
|
@ -267,7 +267,7 @@ static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa
|
|||
DukeStatIterator its(STAT_EFFECTOR);
|
||||
while (auto effector = its.Next())
|
||||
{
|
||||
if (effector->spr.sector() == hit.hitSector && effector->spr.picnum == SECTOREFFECTOR && effector->GetOwner()
|
||||
if (effector->sector() == hit.hitSector && effector->spr.picnum == SECTOREFFECTOR && effector->GetOwner()
|
||||
&& effector->spr.lotag == SE_7_TELEPORT)
|
||||
{
|
||||
int nx, ny, nz;
|
||||
|
@ -281,7 +281,7 @@ static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa
|
|||
{
|
||||
nz = effector->GetOwner()->sector()->ceilingz;
|
||||
}
|
||||
hitscan({ nx, ny, nz }, effector->GetOwner()->spr.sector(), { bcos(sa), bsin(sa), zvel << 6 }, hit, CLIPMASK1);
|
||||
hitscan({ nx, ny, nz }, effector->GetOwner()->sector(), { bcos(sa), bsin(sa), zvel << 6 }, hit, CLIPMASK1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -459,7 +459,7 @@ static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa
|
|||
|
||||
static void shootstuff(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
int vel = 0, zvel;
|
||||
int scount;
|
||||
|
||||
|
@ -599,7 +599,7 @@ static void shootstuff(DDukeActor* actor, int p, int sx, int sy, int sz, int sa,
|
|||
|
||||
static void shootrpg(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
int vel, zvel;
|
||||
int l, scount;
|
||||
|
||||
|
@ -751,7 +751,7 @@ static void shootrpg(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i
|
|||
|
||||
static void shootwhip(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, int atwith)
|
||||
{
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
int vel = 0, zvel;
|
||||
int scount;
|
||||
|
||||
|
@ -830,7 +830,7 @@ void shoot_r(DDukeActor* actor, int atwith)
|
|||
int sx, sy, sz, vel, zvel, x;
|
||||
|
||||
|
||||
auto const sect = actor->spr.sector();
|
||||
auto const sect = actor->sector();
|
||||
zvel = 0;
|
||||
|
||||
if (actor->spr.picnum == TILE_APLAYER)
|
||||
|
@ -3622,7 +3622,7 @@ void processinput_r(int snum)
|
|||
|
||||
if (p->spritebridge == 0 && pact->insector())
|
||||
{
|
||||
int j = pact->spr.sector()->floorpicnum;
|
||||
int j = pact->sector()->floorpicnum;
|
||||
k = 0;
|
||||
|
||||
if (p->on_ground && truefdist <= gs.playerheight + (16 << 8))
|
||||
|
@ -3892,7 +3892,7 @@ HORIZONLY:
|
|||
|
||||
if (psectlotag < 3)
|
||||
{
|
||||
psectp = pact->spr.sector();
|
||||
psectp = pact->sector();
|
||||
if (ud.clipping == 0 && psectp->lotag == ST_31_TWO_WAY_TRAIN)
|
||||
{
|
||||
auto act = barrier_cast<DDukeActor*>(psectp->hitagactor);
|
||||
|
@ -3909,7 +3909,7 @@ HORIZONLY:
|
|||
if (!isRRRA() || (!p->OnBoat && !p->OnMotorcycle && p->cursector->hitag != 321))
|
||||
S_PlayActorSound(DUKE_ONWATER, pact);
|
||||
|
||||
if (p->cursector != pact->spr.sector())
|
||||
if (p->cursector != pact->sector())
|
||||
ChangeActorSect(pact, p->cursector);
|
||||
|
||||
int j;
|
||||
|
@ -3926,9 +3926,9 @@ HORIZONLY:
|
|||
{
|
||||
if (abs(pact->floorz - pact->ceilingz) < (48 << 8) || j)
|
||||
{
|
||||
if (!(pact->spr.sector()->lotag & 0x8000) && (isanunderoperator(pact->spr.sector()->lotag) ||
|
||||
isanearoperator(pact->spr.sector()->lotag)))
|
||||
fi.activatebysector(pact->spr.sector(), pact);
|
||||
if (!(pact->sector()->lotag & 0x8000) && (isanunderoperator(pact->sector()->lotag) ||
|
||||
isanearoperator(pact->sector()->lotag)))
|
||||
fi.activatebysector(pact->sector(), pact);
|
||||
if (j)
|
||||
{
|
||||
quickkill(p);
|
||||
|
|
|
@ -585,7 +585,7 @@ void resetpspritevars(int g)
|
|||
po[numplayersprites].opos.Y = act->spr.pos.Y;
|
||||
po[numplayersprites].opos.Z = act->spr.pos.Z;
|
||||
po[numplayersprites].oa = act->spr.ang;
|
||||
po[numplayersprites].os = act->spr.sector();
|
||||
po[numplayersprites].os = act->sector();
|
||||
|
||||
numplayersprites++;
|
||||
if (j >= 0)
|
||||
|
@ -842,7 +842,7 @@ static void SpawnPortals()
|
|||
{
|
||||
if (processedTags.Find(act->spr.hitag) == processedTags.Size())
|
||||
{
|
||||
sectortype* s1 = act->spr.sector(), *s2 = act2->spr.sector();
|
||||
sectortype* s1 = act->sector(), *s2 = act2->sector();
|
||||
s1->portalflags = PORTAL_SECTOR_FLOOR;
|
||||
s1->portalflags = PORTAL_SECTOR_CEILING;
|
||||
s2->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);
|
||||
|
|
|
@ -295,17 +295,17 @@ void prelevel_d(int g, TArray<DDukeActor*>& actors)
|
|||
else switch (ac->spr.picnum)
|
||||
{
|
||||
case GPSPEED:
|
||||
ac->spr.sector()->extra = ac->spr.lotag;
|
||||
ac->sector()->extra = ac->spr.lotag;
|
||||
deletesprite(ac);
|
||||
break;
|
||||
|
||||
case CYCLER:
|
||||
if (numcyclers >= MAXCYCLERS)
|
||||
I_Error("Too many cycling sectors.");
|
||||
cyclers[numcyclers].sector = ac->spr.sector();
|
||||
cyclers[numcyclers].sector = ac->sector();
|
||||
cyclers[numcyclers].lotag = ac->spr.lotag;
|
||||
cyclers[numcyclers].shade1 = ac->spr.shade;
|
||||
cyclers[numcyclers].shade2 = ac->spr.sector()->floorshade;
|
||||
cyclers[numcyclers].shade2 = ac->sector()->floorshade;
|
||||
cyclers[numcyclers].hitag = ac->spr.hitag;
|
||||
cyclers[numcyclers].state = (ac->spr.ang == 1536);
|
||||
numcyclers++;
|
||||
|
|
|
@ -508,7 +508,7 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
|
|||
if (act1->spr.picnum == RRTILE66)
|
||||
if (act1->spr.lotag == act->sectno()) // bad map format design... Should have used a tag instead...
|
||||
{
|
||||
childsectnum = act1->spr.sector();
|
||||
childsectnum = act1->sector();
|
||||
deletesprite(act1);
|
||||
}
|
||||
}
|
||||
|
@ -543,17 +543,17 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
|
|||
break;
|
||||
|
||||
case GPSPEED:
|
||||
ac->spr.sector()->extra = ac->spr.lotag;
|
||||
ac->sector()->extra = ac->spr.lotag;
|
||||
deletesprite(ac);
|
||||
break;
|
||||
|
||||
case CYCLER:
|
||||
if (numcyclers >= MAXCYCLERS)
|
||||
I_Error("Too many cycling sectors.");
|
||||
cyclers[numcyclers].sector = ac->spr.sector();
|
||||
cyclers[numcyclers].sector = ac->sector();
|
||||
cyclers[numcyclers].lotag = ac->spr.lotag;
|
||||
cyclers[numcyclers].shade1 = ac->spr.shade;
|
||||
cyclers[numcyclers].shade2 = ac->spr.sector()->floorshade;
|
||||
cyclers[numcyclers].shade2 = ac->sector()->floorshade;
|
||||
cyclers[numcyclers].hitag = ac->spr.hitag;
|
||||
cyclers[numcyclers].state = (ac->spr.ang == 1536);
|
||||
numcyclers++;
|
||||
|
@ -571,7 +571,7 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
|
|||
break;
|
||||
|
||||
case RRTILE68:
|
||||
ac->spr.sector()->shadedsector = 1;
|
||||
ac->sector()->shadedsector = 1;
|
||||
deletesprite(ac);
|
||||
break;
|
||||
|
||||
|
@ -604,21 +604,21 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
|
|||
I_Error("Too many geometry effects");
|
||||
if (actor->spr.hitag == 0)
|
||||
{
|
||||
geosector[geocnt] = actor->spr.sector();
|
||||
geosector[geocnt] = actor->sector();
|
||||
for (auto actor2 : actors)
|
||||
{
|
||||
if (actor->spr.lotag == actor2->spr.lotag && actor2 != actor && actor2->spr.picnum == RRTILE19)
|
||||
{
|
||||
if (actor2->spr.hitag == 1)
|
||||
{
|
||||
geosectorwarp[geocnt] = actor2->spr.sector();
|
||||
geosectorwarp[geocnt] = actor2->sector();
|
||||
geox[geocnt] = actor->spr.pos.X - actor2->spr.pos.X;
|
||||
geoy[geocnt] = actor->spr.pos.Y - actor2->spr.pos.Y;
|
||||
//geoz[geocnt] = actor->spr.z - actor2->spr.z;
|
||||
}
|
||||
if (actor2->spr.hitag == 2)
|
||||
{
|
||||
geosectorwarp2[geocnt] = actor2->spr.sector();
|
||||
geosectorwarp2[geocnt] = actor2->sector();
|
||||
geox2[geocnt] = actor->spr.pos.X - actor2->spr.pos.X;
|
||||
geoy2[geocnt] = actor->spr.pos.Y - actor2->spr.pos.Y;
|
||||
//geoz2[geocnt] = actor->spr.z - actor2->spr.z;
|
||||
|
@ -650,7 +650,7 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
|
|||
deletesprite(actor);
|
||||
if (actor->spr.picnum == RRTILE34)
|
||||
{
|
||||
actor->spr.sector()->keyinfo = uint8_t(actor->spr.lotag);
|
||||
actor->sector()->keyinfo = uint8_t(actor->spr.lotag);
|
||||
deletesprite(actor);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ void GameInterface::UpdateCameras(double smoothratio)
|
|||
if (!testnewrenderer)
|
||||
{
|
||||
// Note: no ROR or camera here - Polymost has no means to detect these things before rendering the scene itself.
|
||||
renderDrawRoomsQ16(camera->spr.pos.X, camera->spr.pos.Y, camera->spr.pos.Z, ang.asq16(), IntToFixed(camera->spr.shade), camera->spr.sector(), false); // why 'shade'...?
|
||||
renderDrawRoomsQ16(camera->spr.pos.X, camera->spr.pos.Y, camera->spr.pos.Z, ang.asq16(), IntToFixed(camera->spr.shade), camera->sector(), false); // why 'shade'...?
|
||||
fi.animatesprites(pm_tsprite, pm_spritesortcnt, camera->spr.pos.X, camera->spr.pos.Y, ang.asbuild(), (int)smoothratio);
|
||||
renderDrawMasks();
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ void GameInterface::UpdateCameras(double smoothratio)
|
|||
{
|
||||
auto cstat = camera->spr.cstat;
|
||||
camera->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
render_camtex(camera, camera->spr.pos, camera->spr.sector(), ang, buildhoriz(camera->spr.shade), buildang(0), tex, rect, smoothratio);
|
||||
render_camtex(camera, camera->spr.pos, camera->sector(), ang, buildhoriz(camera->spr.shade), buildang(0), tex, rect, smoothratio);
|
||||
camera->spr.cstat = cstat;
|
||||
}
|
||||
display_mirror = 0;
|
||||
|
@ -295,7 +295,7 @@ void displayrooms(int snum, double smoothratio)
|
|||
auto bh = buildhoriz(act->spr.yvel);
|
||||
auto cstat = act->spr.cstat;
|
||||
act->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
renderView(act, act->spr.sector(), act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - (4 << 8), cang, bh, buildang(0), (int)smoothratio);
|
||||
renderView(act, act->sector(), act->spr.pos.X, act->spr.pos.Y, act->spr.pos.Z - (4 << 8), cang, bh, buildang(0), (int)smoothratio);
|
||||
act->spr.cstat = cstat;
|
||||
|
||||
}
|
||||
|
@ -361,7 +361,7 @@ void displayrooms(int snum, double smoothratio)
|
|||
cposx = act->spr.pos.X;
|
||||
cposy = act->spr.pos.Y;
|
||||
cposz = act->spr.pos.Z;
|
||||
sect = act->spr.sector();
|
||||
sect = act->sector();
|
||||
rotscrnang = buildang(0);
|
||||
smoothratio = MaxSmoothRatio;
|
||||
viewer = act;
|
||||
|
|
|
@ -89,7 +89,7 @@ int callsound(sectortype* sn, DDukeActor* whatsprite)
|
|||
act->temp_actor = whatsprite;
|
||||
}
|
||||
|
||||
if ((act->spr.sector()->lotag & 0xff) != ST_22_SPLITTING_DOOR)
|
||||
if ((act->sector()->lotag & 0xff) != ST_22_SPLITTING_DOOR)
|
||||
act->temp_data[0] = 1;
|
||||
}
|
||||
}
|
||||
|
@ -122,13 +122,13 @@ int check_activator_motion(int lotag)
|
|||
if (act->spr.lotag == lotag)
|
||||
{
|
||||
for (int j = animatecnt - 1; j >= 0; j--)
|
||||
if (act->spr.sector() == animatesect[j])
|
||||
if (act->sector() == animatesect[j])
|
||||
return(1);
|
||||
|
||||
DukeStatIterator it1(STAT_EFFECTOR);
|
||||
while (auto act2 = it1.Next())
|
||||
{
|
||||
if (act->spr.sector() == act2->spr.sector())
|
||||
if (act->sector() == act2->sector())
|
||||
switch (act2->spr.lotag)
|
||||
{
|
||||
case SE_11_SWINGING_DOOR:
|
||||
|
@ -448,7 +448,7 @@ int setanimation(sectortype* animsect, int animtype, sectortype* animtarget, int
|
|||
|
||||
bool activatewarpelevators(DDukeActor* actor, int d) //Parm = sectoreffectornum
|
||||
{
|
||||
auto sect = actor->spr.sector();
|
||||
auto sect = actor->sector();
|
||||
|
||||
// See if the sector exists
|
||||
|
||||
|
@ -597,7 +597,7 @@ static void handle_st15(sectortype* sptr, DDukeActor* actor)
|
|||
}
|
||||
if (!a2) return;
|
||||
|
||||
if (actor->spr.sector() == sptr)
|
||||
if (actor->sector() == sptr)
|
||||
{
|
||||
if (activatewarpelevators(a2, -1))
|
||||
activatewarpelevators(a2, 1);
|
||||
|
@ -818,7 +818,7 @@ static void handle_st23(sectortype* sptr, DDukeActor* actor)
|
|||
DDukeActor* act2;
|
||||
while ((act2 = it.Next()))
|
||||
{
|
||||
if (act2->spr.lotag == SE_11_SWINGING_DOOR && act2->spr.sector() == sptr && !act2->temp_data[4])
|
||||
if (act2->spr.lotag == SE_11_SWINGING_DOOR && act2->sector() == sptr && !act2->temp_data[4])
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -870,7 +870,7 @@ static void handle_st25(sectortype* sptr, DDukeActor* actor)
|
|||
DDukeActor* act2;
|
||||
while ((act2 = it.Next()))
|
||||
{
|
||||
if (act2->spr.lotag == 15 && act2->spr.sector() == sptr)
|
||||
if (act2->spr.lotag == 15 && act2->sector() == sptr)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -908,7 +908,7 @@ static void handle_st27(sectortype* sptr, DDukeActor* actor)
|
|||
DukeStatIterator it(STAT_EFFECTOR);
|
||||
while (auto act2 = it.Next())
|
||||
{
|
||||
if ((act2->spr.lotag & 0xff) == 20 && act2->spr.sector() == sptr) //Bridge
|
||||
if ((act2->spr.lotag & 0xff) == 20 && act2->sector() == sptr) //Bridge
|
||||
{
|
||||
|
||||
sptr->lotag ^= 0x8000;
|
||||
|
|
|
@ -1110,7 +1110,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
case HEAVYHBOMB:
|
||||
for (k = 0; k < 64; k++)
|
||||
{
|
||||
auto spawned = EGS(targ->spr.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->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);
|
||||
spawned->spr.pal = 8;
|
||||
}
|
||||
|
||||
|
@ -1125,7 +1125,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
case HANGLIGHT:
|
||||
case GENERICPOLE2:
|
||||
for (k = 0; k < 6; k++)
|
||||
EGS(targ->spr.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->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);
|
||||
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
||||
deletesprite(targ);
|
||||
break;
|
||||
|
@ -1134,8 +1134,8 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
case FANSPRITE:
|
||||
targ->spr.picnum = FANSPRITEBROKE;
|
||||
targ->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
if (targ->spr.sector()->floorpicnum == FANSHADOW)
|
||||
targ->spr.sector()->floorpicnum = FANSHADOWBROKE;
|
||||
if (targ->sector()->floorpicnum == FANSHADOW)
|
||||
targ->sector()->floorpicnum = FANSHADOWBROKE;
|
||||
|
||||
S_PlayActorSound(GLASS_HEAVYBREAK, targ);
|
||||
for (j = 0; j < 16; j++) RANDOMSCRAP(targ);
|
||||
|
@ -1155,7 +1155,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->spr.sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.sector()->floorz - (12 << 8) - (j << 9), SCRAP1 + (krand() & 15), -8, 64, 64,
|
||||
EGS(targ->sector(), targ->spr.pos.X, targ->spr.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);
|
||||
|
@ -1311,7 +1311,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
}
|
||||
{
|
||||
auto spawned = spawn(targ, STEAM);
|
||||
if (spawned) spawned->spr.pos.Z = targ->spr.sector()->floorz - (32 << 8);
|
||||
if (spawned) spawned->spr.pos.Z = targ->sector()->floorz - (32 << 8);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1420,9 +1420,9 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
if ((targ->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
|
||||
targ->spr.ang = (proj->spr.ang + 1024) & 2047;
|
||||
targ->spr.xvel = -(proj->spr.extra << 2);
|
||||
auto sp = targ->spr.sector();
|
||||
auto sp = targ->sector();
|
||||
pushmove(&targ->spr.pos, &sp, 128L, (4 << 8), (4 << 8), CLIPMASK0);
|
||||
if (sp != targ->spr.sector() && sp != nullptr)
|
||||
if (sp != targ->sector() && sp != nullptr)
|
||||
ChangeActorSect(targ, sp);
|
||||
}
|
||||
|
||||
|
@ -1655,7 +1655,7 @@ void checksectors_d(int snum)
|
|||
|
||||
if (p->newOwner == nullptr && near.actor() == nullptr && near.hitWall == nullptr && near.hitSector == nullptr)
|
||||
if (isanunderoperator(p->GetActor()->sector()->lotag))
|
||||
near.hitSector = p->GetActor()->spr.sector();
|
||||
near.hitSector = p->GetActor()->sector();
|
||||
|
||||
if (near.hitSector && (near.hitSector->lotag & 16384))
|
||||
return;
|
||||
|
|
|
@ -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->spr.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->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, POPCORN, -32, 36, 36, a, 32 + (krand() & 63), 1024 - (krand() & 1023), actor, 5);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -969,7 +969,7 @@ static void lotsofpopcorn(DDukeActor *actor, walltype* wal, int n)
|
|||
if (z < -(32 << 8) || z >(32 << 8))
|
||||
z = actor->spr.pos.Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
a = actor->spr.ang - 1024;
|
||||
EGS(actor->spr.sector(), x1, y1, z, POPCORN, -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 1023), actor, 5);
|
||||
EGS(actor->sector(), x1, y1, z, POPCORN, -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 1023), actor, 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1102,7 +1102,7 @@ void checkhitwall_r(DDukeActor* spr, walltype* wal, int x, int y, int z, int atw
|
|||
{
|
||||
if (wl.twoSided()) wl.nextSector()->lotag = 0;
|
||||
}
|
||||
act->spr.sector()->lotag = 0;
|
||||
act->sector()->lotag = 0;
|
||||
S_StopSound(act->spr.lotag);
|
||||
S_PlayActorSound(400, act);
|
||||
deletesprite(act);
|
||||
|
@ -2072,7 +2072,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
lotsofglass(targ, nullptr, 10);
|
||||
targ->spr.picnum++;
|
||||
for (k = 0; k < 6; k++)
|
||||
EGS(targ->spr.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->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);
|
||||
break;
|
||||
case BOWLINGBALL:
|
||||
proj->spr.xvel = (targ->spr.xvel >> 1) + (targ->spr.xvel >> 2);
|
||||
|
@ -2164,7 +2164,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
case UWHIP:
|
||||
for (k = 0; k < 64; k++)
|
||||
{
|
||||
auto spawned = EGS(targ->spr.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->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);
|
||||
if (spawned) spawned->spr.pal = 8;
|
||||
}
|
||||
|
||||
|
@ -2197,7 +2197,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->spr.sector(), targ->spr.pos.X, targ->spr.pos.Y, targ->spr.sector()->floorz - (12 << 8) - (j << 9), SCRAP1 + (krand() & 15), -8, 64, 64,
|
||||
EGS(targ->sector(), targ->spr.pos.X, targ->spr.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);
|
||||
|
@ -2323,7 +2323,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
}
|
||||
{
|
||||
auto spawned = spawn(targ, STEAM);
|
||||
if (spawned) spawned->spr.pos.Z = targ->spr.sector()->floorz - (32 << 8);
|
||||
if (spawned) spawned->spr.pos.Z = targ->sector()->floorz - (32 << 8);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -2601,7 +2601,7 @@ void checksectors_r(int snum)
|
|||
|
||||
if (p->newOwner == nullptr && near.actor() == nullptr && near.hitWall == nullptr && near.hitSector == nullptr)
|
||||
if (isanunderoperator(p->GetActor()->sector()->lotag))
|
||||
near.hitSector = p->GetActor()->spr.sector();
|
||||
near.hitSector = p->GetActor()->sector();
|
||||
|
||||
if (near.hitSector && (near.hitSector->lotag & 16384))
|
||||
return;
|
||||
|
@ -2772,7 +2772,7 @@ void checksectors_r(int snum)
|
|||
return;
|
||||
}
|
||||
if (haskey(near.hitSector, snum))
|
||||
operatesectors(p->GetActor()->spr.sector(), p->GetActor());
|
||||
operatesectors(p->GetActor()->sector(), p->GetActor());
|
||||
else
|
||||
{
|
||||
if (neartagsprite && neartagsprite->spriteextra > 3)
|
||||
|
|
|
@ -269,14 +269,14 @@ static int GetPositionInfo(DDukeActor* actor, int soundNum, sectortype* sect,
|
|||
{
|
||||
orgsndist = sndist = int(16 * (sndorg - campos).Length());
|
||||
|
||||
if ((userflags & (SF_GLOBAL | SF_DTAG)) != SF_GLOBAL && actor->spr.picnum == MUSICANDSFX && actor->spr.lotag < 999 && (actor->spr.sector()->lotag & 0xff) < ST_9_SLIDING_ST_DOOR)
|
||||
if ((userflags & (SF_GLOBAL | SF_DTAG)) != SF_GLOBAL && actor->spr.picnum == MUSICANDSFX && actor->spr.lotag < 999 && (actor->sector()->lotag & 0xff) < ST_9_SLIDING_ST_DOOR)
|
||||
sndist = DivScale(sndist, actor->spr.hitag + 1, 14);
|
||||
}
|
||||
|
||||
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->spr.sector()))
|
||||
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()))
|
||||
sndist += sndist >> (isRR() ? 2 : 5);
|
||||
|
||||
// Here the sound distance was clamped to a minimum of 144*4.
|
||||
|
@ -322,7 +322,7 @@ void S_GetCamera(vec3_t** c, int32_t* ca, sectortype** cs)
|
|||
else
|
||||
{
|
||||
if (c) *c = &ud.cameraactor->spr.pos;
|
||||
if (cs) *cs = ud.cameraactor->spr.sector();
|
||||
if (cs) *cs = ud.cameraactor->sector();
|
||||
if (ca) *ca = ud.cameraactor->spr.ang;
|
||||
}
|
||||
}
|
||||
|
@ -561,7 +561,7 @@ void S_StopSound(int sndNum, DDukeActor* actor, int channel)
|
|||
else soundEngine->StopSound(SOURCE_Actor, actor, channel, -1);
|
||||
|
||||
// StopSound kills the actor reference so this cannot be delayed until ChannelEnded gets called. At that point the actor may also not be valid anymore.
|
||||
if (S_IsAmbientSFX(actor) && actor->spr.sector()->lotag < 3) // ST_2_UNDERWATER
|
||||
if (S_IsAmbientSFX(actor) && actor->sector()->lotag < 3) // ST_2_UNDERWATER
|
||||
actor->temp_data[0] = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -149,8 +149,8 @@ bool initspriteforspawn(DDukeActor* act, const std::initializer_list<int> &exclu
|
|||
act->movflag = 0;
|
||||
act->tempang = 0;
|
||||
act->dispicnum = 0;
|
||||
act->floorz = act->spr.sector()->floorz;
|
||||
act->ceilingz = act->spr.sector()->ceilingz;
|
||||
act->floorz = act->sector()->floorz;
|
||||
act->ceilingz = act->sector()->ceilingz;
|
||||
|
||||
act->ovel.X = 0;
|
||||
act->ovel.Y = 0;
|
||||
|
@ -217,7 +217,7 @@ DDukeActor* spawn(DDukeActor* actj, int pn)
|
|||
{
|
||||
if (actj)
|
||||
{
|
||||
auto spawned = EGS(actj->spr.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->spr.pos.X, actj->spr.pos.Y, actj->spr.pos.Z, pn, 0, 0, 0, 0, 0, 0, actj, 0);
|
||||
if (spawned)
|
||||
{
|
||||
spawned->attackertype = actj->spr.picnum;
|
||||
|
@ -261,7 +261,7 @@ void spawninitdefault(DDukeActor* actj, DDukeActor *act)
|
|||
makeitfall(act);
|
||||
|
||||
if (actorflag(act, SFLAG_BADGUYSTAYPUT))
|
||||
act->actorstayput = act->spr.sector();
|
||||
act->actorstayput = act->sector();
|
||||
|
||||
if (!isRR() || actorflag(act, SFLAG_KILLCOUNT)) // Duke is just like Doom - Bad guys always count as kill.
|
||||
ps[myconnectindex].max_actors_killed++;
|
||||
|
@ -302,7 +302,7 @@ void spawntransporter(DDukeActor *actj, DDukeActor* act, bool beam)
|
|||
{
|
||||
act->spr.xrepeat = 31;
|
||||
act->spr.yrepeat = 1;
|
||||
act->spr.pos.Z = actj->spr.sector()->floorz - (isRR() ? PHEIGHT_RR : PHEIGHT_DUKE);
|
||||
act->spr.pos.Z = actj->sector()->floorz - (isRR() ? PHEIGHT_RR : PHEIGHT_DUKE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -338,19 +338,19 @@ void spawntransporter(DDukeActor *actj, DDukeActor* act, bool beam)
|
|||
|
||||
int spawnbloodpoolpart1(DDukeActor* act)
|
||||
{
|
||||
auto s1 = act->spr.sector();
|
||||
auto s1 = act->sector();
|
||||
|
||||
updatesector(act->spr.pos.X + 108, act->spr.pos.Y + 108, &s1);
|
||||
if (s1 && s1->floorz == act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 108, act->spr.pos.Y - 108, &s1);
|
||||
if (s1 && s1->floorz == act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X + 108, act->spr.pos.Y - 108, &s1);
|
||||
if (s1 && s1->floorz == act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 108, act->spr.pos.Y + 108, &s1);
|
||||
if (s1 && s1->floorz != act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz != act->sector()->floorz)
|
||||
{
|
||||
act->spr.xrepeat = act->spr.yrepeat = 0; ChangeActorStat(act, STAT_MISC); return true;
|
||||
}
|
||||
|
@ -361,7 +361,7 @@ int spawnbloodpoolpart1(DDukeActor* act)
|
|||
}
|
||||
else { act->spr.xrepeat = act->spr.yrepeat = 0; ChangeActorStat(act, STAT_MISC); return true; }
|
||||
|
||||
if (act->spr.sector()->lotag == 1)
|
||||
if (act->sector()->lotag == 1)
|
||||
{
|
||||
ChangeActorStat(act, STAT_MISC);
|
||||
return true;
|
||||
|
@ -377,22 +377,22 @@ int spawnbloodpoolpart1(DDukeActor* act)
|
|||
|
||||
void initfootprint(DDukeActor* actj, DDukeActor* act)
|
||||
{
|
||||
auto sect = act->spr.sector();
|
||||
auto sect = act->sector();
|
||||
if (actj)
|
||||
{
|
||||
auto s1 = act->spr.sector();
|
||||
auto s1 = act->sector();
|
||||
|
||||
updatesector(act->spr.pos.X + 84, act->spr.pos.Y + 84, &s1);
|
||||
if (s1 && s1->floorz == act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 84, act->spr.pos.Y - 84, &s1);
|
||||
if (s1 && s1->floorz == act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X + 84, act->spr.pos.Y - 84, &s1);
|
||||
if (s1 && s1->floorz == act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz == act->sector()->floorz)
|
||||
{
|
||||
updatesector(act->spr.pos.X - 84, act->spr.pos.Y + 84, &s1);
|
||||
if (s1 && s1->floorz != act->spr.sector()->floorz)
|
||||
if (s1 && s1->floorz != act->sector()->floorz)
|
||||
{
|
||||
act->spr.xrepeat = act->spr.yrepeat = 0; ChangeActorStat(act, STAT_MISC); return;
|
||||
}
|
||||
|
@ -474,7 +474,7 @@ void initshell(DDukeActor* actj, DDukeActor* act, bool isshell)
|
|||
|
||||
void initcrane(DDukeActor* actj, DDukeActor* act, int CRANEPOLE)
|
||||
{
|
||||
auto sect = act->spr.sector();
|
||||
auto sect = act->sector();
|
||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL | CSTAT_SPRITE_ONE_SIDE;
|
||||
|
||||
act->spr.picnum += 2;
|
||||
|
@ -494,7 +494,7 @@ void initcrane(DDukeActor* actj, DDukeActor* act, int CRANEPOLE)
|
|||
{
|
||||
apt.poleactor = actk;
|
||||
|
||||
act->temp_sect = actk->spr.sector();
|
||||
act->temp_sect = actk->sector();
|
||||
|
||||
actk->spr.xrepeat = 48;
|
||||
actk->spr.yrepeat = 128;
|
||||
|
@ -601,7 +601,7 @@ int initreactor(DDukeActor* actj, DDukeActor* actor, bool isrecon)
|
|||
|
||||
void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
||||
{
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
int d, clostest = 0;
|
||||
|
||||
actor->spr.yvel = sectp->extra;
|
||||
|
@ -1014,8 +1014,8 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
}
|
||||
else if (actor->spr.lotag == SE_2_EARTHQUAKE)
|
||||
{
|
||||
actor->temp_data[5] = actor->spr.sector()->floorheinum;
|
||||
actor->spr.sector()->setfloorslope(0);
|
||||
actor->temp_data[5] = actor->sector()->floorheinum;
|
||||
actor->sector()->setfloorslope(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1028,7 +1028,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
if (j == -1)
|
||||
{
|
||||
if (!isRR()) j = SUBWAY; // Duke
|
||||
else if (actor->spr.sector()->floorpal == 7) j = 456;
|
||||
else if (actor->sector()->floorpal == 7) j = 456;
|
||||
else j = 75;
|
||||
}
|
||||
actor->ovel.X = j;
|
||||
|
@ -1044,12 +1044,12 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
|
|||
case SE_15_SLIDING_DOOR:
|
||||
case SE_16_REACTOR:
|
||||
case SE_26:
|
||||
setsectinterpolate(actor->spr.sector());
|
||||
setsectinterpolate(actor->sector());
|
||||
break;
|
||||
|
||||
case SE_29_WAVES:
|
||||
StartInterpolation(actor->spr.sector(), Interp_Sect_Floorheinum);
|
||||
StartInterpolation(actor->spr.sector(), Interp_Sect_Floorz);
|
||||
StartInterpolation(actor->sector(), Interp_Sect_Floorheinum);
|
||||
StartInterpolation(actor->sector(), Interp_Sect_Floorz);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1077,7 +1077,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->spr.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->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);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -1102,7 +1102,7 @@ void lotsofglass(DDukeActor *actor, walltype* wal, int n)
|
|||
if (z < -(32 << 8) || z >(32 << 8))
|
||||
z = actor->spr.pos.Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
a = actor->spr.ang - 1024;
|
||||
EGS(actor->spr.sector(), x1, y1, z, TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 1023), actor, 5);
|
||||
EGS(actor->sector(), x1, y1, z, TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 1023), actor, 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1119,7 +1119,7 @@ void spriteglass(DDukeActor* actor, int n)
|
|||
{
|
||||
int a = krand() & 2047;
|
||||
int z = actor->spr.pos.Z - ((krand() & 16) << 8);
|
||||
auto k = EGS(actor->spr.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);
|
||||
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);
|
||||
if (k) k->spr.pal = actor->spr.pal;
|
||||
}
|
||||
}
|
||||
|
@ -1170,7 +1170,7 @@ void lotsofcolourglass(DDukeActor* actor, walltype* wal, int n)
|
|||
for (j = n - 1; j >= 0; j--)
|
||||
{
|
||||
a = krand() & 2047;
|
||||
auto k = EGS(actor->spr.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->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);
|
||||
if (k) k->spr.pal = krand() & 15;
|
||||
}
|
||||
return;
|
||||
|
@ -1191,7 +1191,7 @@ void lotsofcolourglass(DDukeActor* actor, walltype* wal, int n)
|
|||
if (z < -(32 << 8) || z >(32 << 8))
|
||||
z = actor->spr.pos.Z - (32 << 8) + (krand() & ((64 << 8) - 1));
|
||||
a = actor->spr.ang - 1024;
|
||||
auto k = EGS(actor->spr.sector(), x1, y1, z, TILE_GLASSPIECES + (j % 3), -32, 36, 36, a, 32 + (krand() & 63), -(krand() & 2047), actor, 5);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ BEGIN_DUKE_NS
|
|||
|
||||
DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>* actors)
|
||||
{
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
if (isWorldTour())
|
||||
{
|
||||
|
@ -52,7 +52,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case BOSS2STAYPUT:
|
||||
case BOSS3STAYPUT:
|
||||
case BOSS5STAYPUT:
|
||||
act->actorstayput = act->spr.sector();
|
||||
act->actorstayput = act->sector();
|
||||
[[fallthrough]];
|
||||
case FIREFLY:
|
||||
case BOSS5:
|
||||
|
@ -157,13 +157,13 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.cstat |= CSTAT_SPRITE_YCENTER;
|
||||
if (actj)
|
||||
{
|
||||
if (actj->spr.sector()->lotag == 2)
|
||||
if (actj->sector()->lotag == 2)
|
||||
{
|
||||
act->spr.pos.Z = getceilzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y) + (16 << 8);
|
||||
act->spr.pos.Z = getceilzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y) + (16 << 8);
|
||||
act->spr.cstat |= CSTAT_SPRITE_YFLIP;
|
||||
}
|
||||
else if (actj->spr.sector()->lotag == 1)
|
||||
act->spr.pos.Z = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
else if (actj->sector()->lotag == 1)
|
||||
act->spr.pos.Z = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
}
|
||||
|
||||
if (sectp->floorpicnum == FLOORSLIME ||
|
||||
|
@ -296,7 +296,7 @@ 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->spr.sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
int fz = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (fz != act->spr.pos.Z)
|
||||
act->spr.pos.Z = fz;
|
||||
act->spr.pos.Z -= 200;
|
||||
|
@ -640,7 +640,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
|
||||
if (actj)
|
||||
{
|
||||
int x = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
int x = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (act->spr.pos.Z > x - (12 << 8))
|
||||
act->spr.pos.Z = x - (12 << 8);
|
||||
}
|
||||
|
@ -663,7 +663,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.xrepeat = actj->spr.xrepeat;
|
||||
act->spr.yrepeat = actj->spr.yrepeat;
|
||||
act->spr.zvel = 128;
|
||||
if (act->spr.sector()->lotag != 2)
|
||||
if (act->sector()->lotag != 2)
|
||||
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
}
|
||||
ChangeActorStat(act, STAT_DUMMYPLAYER);
|
||||
|
@ -786,7 +786,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case PIGCOPDIVE:
|
||||
case COMMANDERSTAYPUT:
|
||||
case BOSS4STAYPUT:
|
||||
act->actorstayput = act->spr.sector();
|
||||
act->actorstayput = act->sector();
|
||||
[[fallthrough]];
|
||||
case BOSS1:
|
||||
case BOSS2:
|
||||
|
@ -917,7 +917,7 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case ACTIVATOR:
|
||||
act->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
if (act->spr.picnum == ACTIVATORLOCKED)
|
||||
act->spr.sector()->lotag |= 16384;
|
||||
act->sector()->lotag |= 16384;
|
||||
ChangeActorStat(act, 8);
|
||||
break;
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ BEGIN_DUKE_NS
|
|||
|
||||
DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>* actors)
|
||||
{
|
||||
auto sectp = act->spr.sector();
|
||||
auto sectp = act->sector();
|
||||
|
||||
switch (act->spr.picnum)
|
||||
{
|
||||
|
@ -210,13 +210,13 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.cstat |= CSTAT_SPRITE_YCENTER;
|
||||
if (actj)
|
||||
{
|
||||
if (actj->spr.sector()->lotag == 2)
|
||||
if (actj->sector()->lotag == 2)
|
||||
{
|
||||
act->spr.pos.Z = getceilzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y) + (16 << 8);
|
||||
act->spr.pos.Z = getceilzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y) + (16 << 8);
|
||||
act->spr.cstat |= CSTAT_SPRITE_YFLIP;
|
||||
}
|
||||
else if (actj->spr.sector()->lotag == 1)
|
||||
act->spr.pos.Z = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
else if (actj->sector()->lotag == 1)
|
||||
act->spr.pos.Z = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
}
|
||||
|
||||
if (sectp->floorpicnum == FLOORSLIME ||
|
||||
|
@ -649,7 +649,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
|
||||
if (actj)
|
||||
{
|
||||
int x = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
int x = getflorzofslopeptr(act->sector(), act->spr.pos.X, act->spr.pos.Y);
|
||||
if (act->spr.pos.Z > x - (12 << 8))
|
||||
act->spr.pos.Z = x - (12 << 8);
|
||||
}
|
||||
|
@ -664,7 +664,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.xrepeat = actj->spr.xrepeat;
|
||||
act->spr.yrepeat = actj->spr.yrepeat;
|
||||
act->spr.zvel = 128;
|
||||
if (act->spr.sector()->lotag != 2)
|
||||
if (act->sector()->lotag != 2)
|
||||
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||
}
|
||||
ChangeActorStat(act, 13);
|
||||
|
@ -785,7 +785,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
case MINIONSTAYPUT:
|
||||
case COOTSTAYPUT:
|
||||
rrra_stayput:
|
||||
act->actorstayput = act->spr.sector();
|
||||
act->actorstayput = act->sector();
|
||||
[[fallthrough]];
|
||||
case BOULDER:
|
||||
case BOULDER1:
|
||||
|
@ -1319,7 +1319,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.yrepeat = 16;
|
||||
break;
|
||||
}
|
||||
act->spr.shade = act->spr.sector()->floorshade;
|
||||
act->spr.shade = act->sector()->floorshade;
|
||||
break;
|
||||
case WATERFOUNTAIN:
|
||||
act->spr.lotag = 1;
|
||||
|
|
|
@ -140,16 +140,16 @@ void AIAnim::Tick(RunListEvent* ev)
|
|||
pActor->spr.pos.Y = pIgniter->spr.pos.Y;
|
||||
pActor->spr.pos.Z = pIgniter->spr.pos.Z;
|
||||
|
||||
if (pIgniter->spr.sector() != pActor->spr.sector())
|
||||
if (pIgniter->sector() != pActor->sector())
|
||||
{
|
||||
if (!pIgniter->spr.sector())
|
||||
if (!pIgniter->sector())
|
||||
{
|
||||
DestroyAnim(pActor);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorSect(pActor, pIgniter->spr.sector());
|
||||
ChangeActorSect(pActor, pIgniter->sector());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -230,7 +230,7 @@ void AIAnim::Draw(RunListEvent* ev)
|
|||
|
||||
void BuildExplosion(DExhumedActor* pActor)
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
|
||||
int edx = 36;
|
||||
|
||||
|
@ -238,12 +238,12 @@ void BuildExplosion(DExhumedActor* pActor)
|
|||
{
|
||||
edx = 75;
|
||||
}
|
||||
else if (pActor->spr.pos.Z == pActor->spr.sector()->floorz)
|
||||
else if (pActor->spr.pos.Z == pActor->sector()->floorz)
|
||||
{
|
||||
edx = 34;
|
||||
}
|
||||
|
||||
BuildAnim(nullptr, edx, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), pActor->spr.xrepeat, 4);
|
||||
BuildAnim(nullptr, edx, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), pActor->spr.xrepeat, 4);
|
||||
}
|
||||
|
||||
void BuildSplash(DExhumedActor* pActor, sectortype* pSector)
|
||||
|
|
|
@ -55,7 +55,7 @@ void BuildAnubis(DExhumedActor* ap, int x, int y, int z, sectortype* pSector, in
|
|||
|
||||
x = ap->spr.pos.X;
|
||||
y = ap->spr.pos.Y;
|
||||
z = ap->spr.sector()->floorz;
|
||||
z = ap->sector()->floorz;
|
||||
nAngle = ap->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ void BuildAnubis(DExhumedActor* ap, int x, int y, int z, sectortype* pSector, in
|
|||
ap->spr.shade = -12;
|
||||
ap->spr.yoffset = 0;
|
||||
ap->spr.picnum = 1;
|
||||
ap->spr.pal = ap->spr.sector()->ceilingpal;
|
||||
ap->spr.pal = ap->sector()->ceilingpal;
|
||||
ap->spr.clipdist = 60;
|
||||
ap->spr.ang = nAngle;
|
||||
ap->spr.xrepeat = 40;
|
||||
|
@ -217,8 +217,8 @@ void AIAnubis::Tick(RunListEvent* ev)
|
|||
|
||||
if (pTarget != nullptr) // NOTE: nTarget can be -1. this check wasn't in original code. TODO: demo compatiblity?
|
||||
{
|
||||
if (cansee(ap->spr.pos.X, ap->spr.pos.Y, ap->spr.pos.Z - GetActorHeight(ap), ap->spr.sector(),
|
||||
pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - GetActorHeight(pTarget), pTarget->spr.sector()))
|
||||
if (cansee(ap->spr.pos.X, ap->spr.pos.Y, ap->spr.pos.Z - GetActorHeight(ap), ap->sector(),
|
||||
pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - GetActorHeight(pTarget), pTarget->sector()))
|
||||
{
|
||||
ap->spr.xvel = 0;
|
||||
ap->spr.yvel = 0;
|
||||
|
@ -397,11 +397,11 @@ void AIAnubis::Damage(RunListEvent* ev)
|
|||
{
|
||||
if (nAction >= 6 && nAction <= 10)
|
||||
{
|
||||
auto pDrumActor = insertActor(ap->spr.sector(), kStatAnubisDrum);
|
||||
auto pDrumActor = insertActor(ap->sector(), kStatAnubisDrum);
|
||||
|
||||
pDrumActor->spr.pos.X = ap->spr.pos.X;
|
||||
pDrumActor->spr.pos.Y = ap->spr.pos.Y;
|
||||
pDrumActor->spr.pos.Z = pDrumActor->spr.sector()->floorz;
|
||||
pDrumActor->spr.pos.Z = pDrumActor->sector()->floorz;
|
||||
pDrumActor->spr.xrepeat = 40;
|
||||
pDrumActor->spr.yrepeat = 40;
|
||||
pDrumActor->spr.shade = -64;
|
||||
|
@ -425,7 +425,7 @@ void AIAnubis::Damage(RunListEvent* ev)
|
|||
ap->spr.xvel = 0;
|
||||
ap->spr.yvel = 0;
|
||||
ap->spr.zvel = 0;
|
||||
ap->spr.pos.Z = ap->spr.sector()->floorz;
|
||||
ap->spr.pos.Z = ap->sector()->floorz;
|
||||
ap->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
||||
|
||||
ap->nHealth = 0;
|
||||
|
|
|
@ -89,7 +89,7 @@ void AIBubble::Tick(RunListEvent* ev)
|
|||
|
||||
pActor->spr.pos.Z += pActor->spr.zvel;
|
||||
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
|
||||
if (pActor->spr.pos.Z <= pSector->ceilingz)
|
||||
{
|
||||
|
@ -124,7 +124,7 @@ void DoBubbleMachines()
|
|||
{
|
||||
pActor->nCount = (RandomWord() % pActor->nFrame) + 30;
|
||||
|
||||
BuildBubble(pActor->spr.pos, pActor->spr.sector());
|
||||
BuildBubble(pActor->spr.pos, pActor->sector());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -165,7 +165,7 @@ void IgniteSprite(DExhumedActor* pActor)
|
|||
{
|
||||
pActor->spr.hitag += 2;
|
||||
|
||||
auto pAnimActor = BuildAnim(nullptr, 38, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), 40, 20);
|
||||
auto pAnimActor = BuildAnim(nullptr, 38, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), 40, 20);
|
||||
|
||||
if (pAnimActor)
|
||||
{
|
||||
|
@ -318,7 +318,7 @@ int MoveBullet(int nBullet)
|
|||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
int z = pActor->spr.pos.Z; // ebx
|
||||
int nSectFlag = pActor->spr.sector()->Flag;
|
||||
int nSectFlag = pActor->sector()->Flag;
|
||||
|
||||
int x2, y2, z2;
|
||||
|
||||
|
@ -377,7 +377,7 @@ MOVEEND:
|
|||
x2 = pActor->spr.pos.X;
|
||||
y2 = pActor->spr.pos.Y;
|
||||
z2 = pActor->spr.pos.Z;
|
||||
pHitSect = pActor->spr.sector();
|
||||
pHitSect = pActor->sector();
|
||||
|
||||
#if 0
|
||||
// Original code. This was producing some beautiful undefined behavior in the first case because the index can be anything, not just a wall.
|
||||
|
@ -417,7 +417,7 @@ MOVEEND:
|
|||
nVal = coll.type || coll.exbits? 1:0;
|
||||
|
||||
// pSprite's sector may have changed since we set nSectFlag ?
|
||||
int nFlagVal = nSectFlag ^ pActor->spr.sector()->Flag;
|
||||
int nFlagVal = nSectFlag ^ pActor->sector()->Flag;
|
||||
if (nFlagVal & kSectUnderwater)
|
||||
{
|
||||
DestroyBullet(nBullet);
|
||||
|
@ -426,7 +426,7 @@ MOVEEND:
|
|||
|
||||
if (nVal == 0 && nType != 15 && nType != 3)
|
||||
{
|
||||
AddFlash(pActor->spr.sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 0);
|
||||
AddFlash(pActor->sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 0);
|
||||
|
||||
if (pActor->spr.pal != 5) {
|
||||
pActor->spr.pal = 1;
|
||||
|
@ -443,7 +443,7 @@ MOVEEND:
|
|||
x2 = hitactor->spr.pos.X;
|
||||
y2 = hitactor->spr.pos.Y;
|
||||
z2 = hitactor->spr.pos.Z - (GetActorHeight(hitactor) >> 1);
|
||||
pHitSect = hitactor->spr.sector();
|
||||
pHitSect = hitactor->sector();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -454,7 +454,7 @@ MOVEEND:
|
|||
dz = -bsin(pBullet->nPitch, 3);
|
||||
else
|
||||
dz = -pBullet->nPitch * 512;
|
||||
hitscan(startPos, pActor->spr.sector(), { bcos(pActor->spr.ang), bsin(pActor->spr.ang), dz }, hit, CLIPMASK1);
|
||||
hitscan(startPos, pActor->sector(), { bcos(pActor->spr.ang), bsin(pActor->spr.ang), dz }, hit, CLIPMASK1);
|
||||
x2 = hit.hitpos.X;
|
||||
y2 = hit.hitpos.Y;
|
||||
z2 = hit.hitpos.Z;
|
||||
|
@ -554,7 +554,7 @@ HITSPRITE:
|
|||
|
||||
nRadialBullet = -1;
|
||||
|
||||
AddFlash(pActor->spr.sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
AddFlash(pActor->sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -587,14 +587,14 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
|
|||
sBullet.nType = nType;
|
||||
sBullet.nDoubleDamage = nDoubleDamage;
|
||||
|
||||
sBullet.pActor = insertActor(pActor->spr.sector(), 200);
|
||||
sBullet.pActor = insertActor(pActor->sector(), 200);
|
||||
sBullet.pActor->spr.ang = nAngle;
|
||||
|
||||
int nHeight = GetActorHeight(pTarget);
|
||||
|
||||
assert(pTarget->spr.sector());
|
||||
assert(pTarget->sector());
|
||||
|
||||
BulletHitsSprite(&sBullet, pActor, pTarget, pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - (nHeight >> 1), pTarget->spr.sector());
|
||||
BulletHitsSprite(&sBullet, pActor, pTarget, pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - (nHeight >> 1), pTarget->sector());
|
||||
DeleteActor(sBullet.pActor);
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -618,7 +618,7 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
|
|||
}
|
||||
else
|
||||
{
|
||||
pSector = pActor->spr.sector();
|
||||
pSector = pActor->sector();
|
||||
}
|
||||
|
||||
auto pBulletActor = insertActor(pSector, 200);
|
||||
|
@ -706,7 +706,7 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
|
|||
|
||||
int var_18 = 0;
|
||||
|
||||
pSector = pBulletActor->spr.sector();
|
||||
pSector = pBulletActor->sector();
|
||||
|
||||
while (pBulletActor->spr.pos.Z < pSector->ceilingz)
|
||||
{
|
||||
|
@ -827,7 +827,7 @@ void AIBullet::Tick(RunListEvent* ev)
|
|||
|
||||
if (nFlag & 0x80)
|
||||
{
|
||||
BuildAnim(nullptr, 45, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), pActor->spr.xrepeat, 0);
|
||||
BuildAnim(nullptr, 45, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), pActor->spr.xrepeat, 0);
|
||||
}
|
||||
|
||||
BulletList[nBullet].nFrame++;
|
||||
|
|
|
@ -208,7 +208,7 @@ void DoRedAlert(int nVal)
|
|||
if (nVal)
|
||||
{
|
||||
PlayFXAtXYZ(StaticSound[kSoundAlarm], ac->spr.pos.X, ac->spr.pos.Y, ac->spr.pos.Z);
|
||||
AddFlash(ac->spr.sector(), ac->spr.pos.X, ac->spr.pos.Y, ac->spr.pos.Z, 192);
|
||||
AddFlash(ac->sector(), ac->spr.pos.X, ac->spr.pos.Y, ac->spr.pos.Z, 192);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ static actionSeq FishSeq[] = {
|
|||
|
||||
void BuildFishLimb(DExhumedActor* pActor, int anim)
|
||||
{
|
||||
auto pChunkActor = insertActor(pActor->spr.sector(), 99);
|
||||
auto pChunkActor = insertActor(pActor->sector(), 99);
|
||||
|
||||
pChunkActor->nCount = anim + 40;
|
||||
pChunkActor->nFrame = RandomSize(3) % SeqSize[SeqOffsets[kSeqFish] + anim + 40];
|
||||
|
@ -96,11 +96,11 @@ void AIFishLimb::Tick(RunListEvent* ev)
|
|||
{
|
||||
pActor->nFrame = 0;
|
||||
if (RandomBit()) {
|
||||
BuildBlood(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector());
|
||||
BuildBlood(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector());
|
||||
}
|
||||
}
|
||||
|
||||
int FloorZ = pActor->spr.sector()->floorz;
|
||||
int FloorZ = pActor->sector()->floorz;
|
||||
|
||||
if (FloorZ <= pActor->spr.pos.Z)
|
||||
{
|
||||
|
@ -163,7 +163,7 @@ void BuildFish(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
pActor->spr.clipdist = 80;
|
||||
pActor->spr.xrepeat = 40;
|
||||
pActor->spr.yrepeat = 40;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.picnum = seq_GetSeqPicnum(kSeqFish, FishSeq[0].a, 0);
|
||||
|
@ -311,7 +311,7 @@ void AIFish::Tick(RunListEvent* ev)
|
|||
|
||||
int nAction = pActor->nAction;
|
||||
|
||||
if (!(pActor->spr.sector()->Flag & kSectUnderwater))
|
||||
if (!(pActor->sector()->Flag & kSectUnderwater))
|
||||
{
|
||||
Gravity(pActor);
|
||||
}
|
||||
|
@ -422,12 +422,12 @@ void AIFish::Tick(RunListEvent* ev)
|
|||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
int z = pActor->spr.pos.Z;
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
// loc_2EF54
|
||||
Collision coll = movesprite(pActor, pActor->spr.xvel << 13, pActor->spr.yvel << 13, pActor->spr.zvel << 2, 0, 0, CLIPMASK0);
|
||||
|
||||
if (!(pActor->spr.sector()->Flag & kSectUnderwater))
|
||||
if (!(pActor->sector()->Flag & kSectUnderwater))
|
||||
{
|
||||
ChangeActorSect(pActor, pSector);
|
||||
pActor->spr.pos.X = x;
|
||||
|
|
|
@ -145,7 +145,7 @@ void ExplodeGrenade(DExhumedActor* pActor)
|
|||
int var_28, var_20;
|
||||
|
||||
int nPlayer = pActor->spr.owner;
|
||||
auto pGrenadeSect = pActor->spr.sector();
|
||||
auto pGrenadeSect = pActor->sector();
|
||||
|
||||
pActor->nFrame = 1;
|
||||
|
||||
|
@ -181,7 +181,7 @@ void ExplodeGrenade(DExhumedActor* pActor)
|
|||
pActor->spr.pos.X = bcos(nAngle, -5) + pPlayerActor->spr.pos.X;
|
||||
pActor->spr.pos.Y = bsin(nAngle, -5) + pPlayerActor->spr.pos.Y;
|
||||
|
||||
ChangeActorSect(pActor, pPlayerActor->spr.sector());
|
||||
ChangeActorSect(pActor, pPlayerActor->sector());
|
||||
|
||||
if (!PlayerList[nPlayer].invincibility) {
|
||||
PlayerList[nPlayer].nHealth = 1;
|
||||
|
@ -196,8 +196,8 @@ void ExplodeGrenade(DExhumedActor* pActor)
|
|||
|
||||
runlist_RadialDamageEnemy(pActor, nDamage, BulletInfo[kWeaponGrenade].nRadius);
|
||||
|
||||
BuildAnim(nullptr, var_28, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), var_20, 4);
|
||||
AddFlash(pActor->spr.sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
BuildAnim(nullptr, var_28, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), var_20, 4);
|
||||
AddFlash(pActor->sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
|
||||
DestroyGrenade(pActor);
|
||||
}
|
||||
|
@ -294,7 +294,7 @@ void AIGrenade::Tick(RunListEvent* ev)
|
|||
{
|
||||
if (zVel)
|
||||
{
|
||||
if (pActor->spr.sector()->Damage > 0)
|
||||
if (pActor->sector()->Damage > 0)
|
||||
{
|
||||
ExplodeGrenade(pActor);
|
||||
return;
|
||||
|
|
|
@ -613,7 +613,7 @@ loc_flag:
|
|||
{
|
||||
BuildFlash(nPlayer, 512);
|
||||
AddFlash(
|
||||
pPlayerActor->spr.sector(),
|
||||
pPlayerActor->sector(),
|
||||
pPlayerActor->spr.pos.X,
|
||||
pPlayerActor->spr.pos.Y,
|
||||
pPlayerActor->spr.pos.Z,
|
||||
|
@ -687,7 +687,7 @@ loc_flag:
|
|||
}
|
||||
}
|
||||
|
||||
auto pSectorB = pPlayerActor->spr.sector();
|
||||
auto pSectorB = pPlayerActor->sector();
|
||||
|
||||
switch (nWeapon)
|
||||
{
|
||||
|
@ -807,7 +807,7 @@ loc_flag:
|
|||
{
|
||||
DExhumedActor* t = sPlayerInput[nPlayer].pTarget;
|
||||
// only autoaim if target is in front of the player.
|
||||
assert(t->spr.sector());
|
||||
assert(t->sector());
|
||||
int angletotarget = bvectangbam(t->spr.pos.X - pPlayerActor->spr.pos.X, t->spr.pos.Y - pPlayerActor->spr.pos.Y).asbuild();
|
||||
int anglediff = (pPlayerActor->spr.ang - angletotarget) & 2047;
|
||||
if (anglediff < 512 || anglediff > 1536)
|
||||
|
|
|
@ -420,12 +420,12 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
{
|
||||
case 999:
|
||||
{
|
||||
AddFlicker(pActor->spr.sector(), nSpeed);
|
||||
AddFlicker(pActor->sector(), nSpeed);
|
||||
break;
|
||||
}
|
||||
case 998:
|
||||
{
|
||||
AddGlow(pActor->spr.sector(), nSpeed);
|
||||
AddGlow(pActor->sector(), nSpeed);
|
||||
break;
|
||||
}
|
||||
case 118: // Anubis with drum
|
||||
|
@ -570,7 +570,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
}
|
||||
case 99: // underwater type 2
|
||||
{
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
pSector->pAbove = §or[nHitag];
|
||||
pSector->Flag |= kSectUnderwater;
|
||||
|
||||
|
@ -579,7 +579,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
}
|
||||
case 98:
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
pSector->pBelow = §or[nHitag];
|
||||
SnapSectors(pSector, pSector->pBelow, 1);
|
||||
|
||||
|
@ -588,7 +588,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
}
|
||||
case 97:
|
||||
{
|
||||
AddSectorBob(pActor->spr.sector(), nHitag, 1);
|
||||
AddSectorBob(pActor->sector(), nHitag, 1);
|
||||
|
||||
DeleteActor(pActor);
|
||||
return;
|
||||
|
@ -600,7 +600,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
nDamage = 1;
|
||||
}
|
||||
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
pSector->Damage = nDamage;
|
||||
pSector->Flag |= kSectLava;
|
||||
|
@ -610,14 +610,14 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
}
|
||||
case 95:
|
||||
{
|
||||
AddSectorBob(pActor->spr.sector(), nHitag, 0);
|
||||
AddSectorBob(pActor->sector(), nHitag, 0);
|
||||
|
||||
DeleteActor(pActor);
|
||||
return;
|
||||
}
|
||||
case 94: // water
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
pSector->Depth = nHitag << 8;
|
||||
|
||||
DeleteActor(pActor);
|
||||
|
@ -636,7 +636,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
case 79:
|
||||
case 89:
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
pSector->Speed = nSpeed;
|
||||
pSector->Flag |= pActor->spr.ang;
|
||||
|
||||
|
@ -645,14 +645,14 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
}
|
||||
case 88:
|
||||
{
|
||||
AddFlow(pActor->spr.sector(), nSpeed, 0, pActor->spr.ang);
|
||||
AddFlow(pActor->sector(), nSpeed, 0, pActor->spr.ang);
|
||||
|
||||
DeleteActor(pActor);
|
||||
return;
|
||||
}
|
||||
case 80: // underwater
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
pSector->Flag |= kSectUnderwater;
|
||||
|
||||
DeleteActor(pActor);
|
||||
|
@ -660,9 +660,9 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
}
|
||||
case 78:
|
||||
{
|
||||
AddFlow(pActor->spr.sector(), nSpeed, 1, pActor->spr.ang);
|
||||
AddFlow(pActor->sector(), nSpeed, 1, pActor->spr.ang);
|
||||
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
pSector->Flag |= 0x8000;
|
||||
|
||||
DeleteActor(pActor);
|
||||
|
|
|
@ -123,7 +123,7 @@ void BuildItemAnim(DExhumedActor* pActor)
|
|||
|
||||
if (nItemAnimInfo[nItem].a >= 0)
|
||||
{
|
||||
auto pAnimActor = BuildAnim(pActor, 41, nItemAnimInfo[nItem].a, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), nItemAnimInfo[nItem].repeat, 20);
|
||||
auto pAnimActor = BuildAnim(pActor, 41, nItemAnimInfo[nItem].a, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), nItemAnimInfo[nItem].repeat, 20);
|
||||
|
||||
if (nItem == 44) {
|
||||
pAnimActor->spr.cstat |= CSTAT_SPRITE_TRANSLUCENT;
|
||||
|
@ -341,13 +341,13 @@ void DropMagic(DExhumedActor* pActor)
|
|||
pActor->spr.pos.X,
|
||||
pActor->spr.pos.Y,
|
||||
pActor->spr.pos.Z,
|
||||
pActor->spr.sector(),
|
||||
pActor->sector(),
|
||||
48,
|
||||
4);
|
||||
|
||||
if (pAnimActor)
|
||||
{
|
||||
AddFlash(pAnimActor->spr.sector(), pAnimActor->spr.pos.X, pAnimActor->spr.pos.Y, pAnimActor->spr.pos.Z, 128);
|
||||
AddFlash(pAnimActor->sector(), pAnimActor->spr.pos.X, pAnimActor->spr.pos.Y, pAnimActor->spr.pos.Z, 128);
|
||||
ChangeActorStat(pAnimActor, 950);
|
||||
}
|
||||
nMagicCount = RandomSize(2);
|
||||
|
@ -401,7 +401,7 @@ void DoRegenerates()
|
|||
|
||||
if (pActor->spr.extra <= 0)
|
||||
{
|
||||
BuildAnim(nullptr, 38, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), 64, 4);
|
||||
BuildAnim(nullptr, 38, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), 64, 4);
|
||||
D3PlayFX(StaticSound[kSoundTorchOn], pActor);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -39,7 +39,7 @@ static actionSeq LavadudeSeq[] = {
|
|||
|
||||
DExhumedActor* BuildLavaLimb(DExhumedActor* pActor, int move, int ebx)
|
||||
{
|
||||
auto pLimbActor = insertActor(pActor->spr.sector(), 118);
|
||||
auto pLimbActor = insertActor(pActor->sector(), 118);
|
||||
|
||||
pLimbActor->spr.pos.X = pActor->spr.pos.X;
|
||||
pLimbActor->spr.pos.Y = pActor->spr.pos.Y;
|
||||
|
@ -107,7 +107,7 @@ void BuildLava(DExhumedActor* pActor, int x, int y, int, sectortype* pSector, in
|
|||
}
|
||||
else
|
||||
{
|
||||
pSector = pActor->spr.sector();
|
||||
pSector = pActor->sector();
|
||||
nAngle = pActor->spr.ang;
|
||||
x = pActor->spr.pos.X;
|
||||
y = pActor->spr.pos.Y;
|
||||
|
@ -285,11 +285,11 @@ void AILavaDude::Tick(RunListEvent* ev)
|
|||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
int z = pActor->spr.pos.Z;
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
auto coll = movesprite(pActor, pActor->spr.xvel << 8, pActor->spr.yvel << 8, 0, 0, 0, CLIPMASK0);
|
||||
|
||||
if (pSector != pActor->spr.sector())
|
||||
if (pSector != pActor->sector())
|
||||
{
|
||||
ChangeActorSect(pActor, pSector);
|
||||
pActor->spr.pos.X = x;
|
||||
|
|
|
@ -52,7 +52,7 @@ void BuildLion(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
ChangeActorStat(pActor, 104);
|
||||
x = pActor->spr.pos.X;
|
||||
y = pActor->spr.pos.Y;
|
||||
z = pActor->spr.sector()->floorz;
|
||||
z = pActor->sector()->floorz;
|
||||
nAngle = pActor->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ void BuildLion(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
pActor->spr.xrepeat = 40;
|
||||
pActor->spr.yrepeat = 40;
|
||||
pActor->spr.picnum = 1;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.ang = nAngle;
|
||||
|
@ -397,7 +397,7 @@ void AILion::Tick(RunListEvent* ev)
|
|||
{
|
||||
HitInfo hit{};
|
||||
|
||||
hitscan({ x, y, z }, pActor->spr.sector(), { bcos(nScanAngle), bsin(nScanAngle), 0 }, hit, CLIPMASK1);
|
||||
hitscan({ x, y, z }, pActor->sector(), { bcos(nScanAngle), bsin(nScanAngle), 0 }, hit, CLIPMASK1);
|
||||
|
||||
if (hit.hitWall)
|
||||
{
|
||||
|
|
|
@ -89,7 +89,7 @@ bool GameInterface::DrawAutomapPlayer(int mx, int my, int x, int y, int z, int a
|
|||
int nTile = pPlayerActor->spr.picnum;
|
||||
int ceilZ, floorZ;
|
||||
Collision ceilHit, floorHit;
|
||||
getzrange(pPlayerActor->spr.pos, pPlayerActor->spr.sector(), &ceilZ, ceilHit, &floorZ, floorHit, (pPlayerActor->spr.clipdist << 2) + 16, CLIPMASK0);
|
||||
getzrange(pPlayerActor->spr.pos, pPlayerActor->sector(), &ceilZ, ceilHit, &floorZ, floorHit, (pPlayerActor->spr.clipdist << 2) + 16, CLIPMASK0);
|
||||
int nTop, nBottom;
|
||||
GetActorExtents(pPlayerActor, &nTop, &nBottom);
|
||||
int nScale = (pPlayerActor->spr.yrepeat + ((floorZ - nBottom) >> 8)) * z;
|
||||
|
|
|
@ -239,7 +239,7 @@ void clipwall()
|
|||
|
||||
int BelowNear(DExhumedActor* pActor, int x, int y, int walldist)
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
int z = pActor->spr.pos.Z;
|
||||
|
||||
int z2;
|
||||
|
@ -310,7 +310,7 @@ int BelowNear(DExhumedActor* pActor, int x, int y, int walldist)
|
|||
|
||||
Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdist)
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
assert(pSector);
|
||||
|
||||
overridesect = pSector;
|
||||
|
@ -341,9 +341,9 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis
|
|||
}
|
||||
|
||||
// loc_151E7:
|
||||
while (ebp > pActor->spr.sector()->floorz && pActor->spr.sector()->pBelow != nullptr)
|
||||
while (ebp > pActor->sector()->floorz && pActor->sector()->pBelow != nullptr)
|
||||
{
|
||||
ChangeActorSect(pActor, pActor->spr.sector()->pBelow);
|
||||
ChangeActorSect(pActor, pActor->sector()->pBelow);
|
||||
}
|
||||
|
||||
if (pSect2 != pSector)
|
||||
|
@ -363,9 +363,9 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis
|
|||
}
|
||||
else
|
||||
{
|
||||
while ((ebp < pActor->spr.sector()->ceilingz) && (pActor->spr.sector()->pAbove != nullptr))
|
||||
while ((ebp < pActor->sector()->ceilingz) && (pActor->sector()->pAbove != nullptr))
|
||||
{
|
||||
ChangeActorSect(pActor, pActor->spr.sector()->pAbove);
|
||||
ChangeActorSect(pActor, pActor->sector()->pAbove);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -373,12 +373,12 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis
|
|||
// This function finds the highest and lowest z coordinates that your clipping BOX can get to.
|
||||
vec3_t pos = pActor->spr.pos;
|
||||
pos.Z -= 256;
|
||||
getzrange(pos, pActor->spr.sector(), &sprceiling, hiHit, &sprfloor, loHit, 128, CLIPMASK0);
|
||||
getzrange(pos, pActor->sector(), &sprceiling, hiHit, &sprfloor, loHit, 128, CLIPMASK0);
|
||||
|
||||
int mySprfloor = sprfloor;
|
||||
|
||||
if (loHit.type != kHitSprite) {
|
||||
mySprfloor += pActor->spr.sector()->Depth;
|
||||
mySprfloor += pActor->sector()->Depth;
|
||||
}
|
||||
|
||||
if (ebp > mySprfloor)
|
||||
|
@ -419,11 +419,11 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis
|
|||
else
|
||||
{
|
||||
// Path B
|
||||
if (pActor->spr.sector()->pBelow == nullptr)
|
||||
if (pActor->sector()->pBelow == nullptr)
|
||||
{
|
||||
nRet.exbits |= kHitAux2;
|
||||
|
||||
int nSectDamage = pActor->spr.sector()->Damage;
|
||||
int nSectDamage = pActor->sector()->Damage;
|
||||
|
||||
if (nSectDamage != 0)
|
||||
{
|
||||
|
@ -450,7 +450,7 @@ Collision movespritez(DExhumedActor* pActor, int z, int height, int, int clipdis
|
|||
}
|
||||
else
|
||||
{
|
||||
if ((ebp - height) < sprceiling && (hiHit.type == kHitSprite || pActor->spr.sector()->pAbove == nullptr))
|
||||
if ((ebp - height) < sprceiling && (hiHit.type == kHitSprite || pActor->sector()->pAbove == nullptr))
|
||||
{
|
||||
ebp = sprceiling + height;
|
||||
nRet.exbits |= kHitAux1;
|
||||
|
@ -499,7 +499,7 @@ Collision movesprite(DExhumedActor* pActor, int dx, int dy, int dz, int ceildist
|
|||
|
||||
int nClipDist = (int8_t)pActor->spr.clipdist << 2;
|
||||
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
assert(pSector);
|
||||
|
||||
int floorZ = pSector->floorz;
|
||||
|
@ -512,7 +512,7 @@ Collision movesprite(DExhumedActor* pActor, int dx, int dy, int dz, int ceildist
|
|||
|
||||
Collision nRet = movespritez(pActor, dz, nSpriteHeight, flordist, nClipDist);
|
||||
|
||||
pSector = pActor->spr.sector(); // modified in movespritez so re-grab this variable
|
||||
pSector = pActor->sector(); // modified in movespritez so re-grab this variable
|
||||
|
||||
if (pActor->spr.statnum == 100)
|
||||
{
|
||||
|
@ -545,7 +545,7 @@ Collision movesprite(DExhumedActor* pActor, int dx, int dy, int dz, int ceildist
|
|||
nRet = coll;
|
||||
}
|
||||
|
||||
if ((pSector != pActor->spr.sector()) && pSector != nullptr)
|
||||
if ((pSector != pActor->sector()) && pSector != nullptr)
|
||||
{
|
||||
if (nRet.exbits & kHitAux2) {
|
||||
dz = 0;
|
||||
|
@ -562,7 +562,7 @@ Collision movesprite(DExhumedActor* pActor, int dx, int dy, int dz, int ceildist
|
|||
|
||||
if (pActor->spr.pal < 5 && !pActor->spr.hitag)
|
||||
{
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -572,7 +572,7 @@ Collision movesprite(DExhumedActor* pActor, int dx, int dy, int dz, int ceildist
|
|||
|
||||
void Gravity(DExhumedActor* pActor)
|
||||
{
|
||||
if (pActor->spr.sector()->Flag & kSectUnderwater)
|
||||
if (pActor->sector()->Flag & kSectUnderwater)
|
||||
{
|
||||
if (pActor->spr.statnum != 100)
|
||||
{
|
||||
|
@ -624,11 +624,11 @@ Collision MoveCreatureWithCaution(DExhumedActor* pActor)
|
|||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
int z = pActor->spr.pos.Z;
|
||||
auto pSectorPre = pActor->spr.sector();
|
||||
auto pSectorPre = pActor->sector();
|
||||
|
||||
auto ecx = MoveCreature(pActor);
|
||||
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
if (pSector != pSectorPre)
|
||||
{
|
||||
|
@ -698,7 +698,7 @@ DExhumedActor* FindPlayer(DExhumedActor* pActor, int nDistance, bool dontengage)
|
|||
|
||||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
int z = pActor->spr.pos.Z - GetActorHeight(pActor);
|
||||
|
||||
|
@ -722,7 +722,7 @@ DExhumedActor* FindPlayer(DExhumedActor* pActor, int nDistance, bool dontengage)
|
|||
{
|
||||
int v10 = abs(pPlayerActor->spr.pos.Y - y);
|
||||
|
||||
if (v10 < nDistance && cansee(pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z - 7680, pPlayerActor->spr.sector(), x, y, z, pSector))
|
||||
if (v10 < nDistance && cansee(pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z - 7680, pPlayerActor->sector(), x, y, z, pSector))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -1081,7 +1081,7 @@ void MoveSector(sectortype* pSector, int nAngle, int *nXVel, int *nYVel)
|
|||
inity = pActor->spr.pos.Y;
|
||||
initz = pActor->spr.pos.Z;
|
||||
inita = pActor->spr.ang;
|
||||
initsectp = pActor->spr.sector();
|
||||
initsectp = pActor->sector();
|
||||
}
|
||||
|
||||
void SetQuake(DExhumedActor* pActor, int nVal)
|
||||
|
@ -1239,7 +1239,7 @@ void WheresMyMouth(int nPlayer, vec3_t* pos, sectortype **sectnum)
|
|||
auto pActor = PlayerList[nPlayer].pActor;
|
||||
int height = GetActorHeight(pActor) >> 1;
|
||||
|
||||
*sectnum = pActor->spr.sector();
|
||||
*sectnum = pActor->sector();
|
||||
*pos = pActor->spr.pos;
|
||||
pos->Z -= height;
|
||||
|
||||
|
@ -1358,7 +1358,7 @@ DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial)
|
|||
}
|
||||
pActor->spr.pos = pSrc->spr.pos;
|
||||
|
||||
ChangeActorSect(pActor, pSrc->spr.sector());
|
||||
ChangeActorSect(pActor, pSrc->sector());
|
||||
|
||||
pActor->spr.cstat = CSTAT_SPRITE_YCENTER;
|
||||
pActor->spr.shade = -12;
|
||||
|
@ -1399,7 +1399,7 @@ void AICreatureChunk::Tick(RunListEvent* ev)
|
|||
|
||||
Gravity(pActor);
|
||||
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
pActor->spr.pal = pSector->ceilingpal;
|
||||
|
||||
auto nVal = movesprite(pActor, pActor->spr.xvel << 10, pActor->spr.yvel << 10, pActor->spr.zvel, 2560, -2560, CLIPMASK1);
|
||||
|
@ -1407,7 +1407,7 @@ void AICreatureChunk::Tick(RunListEvent* ev)
|
|||
if (pActor->spr.pos.Z >= pSector->floorz)
|
||||
{
|
||||
// re-grab this variable as it may have changed in movesprite(). Note the check above is against the value *before* movesprite so don't change it.
|
||||
pSector = pActor->spr.sector();
|
||||
pSector = pActor->sector();
|
||||
|
||||
pActor->spr.xvel = 0;
|
||||
pActor->spr.yvel = 0;
|
||||
|
|
|
@ -64,7 +64,7 @@ void BuildMummy(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
pActor->spr.zvel = 0;
|
||||
pActor->spr.xrepeat = 42;
|
||||
pActor->spr.yrepeat = 42;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.ang = nAngle;
|
||||
|
@ -104,8 +104,8 @@ void CheckMummyRevive(DExhumedActor* pActor)
|
|||
|
||||
if (x <= 20 && y <= 20)
|
||||
{
|
||||
if (cansee(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - 8192, pActor->spr.sector(),
|
||||
pOther->spr.pos.X, pOther->spr.pos.Y, pOther->spr.pos.Z - 8192, pOther->spr.sector()))
|
||||
if (cansee(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - 8192, pActor->sector(),
|
||||
pOther->spr.pos.X, pOther->spr.pos.Y, pOther->spr.pos.Z - 8192, pOther->sector()))
|
||||
{
|
||||
pOther->spr.cstat = 0;
|
||||
pOther->nAction = 6;
|
||||
|
@ -208,8 +208,8 @@ void AIMummy::Tick(RunListEvent* ev)
|
|||
{
|
||||
if (RandomBit() && pTarget)
|
||||
{
|
||||
if (cansee(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - GetActorHeight(pActor), pActor->spr.sector(),
|
||||
pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - GetActorHeight(pTarget), pTarget->spr.sector()))
|
||||
if (cansee(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - GetActorHeight(pActor), pActor->sector(),
|
||||
pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - GetActorHeight(pTarget), pTarget->sector()))
|
||||
{
|
||||
pActor->nAction = 3;
|
||||
pActor->nFrame = 0;
|
||||
|
@ -450,7 +450,7 @@ void AIMummy::Damage(RunListEvent* ev)
|
|||
pActor->spr.xvel = 0;
|
||||
pActor->spr.yvel = 0;
|
||||
pActor->spr.zvel = 0;
|
||||
pActor->spr.pos.Z = pActor->spr.sector()->floorz;
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1234,7 +1234,7 @@ int BuildTrap(DExhumedActor* pActor, int edx, int ebx, int ecx)
|
|||
return nTrap;
|
||||
}
|
||||
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
|
||||
for(auto& wal : wallsofsector(pSector))
|
||||
{
|
||||
|
@ -1356,7 +1356,7 @@ int BuildFireBall(DExhumedActor* nSprite, int a, int b)
|
|||
|
||||
DExhumedActor* BuildSpark(DExhumedActor* pActor, int nVal)
|
||||
{
|
||||
auto pSpark = insertActor(pActor->spr.sector(), 0);
|
||||
auto pSpark = insertActor(pActor->sector(), 0);
|
||||
|
||||
pSpark->spr.pos.X = pActor->spr.pos.X;
|
||||
pSpark->spr.pos.Y = pActor->spr.pos.Y;
|
||||
|
@ -1637,7 +1637,7 @@ void KillCreatures()
|
|||
|
||||
void ExplodeEnergyBlock(DExhumedActor* pActor)
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
|
||||
for(auto& wal : wallsofsector(pSector))
|
||||
{
|
||||
|
@ -1764,7 +1764,7 @@ void AIEnergyBlock::RadialDamage(RunListEvent* ev)
|
|||
auto pActor = ev->pObjActor;
|
||||
if (!pActor) return;
|
||||
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
if (pSector->extra == -1) {
|
||||
return;
|
||||
|
@ -1826,7 +1826,7 @@ DExhumedActor* BuildObject(DExhumedActor* pActor, int nOjectType, int nHitag)
|
|||
pActor->nFrame = RandomSize(4) % (SeqSize[pActor->nIndex] - 1);
|
||||
}
|
||||
|
||||
auto pActor2 = insertActor(pActor->spr.sector(), 0);
|
||||
auto pActor2 = insertActor(pActor->sector(), 0);
|
||||
pActor->pTarget = pActor2;
|
||||
pActor->nIndex2 = -1;
|
||||
|
||||
|
@ -1928,7 +1928,7 @@ void AIObject::Tick(RunListEvent* ev)
|
|||
int var_18;
|
||||
|
||||
// red branch
|
||||
if ((nStat == kStatExplodeTarget) || (pActor->spr.pos.Z < pActor->spr.sector()->floorz))
|
||||
if ((nStat == kStatExplodeTarget) || (pActor->spr.pos.Z < pActor->sector()->floorz))
|
||||
{
|
||||
var_18 = 36;
|
||||
}
|
||||
|
@ -1937,8 +1937,8 @@ void AIObject::Tick(RunListEvent* ev)
|
|||
var_18 = 34;
|
||||
}
|
||||
|
||||
AddFlash(pActor->spr.sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
BuildAnim(nullptr, var_18, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.sector()->floorz, pActor->spr.sector(), 240, 4);
|
||||
AddFlash(pActor->sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
BuildAnim(nullptr, var_18, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->sector()->floorz, pActor->sector(), 240, 4);
|
||||
|
||||
// int edi = nSprite | 0x4000;
|
||||
|
||||
|
@ -1971,7 +1971,7 @@ void AIObject::Tick(RunListEvent* ev)
|
|||
pActor->nHealth = 120;
|
||||
|
||||
pActor->spr.pos = pActor->pTarget->spr.pos;
|
||||
ChangeActorSect(pActor, pActor->pTarget->spr.sector());
|
||||
ChangeActorSect(pActor, pActor->pTarget->sector());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -2103,7 +2103,7 @@ void DoDrips()
|
|||
if (!pActor) continue;
|
||||
int nSeqOffset = SeqOffsets[kSeqDrips];
|
||||
|
||||
if (!(pActor->spr.sector()->Flag & kSectLava)) {
|
||||
if (!(pActor->sector()->Flag & kSectLava)) {
|
||||
nSeqOffset++;
|
||||
}
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ void RestartPlayer(int nPlayer)
|
|||
ChangeActorSect(pActor, plr->sPlayerSave.pSector);
|
||||
ChangeActorStat(pActor, 100);
|
||||
|
||||
auto pDActor = insertActor(pActor->spr.sector(), 100);
|
||||
auto pDActor = insertActor(pActor->sector(), 100);
|
||||
plr->pDoppleSprite = pDActor;
|
||||
|
||||
if (nTotalPlayers > 1)
|
||||
|
@ -264,11 +264,11 @@ void RestartPlayer(int nPlayer)
|
|||
pActor->spr.pos.X = nNStartSprite->spr.pos.X;
|
||||
pActor->spr.pos.Y = nNStartSprite->spr.pos.Y;
|
||||
pActor->spr.pos.Z = nNStartSprite->spr.pos.Z;
|
||||
ChangeActorSect(pActor, nNStartSprite->spr.sector());
|
||||
ChangeActorSect(pActor, nNStartSprite->sector());
|
||||
plr->angle.ang = buildang(nNStartSprite->spr.ang&kAngleMask);
|
||||
pActor->spr.ang = plr->angle.ang.asbuild();
|
||||
|
||||
floorsprt = insertActor(pActor->spr.sector(), 0);
|
||||
floorsprt = insertActor(pActor->sector(), 0);
|
||||
|
||||
floorsprt->spr.pos.X = pActor->spr.pos.X;
|
||||
floorsprt->spr.pos.Y = pActor->spr.pos.Y;
|
||||
|
@ -434,7 +434,7 @@ void StartDeathSeq(int nPlayer, int nVal)
|
|||
auto pActor = PlayerList[nPlayer].pActor;
|
||||
PlayerList[nPlayer].nHealth = 0;
|
||||
|
||||
int nLotag = pActor->spr.sector()->lotag;
|
||||
int nLotag = pActor->sector()->lotag;
|
||||
|
||||
if (nLotag > 0) {
|
||||
runlist_SignalRun(nLotag - 1, nPlayer, &ExhumedAI::EnterSector);
|
||||
|
@ -452,7 +452,7 @@ void StartDeathSeq(int nPlayer, int nVal)
|
|||
|
||||
if (nWeapon > kWeaponSword && nWeapon <= kWeaponRing)
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
if (pSector->pBelow != nullptr) {
|
||||
pSector = pSector->pBelow;
|
||||
}
|
||||
|
@ -484,7 +484,7 @@ void StartDeathSeq(int nPlayer, int nVal)
|
|||
|
||||
SetNewWeaponImmediate(nPlayer, -2);
|
||||
|
||||
if (pActor->spr.sector()->Damage <= 0)
|
||||
if (pActor->sector()->Damage <= 0)
|
||||
{
|
||||
PlayerList[nPlayer].nDeathType = nVal;
|
||||
}
|
||||
|
@ -495,7 +495,7 @@ void StartDeathSeq(int nPlayer, int nVal)
|
|||
|
||||
nVal *= 2;
|
||||
|
||||
if (nVal || !(pActor->spr.sector()->Flag & kSectUnderwater))
|
||||
if (nVal || !(pActor->sector()->Flag & kSectUnderwater))
|
||||
{
|
||||
PlayerList[nPlayer].nAction = nVal + 17;
|
||||
}
|
||||
|
@ -665,7 +665,7 @@ void AIPlayer::Damage(RunListEvent* ev)
|
|||
return;
|
||||
}
|
||||
|
||||
if (pPlayerActor->spr.sector()->Flag & kSectUnderwater)
|
||||
if (pPlayerActor->sector()->Flag & kSectUnderwater)
|
||||
{
|
||||
if (nAction != 12)
|
||||
{
|
||||
|
@ -780,7 +780,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
|||
if (nPlayer != nLocalPlayer)
|
||||
{
|
||||
nFlashDepth = 5;
|
||||
AddFlash(pPlayerActor->spr.sector(),
|
||||
AddFlash(pPlayerActor->sector(),
|
||||
pPlayerActor->spr.pos.X,
|
||||
pPlayerActor->spr.pos.Y,
|
||||
pPlayerActor->spr.pos.Z, 0);
|
||||
|
@ -852,7 +852,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
|||
}
|
||||
|
||||
// loc_1A4E6
|
||||
auto pSector = pPlayerActor->spr.sector();
|
||||
auto pSector = pPlayerActor->sector();
|
||||
int nSectFlag = PlayerList[nPlayer].pPlayerViewSect->Flag;
|
||||
|
||||
int playerX = pPlayerActor->spr.pos.X;
|
||||
|
@ -874,7 +874,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
|||
int spr_x = pPlayerActor->spr.pos.X;
|
||||
int spr_y = pPlayerActor->spr.pos.Y;
|
||||
int spr_z = pPlayerActor->spr.pos.Z;
|
||||
auto spr_sect = pPlayerActor->spr.sector();
|
||||
auto spr_sect = pPlayerActor->sector();
|
||||
|
||||
// TODO
|
||||
// nSectFlag & kSectUnderwater;
|
||||
|
@ -891,22 +891,22 @@ void AIPlayer::Tick(RunListEvent* ev)
|
|||
vec3_t pos = { pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z };
|
||||
SetActor(pPlayerActor, &pos);
|
||||
|
||||
pPlayerActor->spr.pos.Z = pPlayerActor->spr.sector()->floorz;
|
||||
pPlayerActor->spr.pos.Z = pPlayerActor->sector()->floorz;
|
||||
}
|
||||
else
|
||||
{
|
||||
nMove = movesprite(pPlayerActor, x, y, z, 5120, -5120, CLIPMASK0);
|
||||
|
||||
auto pPlayerSect = pPlayerActor->spr.sector();
|
||||
auto pPlayerSect = pPlayerActor->sector();
|
||||
|
||||
pushmove(&pPlayerActor->spr.pos, &pPlayerSect, pPlayerActor->spr.clipdist << 2, 5120, -5120, CLIPMASK0);
|
||||
if (pPlayerSect != pPlayerActor->spr.sector()) {
|
||||
if (pPlayerSect != pPlayerActor->sector()) {
|
||||
ChangeActorSect(pPlayerActor, pPlayerSect);
|
||||
}
|
||||
}
|
||||
|
||||
// loc_1A6E4
|
||||
if (inside(pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.sector()) != 1)
|
||||
if (inside(pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->sector()) != 1)
|
||||
{
|
||||
ChangeActorSect(pPlayerActor, spr_sect);
|
||||
|
||||
|
@ -919,7 +919,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
|||
}
|
||||
|
||||
// int _bTouchFloor = bTouchFloor;
|
||||
int bUnderwater = pPlayerActor->spr.sector()->Flag & kSectUnderwater;
|
||||
int bUnderwater = pPlayerActor->sector()->Flag & kSectUnderwater;
|
||||
|
||||
if (bUnderwater)
|
||||
{
|
||||
|
@ -928,7 +928,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
|||
}
|
||||
|
||||
// Trigger Ramses?
|
||||
if ((pPlayerActor->spr.sector()->Flag & 0x8000) && bTouchFloor)
|
||||
if ((pPlayerActor->sector()->Flag & 0x8000) && bTouchFloor)
|
||||
{
|
||||
if (nTotalPlayers <= 1)
|
||||
{
|
||||
|
@ -1100,7 +1100,7 @@ sectdone:
|
|||
PlayerList[nPlayer].ototalvel = PlayerList[nPlayer].totalvel;
|
||||
PlayerList[nPlayer].totalvel = ksqrt(sqrtNum);
|
||||
|
||||
auto pViewSect = pPlayerActor->spr.sector();
|
||||
auto pViewSect = pPlayerActor->sector();
|
||||
|
||||
int EyeZ = PlayerList[nPlayer].eyelevel + pPlayerActor->spr.pos.Z + nQuake[nPlayer];
|
||||
|
||||
|
@ -1120,7 +1120,7 @@ sectdone:
|
|||
// Do underwater sector check
|
||||
if (bUnderwater)
|
||||
{
|
||||
if (pViewSect != pPlayerActor->spr.sector())
|
||||
if (pViewSect != pPlayerActor->sector())
|
||||
{
|
||||
if (nMove.type == kHitWall)
|
||||
{
|
||||
|
@ -1140,7 +1140,7 @@ sectdone:
|
|||
auto coll = movesprite(pPlayerActor, x, y, 0, 5120, 0, CLIPMASK0);
|
||||
if (coll.type == kHitWall)
|
||||
{
|
||||
ChangeActorSect(pPlayerActor, pPlayerActor->spr.sector());
|
||||
ChangeActorSect(pPlayerActor, pPlayerActor->sector());
|
||||
|
||||
pPlayerActor->spr.pos.X = var_C4;
|
||||
pPlayerActor->spr.pos.Y = var_D4;
|
||||
|
@ -1239,7 +1239,7 @@ sectdone:
|
|||
}
|
||||
else
|
||||
{
|
||||
auto pTmpSect = pPlayerActor->spr.sector();
|
||||
auto pTmpSect = pPlayerActor->sector();
|
||||
|
||||
if (PlayerList[nPlayer].totalvel > 25 && pPlayerActor->spr.pos.Z > pTmpSect->floorz)
|
||||
{
|
||||
|
@ -1279,12 +1279,12 @@ sectdone:
|
|||
pFloorActor->spr.pos.X = pPlayerActor->spr.pos.X;
|
||||
pFloorActor->spr.pos.Y = pPlayerActor->spr.pos.Y;
|
||||
|
||||
if (pFloorActor->spr.sector() != pPlayerActor->spr.sector())
|
||||
if (pFloorActor->sector() != pPlayerActor->sector())
|
||||
{
|
||||
ChangeActorSect(pFloorActor, pPlayerActor->spr.sector());
|
||||
ChangeActorSect(pFloorActor, pPlayerActor->sector());
|
||||
}
|
||||
|
||||
pFloorActor->spr.pos.Z = pPlayerActor->spr.sector()->floorz;
|
||||
pFloorActor->spr.pos.Z = pPlayerActor->sector()->floorz;
|
||||
}
|
||||
|
||||
int var_30 = 0;
|
||||
|
@ -1303,10 +1303,10 @@ sectdone:
|
|||
HitInfo near;
|
||||
|
||||
// neartag finds the nearest sector, wall, and sprite which has its hitag and/or lotag set to a value.
|
||||
neartag(pPlayerActor->spr.pos, pPlayerActor->spr.sector(), pPlayerActor->spr.ang, near, 1024, 2);
|
||||
neartag(pPlayerActor->spr.pos, pPlayerActor->sector(), pPlayerActor->spr.ang, near, 1024, 2);
|
||||
|
||||
DExhumedActor* pActorB;
|
||||
feebtag(pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z, pPlayerActor->spr.sector(), &pActorB, var_30, 768);
|
||||
feebtag(pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z, pPlayerActor->sector(), &pActorB, var_30, 768);
|
||||
|
||||
// Item pickup code
|
||||
if (pActorB != nullptr && pActorB->spr.statnum >= 900)
|
||||
|
@ -2201,7 +2201,7 @@ sectdone:
|
|||
ChangeActorStat(pActorB, 899);
|
||||
}
|
||||
|
||||
SetSavePoint(nPlayer, pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z, pPlayerActor->spr.sector(), pPlayerActor->spr.ang);
|
||||
SetSavePoint(nPlayer, pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z, pPlayerActor->sector(), pPlayerActor->spr.ang);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2223,22 +2223,22 @@ sectdone:
|
|||
// CORRECT ? // loc_1BAF9:
|
||||
if (bTouchFloor)
|
||||
{
|
||||
if (pPlayerActor->spr.sector()->lotag > 0)
|
||||
if (pPlayerActor->sector()->lotag > 0)
|
||||
{
|
||||
runlist_SignalRun(pPlayerActor->spr.sector()->lotag - 1, nPlayer, &ExhumedAI::TouchFloor);
|
||||
runlist_SignalRun(pPlayerActor->sector()->lotag - 1, nPlayer, &ExhumedAI::TouchFloor);
|
||||
}
|
||||
}
|
||||
|
||||
if (pSector != pPlayerActor->spr.sector())
|
||||
if (pSector != pPlayerActor->sector())
|
||||
{
|
||||
if (pSector->lotag > 0)
|
||||
{
|
||||
runlist_SignalRun(pSector->lotag - 1, nPlayer, &ExhumedAI::EnterSector);
|
||||
}
|
||||
|
||||
if (pPlayerActor->spr.sector()->lotag > 0)
|
||||
if (pPlayerActor->sector()->lotag > 0)
|
||||
{
|
||||
runlist_SignalRun(pPlayerActor->spr.sector()->lotag - 1, nPlayer, &ExhumedAI::LeaveSector);
|
||||
runlist_SignalRun(pPlayerActor->sector()->lotag - 1, nPlayer, &ExhumedAI::LeaveSector);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2273,7 +2273,7 @@ sectdone:
|
|||
// loc_1BC57:
|
||||
|
||||
// CHECKME - are we finished with 'nSector' variable at this point? if so, maybe set it to pPlayerActor->spr.sector so we can make this code a bit neater. Don't assume pPlayerActor->spr.sector == nSector here!!
|
||||
if (nStandHeight > (pPlayerActor->spr.sector()->floorz - pPlayerActor->spr.sector()->ceilingz)) {
|
||||
if (nStandHeight > (pPlayerActor->sector()->floorz - pPlayerActor->sector()->ceilingz)) {
|
||||
var_48 = 1;
|
||||
}
|
||||
|
||||
|
@ -2471,7 +2471,7 @@ sectdone:
|
|||
{
|
||||
pPlayerActor->spr.picnum = seq_GetSeqPicnum(kSeqJoe, 120, 0);
|
||||
pPlayerActor->spr.cstat = 0;
|
||||
pPlayerActor->spr.pos.Z = pPlayerActor->spr.sector()->floorz;
|
||||
pPlayerActor->spr.pos.Z = pPlayerActor->sector()->floorz;
|
||||
}
|
||||
|
||||
// will invalidate nPlayerSprite
|
||||
|
@ -2519,7 +2519,7 @@ sectdone:
|
|||
case 16:
|
||||
PlayerList[nPlayer].nSeqSize = SeqSize[var_AC] - 1;
|
||||
|
||||
if (pPlayerActor->spr.pos.Z < pPlayerActor->spr.sector()->floorz) {
|
||||
if (pPlayerActor->spr.pos.Z < pPlayerActor->sector()->floorz) {
|
||||
pPlayerActor->spr.pos.Z += 256;
|
||||
}
|
||||
|
||||
|
@ -2548,7 +2548,7 @@ sectdone:
|
|||
initx = pPlayerActor->spr.pos.X;
|
||||
inity = pPlayerActor->spr.pos.Y;
|
||||
initz = pPlayerActor->spr.pos.Z;
|
||||
initsectp = pPlayerActor->spr.sector();
|
||||
initsectp = pPlayerActor->sector();
|
||||
inita = pPlayerActor->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -2579,7 +2579,7 @@ sectdone:
|
|||
}
|
||||
else if (PlayerList[nPlayer].horizon.horiz.asq16() <= 0)
|
||||
{
|
||||
if (!(pPlayerActor->spr.sector()->Flag & kSectUnderwater))
|
||||
if (!(pPlayerActor->sector()->Flag & kSectUnderwater))
|
||||
{
|
||||
SetNewWeapon(nPlayer, PlayerList[nPlayer].nDeathType + 8);
|
||||
}
|
||||
|
@ -2593,10 +2593,10 @@ sectdone:
|
|||
// loc_1C4E1
|
||||
pDopple->spr.pos = pPlayerActor->spr.pos;
|
||||
|
||||
if (pPlayerActor->spr.sector()->pAbove != nullptr)
|
||||
if (pPlayerActor->sector()->pAbove != nullptr)
|
||||
{
|
||||
pDopple->spr.ang = pPlayerActor->spr.ang;
|
||||
ChangeActorSect(pDopple, pPlayerActor->spr.sector()->pAbove);
|
||||
ChangeActorSect(pDopple, pPlayerActor->sector()->pAbove);
|
||||
pDopple->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -249,7 +249,7 @@ void DestroyEgg(int nEgg)
|
|||
|
||||
if (QueenEgg[nEgg].nAction != 4)
|
||||
{
|
||||
BuildAnim(nullptr, 34, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), pActor->spr.xrepeat, 4);
|
||||
BuildAnim(nullptr, 34, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), pActor->spr.xrepeat, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -395,7 +395,7 @@ void BuildTail()
|
|||
int x = head->spr.pos.X;
|
||||
int y = head->spr.pos.X;
|
||||
int z = head->spr.pos.X;
|
||||
auto pSector =head->spr.sector();
|
||||
auto pSector =head->sector();
|
||||
|
||||
int i;
|
||||
|
||||
|
@ -415,7 +415,7 @@ void BuildTail()
|
|||
pTailActor->spr.xrepeat = 80;
|
||||
pTailActor->spr.yrepeat = 80;
|
||||
pTailActor->spr.picnum = 1;
|
||||
pTailActor->spr.pal = pTailActor->spr.sector()->ceilingpal;
|
||||
pTailActor->spr.pal = pTailActor->sector()->ceilingpal;
|
||||
pTailActor->spr.xoffset = 0;
|
||||
pTailActor->spr.yoffset = 0;
|
||||
pTailActor->spr.pos.Z = z;
|
||||
|
@ -447,7 +447,7 @@ void BuildQueenEgg(int nQueen, int nVal)
|
|||
|
||||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
int nFloorZ = pSector->floorz;
|
||||
int nAngle = pActor->spr.ang;
|
||||
|
||||
|
@ -654,7 +654,7 @@ void AIQueenEgg::Tick(RunListEvent* ev)
|
|||
pEgg->nCounter--;
|
||||
if (pEgg->nCounter <= 0)
|
||||
{
|
||||
auto pWaspSprite = BuildWasp(nullptr, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), pActor->spr.ang, true);
|
||||
auto pWaspSprite = BuildWasp(nullptr, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), pActor->spr.ang, true);
|
||||
pActor->spr.pos.Z = pWaspSprite->spr.pos.Z;
|
||||
|
||||
DestroyEgg(nEgg);
|
||||
|
@ -708,7 +708,7 @@ void BuildQueenHead(int nQueen)
|
|||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
int nAngle = pActor->spr.ang;
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
int z = pSector->floorz;
|
||||
|
||||
auto pActor2 = insertActor(pSector, 121);
|
||||
|
@ -926,8 +926,8 @@ void AIQueenHead::Tick(RunListEvent* ev)
|
|||
MoveQX[nQHead] = pActor->spr.pos.X;
|
||||
MoveQY[nQHead] = pActor->spr.pos.Y;
|
||||
MoveQZ[nQHead] = pActor->spr.pos.Z;
|
||||
assert(pActor->spr.sector());
|
||||
MoveQS[nQHead] = pActor->spr.sector();
|
||||
assert(pActor->sector());
|
||||
MoveQS[nQHead] = pActor->sector();
|
||||
MoveQA[nQHead] = pActor->spr.ang;
|
||||
|
||||
nHd = nQHead;
|
||||
|
@ -944,7 +944,7 @@ void AIQueenHead::Tick(RunListEvent* ev)
|
|||
DExhumedActor* pTActor = tailspr[i];
|
||||
if (pTActor)
|
||||
{
|
||||
if (headSect != pTActor->spr.sector())
|
||||
if (headSect != pTActor->sector())
|
||||
{
|
||||
assert(headSect);
|
||||
ChangeActorSect(pTActor, headSect);
|
||||
|
@ -978,7 +978,7 @@ void AIQueenHead::Tick(RunListEvent* ev)
|
|||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
int z = pActor->spr.pos.Z;
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
int nAngle = RandomSize(11) & kAngleMask;
|
||||
|
||||
pActor->spr.xrepeat = 127 - QueenHead.nIndex2;
|
||||
|
@ -1122,7 +1122,7 @@ void BuildQueen(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
ChangeActorStat(pActor, 121);
|
||||
x = pActor->spr.pos.X;
|
||||
y = pActor->spr.pos.Y;
|
||||
z = pActor->spr.sector()->floorz;
|
||||
z = pActor->sector()->floorz;
|
||||
nAngle = pActor->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -1474,7 +1474,7 @@ void AIQueen::Damage(RunListEvent* ev)
|
|||
QueenList[nQueen].nHealth = 4000;
|
||||
QueenList[nQueen].nAction = 7;
|
||||
|
||||
BuildAnim(nullptr, 36, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - 7680, pActor->spr.sector(), pActor->spr.xrepeat, 4);
|
||||
BuildAnim(nullptr, 36, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - 7680, pActor->sector(), pActor->spr.xrepeat, 4);
|
||||
break;
|
||||
case 2:
|
||||
QueenList[nQueen].nHealth = 4000;
|
||||
|
|
|
@ -87,7 +87,7 @@ void BuildRa(int nPlayer)
|
|||
{
|
||||
auto pPlayerActor = PlayerList[nPlayer].pActor;
|
||||
|
||||
auto pActor = insertActor(pPlayerActor->spr.sector(), 203);
|
||||
auto pActor = insertActor(pPlayerActor->sector(), 203);
|
||||
|
||||
pActor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
pActor->spr.xvel = 0;
|
||||
|
@ -141,8 +141,8 @@ void MoveRaToEnemy(int nPlayer)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (pActor->spr.sector() != pTarget->spr.sector()) {
|
||||
ChangeActorSect(pActor, pTarget->spr.sector());
|
||||
if (pActor->sector() != pTarget->sector()) {
|
||||
ChangeActorSect(pActor, pTarget->sector());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -167,8 +167,8 @@ void MoveRaToEnemy(int nPlayer)
|
|||
pActor->spr.pos.Y = pTarget->spr.pos.Y;
|
||||
pActor->spr.pos.Z = pTarget->spr.pos.Z - GetActorHeight(pTarget);
|
||||
|
||||
if (pActor->spr.sector() != pTarget->spr.sector()) {
|
||||
ChangeActorSect(pActor, pTarget->spr.sector());
|
||||
if (pActor->sector() != pTarget->sector()) {
|
||||
ChangeActorSect(pActor, pTarget->sector());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -299,7 +299,7 @@ void DoSpiritHead()
|
|||
pSpiritSpr->spr.shade--;
|
||||
if (--dimSectCount < 0)
|
||||
{
|
||||
DimSector(pSpiritSpr->spr.sector());
|
||||
DimSector(pSpiritSpr->sector());
|
||||
dimSectCount = 5;
|
||||
}
|
||||
|
||||
|
@ -425,8 +425,8 @@ void DoSpiritHead()
|
|||
|
||||
if (nCount < (15 * nPixels) / 16) {
|
||||
SoundBigEntrance();
|
||||
AddGlow(pSpiritSpr->spr.sector(), 20);
|
||||
AddFlash(pSpiritSpr->spr.sector(), pSpiritSpr->spr.pos.X, pSpiritSpr->spr.pos.Y, pSpiritSpr->spr.pos.Z, 128);
|
||||
AddGlow(pSpiritSpr->sector(), 20);
|
||||
AddFlash(pSpiritSpr->sector(), pSpiritSpr->spr.pos.X, pSpiritSpr->spr.pos.Y, pSpiritSpr->spr.pos.Z, 128);
|
||||
nHeadStage = 3;
|
||||
TintPalette(255, 255, 255);
|
||||
CopyHeadToWorkTile(kTileRamsesNormal);
|
||||
|
|
|
@ -94,7 +94,7 @@ void BuildRat(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
|
|||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.picnum = 1;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.clipdist = 30;
|
||||
pActor->spr.ang = nAngle;
|
||||
pActor->spr.xrepeat = 50;
|
||||
|
@ -125,7 +125,7 @@ void BuildRat(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
|
|||
|
||||
DExhumedActor* FindFood(DExhumedActor* pActor)
|
||||
{
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
int z = pActor->spr.pos.Z;
|
||||
|
@ -137,7 +137,7 @@ DExhumedActor* FindFood(DExhumedActor* pActor)
|
|||
DExhumedActor* pActor2 = nChunkSprite[RandomSize(7) % nChunkTotal];
|
||||
if (pActor2 != nullptr)
|
||||
{
|
||||
if (cansee(x, y, z2, pSector, pActor2->spr.pos.X, pActor2->spr.pos.Y, pActor2->spr.pos.Z, pActor2->spr.sector())) {
|
||||
if (cansee(x, y, z2, pSector, pActor2->spr.pos.X, pActor2->spr.pos.Y, pActor2->spr.pos.Z, pActor2->sector())) {
|
||||
return pActor2;
|
||||
}
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ DExhumedActor* FindFood(DExhumedActor* pActor)
|
|||
{
|
||||
if (nPlayerPic == pActor2->spr.picnum)
|
||||
{
|
||||
if (cansee(x, y, z, pSector, pActor2->spr.pos.X, pActor2->spr.pos.Y, pActor2->spr.pos.Z, pActor2->spr.sector())) {
|
||||
if (cansee(x, y, z, pSector, pActor2->spr.pos.X, pActor2->spr.pos.Y, pActor2->spr.pos.Z, pActor2->sector())) {
|
||||
return pActor2;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ void BuildRex(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
|
|||
{
|
||||
x = pActor->spr.pos.X;
|
||||
y = pActor->spr.pos.Y;
|
||||
z = pActor->spr.sector()->floorz;
|
||||
z = pActor->sector()->floorz;
|
||||
nAngle = pActor->spr.ang;
|
||||
|
||||
ChangeActorStat(pActor, 119);
|
||||
|
@ -62,7 +62,7 @@ void BuildRex(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
|
|||
pActor->spr.xrepeat = 64;
|
||||
pActor->spr.yrepeat = 64;
|
||||
pActor->spr.picnum = 1;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.ang = nAngle;
|
||||
|
|
|
@ -46,7 +46,7 @@ void BuildRoach(int nType, DExhumedActor* pActor, int x, int y, int z, sectortyp
|
|||
ChangeActorStat(pActor, 105);
|
||||
x = pActor->spr.pos.X;
|
||||
y = pActor->spr.pos.Y;
|
||||
z = pActor->spr.sector()->floorz;
|
||||
z = pActor->sector()->floorz;
|
||||
angle = pActor->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -58,7 +58,7 @@ void BuildRoach(int nType, DExhumedActor* pActor, int x, int y, int z, sectortyp
|
|||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.picnum = 1;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.clipdist = 60;
|
||||
pActor->spr.ang = angle;
|
||||
pActor->spr.xrepeat = 40;
|
||||
|
|
|
@ -1644,11 +1644,11 @@ int runlist_CheckRadialDamage(DExhumedActor* pActor)
|
|||
cansee(pRadialActor->spr.pos.X,
|
||||
pRadialActor->spr.pos.Y,
|
||||
pRadialActor->spr.pos.Z - 512,
|
||||
pRadialActor->spr.sector(),
|
||||
pRadialActor->sector(),
|
||||
pActor->spr.pos.X,
|
||||
pActor->spr.pos.Y,
|
||||
pActor->spr.pos.Z - 8192,
|
||||
pActor->spr.sector()))
|
||||
pActor->sector()))
|
||||
{
|
||||
edi = (nRadialDamage * (nDamageRadius - nDist)) / nDamageRadius;
|
||||
|
||||
|
@ -1729,7 +1729,7 @@ void runlist_DamageEnemy(DExhumedActor* pActor, DExhumedActor* pActor2, int nDam
|
|||
{
|
||||
// Do a taunt
|
||||
auto pPlayerActor = PlayerList[nPlayer].pActor;
|
||||
auto pSector = pPlayerActor->spr.sector();
|
||||
auto pSector = pPlayerActor->sector();
|
||||
|
||||
if (!(pSector->Flag & kSectUnderwater))
|
||||
{
|
||||
|
|
|
@ -50,7 +50,7 @@ void BuildScorp(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
|
||||
x = pActor->spr.pos.X;
|
||||
y = pActor->spr.pos.Y;
|
||||
z = pActor->spr.sector()->floorz;
|
||||
z = pActor->sector()->floorz;
|
||||
nAngle = pActor->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ void BuildScorp(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
pActor->spr.xrepeat = 80;
|
||||
pActor->spr.yrepeat = 80;
|
||||
pActor->spr.picnum = 1;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.ang = nAngle;
|
||||
|
@ -369,7 +369,7 @@ void AIScorp::Tick(RunListEvent* ev)
|
|||
return;
|
||||
}
|
||||
|
||||
auto pSpiderActor = BuildSpider(nullptr, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), pActor->spr.ang);
|
||||
auto pSpiderActor = BuildSpider(nullptr, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), pActor->spr.ang);
|
||||
if (pSpiderActor)
|
||||
{
|
||||
pSpiderActor->spr.ang = RandomSize(11);
|
||||
|
@ -428,8 +428,8 @@ void AIScorp::Effect(RunListEvent* ev, DExhumedActor* pTarget, int mode)
|
|||
{
|
||||
pActor->nCount = 45;
|
||||
|
||||
if (cansee(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - GetActorHeight(pActor), pActor->spr.sector(),
|
||||
pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - GetActorHeight(pTarget), pTarget->spr.sector()))
|
||||
if (cansee(pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - GetActorHeight(pActor), pActor->sector(),
|
||||
pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - GetActorHeight(pTarget), pTarget->sector()))
|
||||
{
|
||||
pActor->spr.xvel = 0;
|
||||
pActor->spr.yvel = 0;
|
||||
|
|
|
@ -50,7 +50,7 @@ void BuildSet(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
|
|||
ChangeActorStat(pActor, 120);
|
||||
x = pActor->spr.pos.X;
|
||||
y = pActor->spr.pos.Y;
|
||||
z = pActor->spr.sector()->floorz;
|
||||
z = pActor->sector()->floorz;
|
||||
nAngle = pActor->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ void BuildSet(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
|
|||
pActor->spr.zvel = 0;
|
||||
pActor->spr.xrepeat = 87;
|
||||
pActor->spr.yrepeat = 96;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.xoffset = 0;
|
||||
pActor->spr.yoffset = 0;
|
||||
pActor->spr.ang = nAngle;
|
||||
|
@ -97,7 +97,7 @@ void BuildSet(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
|
|||
|
||||
void BuildSoul(DExhumedActor* pSet)
|
||||
{
|
||||
auto pActor = insertActor(pSet->spr.sector(), 0);
|
||||
auto pActor = insertActor(pSet->sector(), 0);
|
||||
|
||||
pActor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
pActor->spr.shade = -127;
|
||||
|
@ -115,7 +115,7 @@ void BuildSoul(DExhumedActor* pSet)
|
|||
pActor->spr.pos.X = pSet->spr.pos.X;
|
||||
pActor->spr.pos.Y = pSet->spr.pos.Y;
|
||||
|
||||
pActor->spr.pos.Z = (RandomSize(8) << 8) + 8192 + pActor->spr.sector()->ceilingz - GetActorHeight(pActor);
|
||||
pActor->spr.pos.Z = (RandomSize(8) << 8) + 8192 + pActor->sector()->ceilingz - GetActorHeight(pActor);
|
||||
|
||||
//pActor->spr.hitag = nSet;
|
||||
pActor->pTarget = pSet;
|
||||
|
@ -158,7 +158,7 @@ void AISoul::Tick(RunListEvent* ev)
|
|||
pActor->spr.pos.X = pSet->spr.pos.X;
|
||||
pActor->spr.pos.Y = pSet->spr.pos.Y;
|
||||
pActor->spr.pos.Z = pSet->spr.pos.Z - (GetActorHeight(pSet) >> 1);
|
||||
ChangeActorSect(pActor, pSet->spr.sector());
|
||||
ChangeActorSect(pActor, pSet->sector());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ void AISet::Tick(RunListEvent* ev)
|
|||
|
||||
auto nMov = MoveCreature(pActor);
|
||||
|
||||
auto sect = pActor->spr.sector();
|
||||
auto sect = pActor->sector();
|
||||
pushmove(&pActor->spr.pos, §, pActor->spr.clipdist << 2, 5120, -5120, CLIPMASK0);
|
||||
pActor->setsector(sect);
|
||||
|
||||
|
|
|
@ -117,9 +117,9 @@ void ExplodeSnakeSprite(DExhumedActor* pActor, int nPlayer)
|
|||
|
||||
pActor->pTarget = nOwner;
|
||||
|
||||
BuildAnim(nullptr, 23, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->spr.sector(), 40, 4);
|
||||
BuildAnim(nullptr, 23, 0, pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, pActor->sector(), 40, 4);
|
||||
|
||||
AddFlash(pActor->spr.sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
AddFlash(pActor->sector(), pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z, 128);
|
||||
|
||||
StopActorSound(pActor);
|
||||
}
|
||||
|
@ -139,7 +139,7 @@ void BuildSnake(int nPlayer, int zVal)
|
|||
int nAngle = pPlayerActor->spr.ang;
|
||||
|
||||
HitInfo hit{};
|
||||
hitscan({ x, y, z }, pPlayerActor->spr.sector(), { bcos(nAngle), bsin(nAngle), 0 }, hit, CLIPMASK1);
|
||||
hitscan({ x, y, z }, pPlayerActor->sector(), { bcos(nAngle), bsin(nAngle), 0 }, hit, CLIPMASK1);
|
||||
|
||||
uint32_t yDiff = abs(hit.hitpos.Y - y);
|
||||
uint32_t xDiff = abs(hit.hitpos.X - x);
|
||||
|
@ -198,7 +198,7 @@ void BuildSnake(int nPlayer, int zVal)
|
|||
pActor->spr.pos.Z = pPlayerActor->spr.pos.Z + zVal;
|
||||
pActor->spr.xrepeat = 32;
|
||||
pActor->spr.yrepeat = 32;
|
||||
pViewSect = pActor->spr.sector();
|
||||
pViewSect = pActor->sector();
|
||||
sprt = pActor;
|
||||
}
|
||||
else
|
||||
|
@ -264,7 +264,7 @@ DExhumedActor* FindSnakeEnemy(int nSnake)
|
|||
if (!pActor) return nullptr;
|
||||
|
||||
int nAngle = pActor->spr.ang;
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
int esi = 2048;
|
||||
|
||||
|
@ -369,7 +369,7 @@ void AISnake::Tick(RunListEvent* ev)
|
|||
SnakeList[nSnake].nAngle = (SnakeList[nSnake].nAngle + 64) & 0x7FF;
|
||||
|
||||
int var_28 = (nAngle + 512) & kAngleMask;
|
||||
auto pSector = pActor->spr.sector();
|
||||
auto pSector = pActor->sector();
|
||||
|
||||
int x = pActor->spr.pos.X;
|
||||
int y = pActor->spr.pos.Y;
|
||||
|
|
|
@ -48,7 +48,7 @@ DExhumedActor* BuildSpider(DExhumedActor* spp, int x, int y, int z, sectortype*
|
|||
|
||||
x = spp->spr.pos.X;
|
||||
y = spp->spr.pos.Y;
|
||||
z = spp->spr.sector()->floorz;
|
||||
z = spp->sector()->floorz;
|
||||
nAngle = spp->spr.ang;
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ DExhumedActor* BuildSpider(DExhumedActor* spp, int x, int y, int z, sectortype*
|
|||
spp->spr.zvel = 0;
|
||||
spp->spr.xrepeat = 40;
|
||||
spp->spr.yrepeat = 40;
|
||||
spp->spr.pal = spp->spr.sector()->ceilingpal;
|
||||
spp->spr.pal = spp->sector()->ceilingpal;
|
||||
spp->spr.xoffset = 0;
|
||||
spp->spr.yoffset = 0;
|
||||
spp->spr.ang = nAngle;
|
||||
|
@ -102,7 +102,7 @@ void AISpider::Tick(RunListEvent* ev)
|
|||
{
|
||||
if (spp->spr.cstat & CSTAT_SPRITE_YFLIP)
|
||||
{
|
||||
spp->spr.pos.Z = spp->spr.sector()->ceilingz + GetActorHeight(spp);
|
||||
spp->spr.pos.Z = spp->sector()->ceilingz + GetActorHeight(spp);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -174,7 +174,7 @@ void AISpider::Tick(RunListEvent* ev)
|
|||
case 3:
|
||||
{
|
||||
case_3:
|
||||
auto pSector =spp->spr.sector();
|
||||
auto pSector =spp->sector();
|
||||
|
||||
if (spp->spr.cstat & CSTAT_SPRITE_YFLIP)
|
||||
{
|
||||
|
@ -287,10 +287,10 @@ void AISpider::Tick(RunListEvent* ev)
|
|||
if (nMov.exbits & kHitAux1
|
||||
&& spp->spr.zvel < 0
|
||||
&& hiHit.type != kHitSprite
|
||||
&& !((spp->spr.sector()->ceilingstat) & CSTAT_SECTOR_SKY))
|
||||
&& !((spp->sector()->ceilingstat) & CSTAT_SECTOR_SKY))
|
||||
{
|
||||
spp->spr.cstat |= CSTAT_SPRITE_YFLIP;
|
||||
spp->spr.pos.Z = GetActorHeight(spp) + spp->spr.sector()->ceilingz;
|
||||
spp->spr.pos.Z = GetActorHeight(spp) + spp->sector()->ceilingz;
|
||||
spp->spr.zvel = 0;
|
||||
|
||||
spp->nAction = 1;
|
||||
|
|
|
@ -91,7 +91,7 @@ static void analyzesprites(tspritetype* tsprite, int& spritesortcnt, int x, int
|
|||
|
||||
bestTarget = nullptr;
|
||||
|
||||
auto pSector =pPlayerActor->spr.sector();
|
||||
auto pSector =pPlayerActor->sector();
|
||||
|
||||
int nAngle = (2048 - pPlayerActor->spr.ang) & kAngleMask;
|
||||
|
||||
|
@ -171,7 +171,7 @@ static void analyzesprites(tspritetype* tsprite, int& spritesortcnt, int x, int
|
|||
{
|
||||
nCreepyTimer = kCreepyCount;
|
||||
|
||||
if (!cansee(x, y, z, pSector, targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - GetActorHeight(targ), targ->spr.sector()))
|
||||
if (!cansee(x, y, z, pSector, targ->spr.pos.X, targ->spr.pos.Y, targ->spr.pos.Z - GetActorHeight(targ), targ->sector()))
|
||||
{
|
||||
bestTarget = nullptr;
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ void DrawView(double smoothRatio, bool sceneonly)
|
|||
playerX = pActor->spr.pos.X;
|
||||
playerY = pActor->spr.pos.Y;
|
||||
playerZ = pActor->spr.pos.Z;
|
||||
pSector = pActor->spr.sector();
|
||||
pSector = pActor->sector();
|
||||
nAngle = buildang(pActor->spr.ang);
|
||||
rotscrnang = buildang(0);
|
||||
|
||||
|
@ -284,7 +284,7 @@ void DrawView(double smoothRatio, bool sceneonly)
|
|||
else
|
||||
{
|
||||
viewz = playerZ + nQuake[nLocalPlayer];
|
||||
int floorZ = pPlayerActor->spr.sector()->floorz;
|
||||
int floorZ = pPlayerActor->sector()->floorz;
|
||||
|
||||
if (viewz > floorZ)
|
||||
viewz = floorZ;
|
||||
|
|
|
@ -58,7 +58,7 @@ DExhumedActor* BuildWasp(DExhumedActor* pActor, int x, int y, int z, sectortype*
|
|||
|
||||
pActor->spr.shade = -12;
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.pal = pActor->spr.sector()->ceilingpal;
|
||||
pActor->spr.pal = pActor->sector()->ceilingpal;
|
||||
pActor->spr.clipdist = 70;
|
||||
|
||||
if (bEggWasp)
|
||||
|
@ -211,7 +211,7 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
{
|
||||
pTarget = pActor->pTarget;
|
||||
|
||||
if (pTarget && (!(pTarget->spr.cstat & CSTAT_SPRITE_BLOCK_ALL) || (pTarget->spr.sector()->Flag & kSectUnderwater)))
|
||||
if (pTarget && (!(pTarget->spr.cstat & CSTAT_SPRITE_BLOCK_ALL) || (pTarget->sector()->Flag & kSectUnderwater)))
|
||||
{
|
||||
// goto pink
|
||||
pActor->pTarget = nullptr;
|
||||
|
@ -332,7 +332,7 @@ void AIWasp::Tick(RunListEvent* ev)
|
|||
}
|
||||
case 5:
|
||||
{
|
||||
auto pSector =pActor->spr.sector();
|
||||
auto pSector =pActor->sector();
|
||||
|
||||
pActor->spr.pos.Z += pActor->spr.zvel;
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ int ViewSectorInScene(sectortype* cursect, int level)
|
|||
{
|
||||
if (actor->spr.hitag == level)
|
||||
{
|
||||
if (cursect == actor->spr.sector())
|
||||
if (cursect == actor->sector())
|
||||
{
|
||||
// ignore case if sprite is pointing up
|
||||
if (actor->spr.ang == 1536)
|
||||
|
@ -97,19 +97,19 @@ void FAF_DrawRooms(int x, int y, int z, fixed_t q16ang, fixed_t q16horiz, int se
|
|||
if (SP_TAG3(actor) == 0)
|
||||
{
|
||||
// back up ceilingpicnum and ceilingstat
|
||||
SP_TAG5(actor) = actor->spr.sector()->ceilingpicnum;
|
||||
actor->spr.sector()->ceilingpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->spr.sector()->ceilingstat;
|
||||
actor->spr.sector()->ceilingstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->spr.sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
SP_TAG5(actor) = actor->sector()->ceilingpicnum;
|
||||
actor->sector()->ceilingpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->sector()->ceilingstat;
|
||||
actor->sector()->ceilingstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
else if (SP_TAG3(actor) == 1)
|
||||
{
|
||||
SP_TAG5(actor) = actor->spr.sector()->floorpicnum;
|
||||
actor->spr.sector()->floorpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->spr.sector()->floorstat;
|
||||
actor->spr.sector()->floorstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->spr.sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
SP_TAG5(actor) = actor->sector()->floorpicnum;
|
||||
actor->sector()->floorpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->sector()->floorstat;
|
||||
actor->sector()->floorstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -127,15 +127,15 @@ void FAF_DrawRooms(int x, int y, int z, fixed_t q16ang, fixed_t q16horiz, int se
|
|||
if (SP_TAG3(actor) == 0)
|
||||
{
|
||||
// restore ceilingpicnum and ceilingstat
|
||||
actor->spr.sector()->ceilingpicnum = SP_TAG5(actor);
|
||||
actor->spr.sector()->ceilingstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->spr.sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
actor->sector()->ceilingpicnum = SP_TAG5(actor);
|
||||
actor->sector()->ceilingstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
else if (SP_TAG3(actor) == 1)
|
||||
{
|
||||
actor->spr.sector()->floorpicnum = SP_TAG5(actor);
|
||||
actor->spr.sector()->floorstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->spr.sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
actor->sector()->floorpicnum = SP_TAG5(actor);
|
||||
actor->sector()->floorstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -274,7 +274,7 @@ void JS_DrawMirrors(PLAYERp pp, int tx, int ty, int tz, fixed_t tpq16ang, fixed
|
|||
|
||||
if (mirror[cnt].campic != -1)
|
||||
tileDelete(mirror[cnt].campic);
|
||||
renderDrawRoomsQ16(dx, dy, dz, tpq16ang, tpq16horiz, actor->spr.sector(), true);
|
||||
renderDrawRoomsQ16(dx, dy, dz, tpq16ang, tpq16horiz, actor->sector(), true);
|
||||
analyzesprites(pm_tsprite, pm_spritesortcnt, dx, dy, dz, false);
|
||||
renderDrawMasks();
|
||||
}
|
||||
|
@ -313,8 +313,8 @@ void JS_DrawMirrors(PLAYERp pp, int tx, int ty, int tz, fixed_t tpq16ang, fixed
|
|||
void SW_FloorPortalHack(DSWActor* actor, int z, int match)
|
||||
{
|
||||
// move ceiling multiple of 128 so that the wall tile will line up
|
||||
int pix_diff = labs(z - actor->spr.sector()->ceilingz) >> 8;
|
||||
int newz = actor->spr.sector()->ceilingz - ((pix_diff / 128) + 1) * Z(128);
|
||||
int pix_diff = labs(z - actor->sector()->ceilingz) >> 8;
|
||||
int newz = actor->sector()->ceilingz - ((pix_diff / 128) + 1) * Z(128);
|
||||
|
||||
SWStatIterator it(STAT_FAF);
|
||||
while (actor = it.Next())
|
||||
|
@ -325,17 +325,17 @@ void SW_FloorPortalHack(DSWActor* actor, int z, int match)
|
|||
if (actor->spr.hitag == VIEW_LEVEL1)
|
||||
{
|
||||
// save it off
|
||||
save.sect[save.zcount] = actor->spr.sector();
|
||||
save.zval[save.zcount] = actor->spr.sector()->ceilingz;
|
||||
save.pic[save.zcount] = actor->spr.sector()->ceilingpicnum;
|
||||
save.slope[save.zcount] = actor->spr.sector()->ceilingheinum;
|
||||
save.sect[save.zcount] = actor->sector();
|
||||
save.zval[save.zcount] = actor->sector()->ceilingz;
|
||||
save.pic[save.zcount] = actor->sector()->ceilingpicnum;
|
||||
save.slope[save.zcount] = actor->sector()->ceilingheinum;
|
||||
|
||||
actor->spr.sector()->setceilingz(newz, true);
|
||||
actor->sector()->setceilingz(newz, true);
|
||||
|
||||
// don't change FAF_MIRROR_PIC - ConnectArea
|
||||
if (actor->spr.sector()->ceilingpicnum != FAF_MIRROR_PIC)
|
||||
actor->spr.sector()->ceilingpicnum = FAF_MIRROR_PIC + 1;
|
||||
actor->spr.sector()->setceilingslope(0);
|
||||
if (actor->sector()->ceilingpicnum != FAF_MIRROR_PIC)
|
||||
actor->sector()->ceilingpicnum = FAF_MIRROR_PIC + 1;
|
||||
actor->sector()->setceilingslope(0);
|
||||
|
||||
save.zcount++;
|
||||
PRODUCTION_ASSERT(save.zcount < ZMAX);
|
||||
|
@ -346,8 +346,8 @@ void SW_FloorPortalHack(DSWActor* actor, int z, int match)
|
|||
|
||||
void SW_CeilingPortalHack(DSWActor* actor, int z, int match)
|
||||
{
|
||||
int pix_diff = labs(z - actor->spr.sector()->floorz) >> 8;
|
||||
int newz = actor->spr.sector()->floorz + ((pix_diff / 128) + 1) * Z(128);
|
||||
int pix_diff = labs(z - actor->sector()->floorz) >> 8;
|
||||
int newz = actor->sector()->floorz + ((pix_diff / 128) + 1) * Z(128);
|
||||
|
||||
SWStatIterator it(STAT_FAF);
|
||||
while (actor = it.Next())
|
||||
|
@ -358,16 +358,16 @@ void SW_CeilingPortalHack(DSWActor* actor, int z, int match)
|
|||
if (actor->spr.hitag == VIEW_LEVEL2)
|
||||
{
|
||||
// save it off
|
||||
save.sect[save.zcount] = actor->spr.sector();
|
||||
save.zval[save.zcount] = actor->spr.sector()->floorz;
|
||||
save.pic[save.zcount] = actor->spr.sector()->floorpicnum;
|
||||
save.slope[save.zcount] = actor->spr.sector()->floorheinum;
|
||||
save.sect[save.zcount] = actor->sector();
|
||||
save.zval[save.zcount] = actor->sector()->floorz;
|
||||
save.pic[save.zcount] = actor->sector()->floorpicnum;
|
||||
save.slope[save.zcount] = actor->sector()->floorheinum;
|
||||
|
||||
actor->spr.sector()->setfloorz(newz, true);
|
||||
actor->sector()->setfloorz(newz, true);
|
||||
// don't change FAF_MIRROR_PIC - ConnectArea
|
||||
if (actor->spr.sector()->floorpicnum != FAF_MIRROR_PIC)
|
||||
actor->spr.sector()->floorpicnum = FAF_MIRROR_PIC + 1;
|
||||
actor->spr.sector()->setfloorslope(0);
|
||||
if (actor->sector()->floorpicnum != FAF_MIRROR_PIC)
|
||||
actor->sector()->floorpicnum = FAF_MIRROR_PIC + 1;
|
||||
actor->sector()->setfloorslope(0);
|
||||
|
||||
save.zcount++;
|
||||
PRODUCTION_ASSERT(save.zcount < ZMAX);
|
||||
|
|
|
@ -284,7 +284,7 @@ int DoActorDie(DSWActor* actor, DSWActor* weapActor, int meansofdeath)
|
|||
void DoDebrisCurrent(DSWActor* actor)
|
||||
{
|
||||
int nx, ny;
|
||||
auto sectp = actor->spr.sector();
|
||||
auto sectp = actor->sector();
|
||||
|
||||
//actor->spr.clipdist = (256+128)>>2;
|
||||
|
||||
|
@ -309,7 +309,7 @@ void DoDebrisCurrent(DSWActor* actor)
|
|||
|
||||
int DoActorSectorDamage(DSWActor* actor)
|
||||
{
|
||||
SECTORp sectp = actor->spr.sector();
|
||||
SECTORp sectp = actor->sector();
|
||||
|
||||
if (actor->user.Health <= 0)
|
||||
return false;
|
||||
|
@ -383,7 +383,7 @@ bool move_debris(DSWActor* actor, int xchange, int ychange, int zchange)
|
|||
|
||||
int DoActorDebris(DSWActor* actor)
|
||||
{
|
||||
SECTORp sectp = actor->spr.sector();
|
||||
SECTORp sectp = actor->sector();
|
||||
int nx, ny;
|
||||
|
||||
// This was move from DoActorDie so actor's can't be walked through until they are on the floor
|
||||
|
@ -397,9 +397,9 @@ int DoActorDebris(DSWActor* actor)
|
|||
KillActor(actor);
|
||||
return 0;
|
||||
case ZILLA_RUN_R0:
|
||||
getzsofslopeptr(actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, &actor->user.hiz, &actor->user.loz);
|
||||
actor->user.lo_sectp = actor->spr.sector();
|
||||
actor->user.hi_sectp = actor->spr.sector();
|
||||
getzsofslopeptr(actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, &actor->user.hiz, &actor->user.loz);
|
||||
actor->user.lo_sectp = actor->sector();
|
||||
actor->user.hi_sectp = actor->sector();
|
||||
actor->user.lowActor = nullptr;
|
||||
actor->user.highActor = nullptr;
|
||||
break;
|
||||
|
@ -426,7 +426,7 @@ int DoActorDebris(DSWActor* actor)
|
|||
}
|
||||
}
|
||||
|
||||
if (actor->spr.sector()->hasU() && FixedToInt(actor->spr.sector()->depth_fixed) > 10) // JBF: added null check
|
||||
if (actor->sector()->hasU() && FixedToInt(actor->sector()->depth_fixed) > 10) // JBF: added null check
|
||||
{
|
||||
actor->user.WaitTics = (actor->user.WaitTics + (ACTORMOVETICS << 3)) & 1023;
|
||||
actor->spr.pos.Z = actor->user.loz - MulScale(Z(2), bsin(actor->user.WaitTics), 14);
|
||||
|
@ -476,7 +476,7 @@ int DoGenerateSewerDebris(DSWActor* actor)
|
|||
{
|
||||
actor->user.Tics = actor->user.WaitTics;
|
||||
|
||||
auto spawned = SpawnActor(STAT_DEAD_ACTOR, 0, Debris[RANDOM_P2(4<<8)>>8], actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 200);
|
||||
auto spawned = SpawnActor(STAT_DEAD_ACTOR, 0, Debris[RANDOM_P2(4<<8)>>8], actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 200);
|
||||
|
||||
SetOwner(actor, spawned);
|
||||
}
|
||||
|
@ -491,7 +491,7 @@ void KeepActorOnFloor(DSWActor* actor)
|
|||
SECTORp sectp;
|
||||
int depth;
|
||||
|
||||
sectp = actor->spr.sector();
|
||||
sectp = actor->sector();
|
||||
|
||||
actor->spr.cstat &= ~(CSTAT_SPRITE_YFLIP); // If upside down, reset it
|
||||
|
||||
|
@ -565,7 +565,7 @@ void KeepActorOnFloor(DSWActor* actor)
|
|||
{
|
||||
int ceilz, florz;
|
||||
Collision ctrash, ftrash;
|
||||
FAFgetzrangepoint(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(),
|
||||
FAFgetzrangepoint(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(),
|
||||
&ceilz, &ctrash, &florz, &ftrash);
|
||||
|
||||
actor->user.oz = actor->spr.pos.Z = florz;
|
||||
|
|
|
@ -254,7 +254,7 @@ int CanHitPlayer(DSWActor* actor)
|
|||
else
|
||||
return false;
|
||||
|
||||
FAFhitscan(actor->spr.pos.X, actor->spr.pos.Y, zhs, actor->spr.sector(),
|
||||
FAFhitscan(actor->spr.pos.X, actor->spr.pos.Y, zhs, actor->sector(),
|
||||
xvect,
|
||||
yvect,
|
||||
zvect,
|
||||
|
@ -438,7 +438,7 @@ int DoActorOperate(DSWActor* actor)
|
|||
|
||||
for (i = 0; i < SIZ(z); i++)
|
||||
{
|
||||
neartag({ actor->spr.pos.X, actor->spr.pos.Y, z[i] }, actor->spr.sector(), actor->spr.ang, near, 1024, NTAG_SEARCH_LO_HI);
|
||||
neartag({ actor->spr.pos.X, actor->spr.pos.Y, z[i] }, actor->sector(), actor->spr.ang, near, 1024, NTAG_SEARCH_LO_HI);
|
||||
}
|
||||
|
||||
if (near.hitSector != nullptr && near.hitpos.X < 1024)
|
||||
|
@ -1348,7 +1348,7 @@ Collision move_scan(DSWActor* actor, int ang, int dist, int *stopx, int *stopy,
|
|||
highActor = actor->user.highActor;
|
||||
lo_sectp = actor->user.lo_sectp;
|
||||
hi_sectp = actor->user.hi_sectp;
|
||||
ssp = actor->spr.sector();
|
||||
ssp = actor->sector();
|
||||
|
||||
// do the move
|
||||
actor->spr.ang = ang;
|
||||
|
|
|
@ -1003,7 +1003,7 @@ int DoBunnyQuickJump(DSWActor* actor)
|
|||
if (pp == Player+myconnectindex)
|
||||
{
|
||||
choose_snd = StdRandomRange(2<<8)>>8;
|
||||
if (FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfTop(actor),actor->spr.sector(),pp->pos.X, pp->pos.Y, pp->pos.Z, pp->cursector) && Facing(actor, actor->user.targetActor))
|
||||
if (FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfTop(actor),actor->sector(),pp->pos.X, pp->pos.Y, pp->pos.Z, pp->cursector) && Facing(actor, actor->user.targetActor))
|
||||
PlayerSound(fagsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp);
|
||||
}
|
||||
}
|
||||
|
@ -1018,7 +1018,7 @@ int DoBunnyQuickJump(DSWActor* actor)
|
|||
if (pp == Player+myconnectindex)
|
||||
{
|
||||
choose_snd = StdRandomRange(3<<8)>>8;
|
||||
if (FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfTop(actor),actor->spr.sector(),pp->pos.X, pp->pos.Y, pp->pos.Z, pp->cursector) && Facing(actor, actor->user.targetActor))
|
||||
if (FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfTop(actor),actor->sector(),pp->pos.X, pp->pos.Y, pp->pos.Z, pp->cursector) && Facing(actor, actor->user.targetActor))
|
||||
PlayerSound(straightsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp);
|
||||
}
|
||||
}
|
||||
|
@ -1112,7 +1112,7 @@ void BunnyHatch(DSWActor* actor)
|
|||
|
||||
for (int i = 0; i < MAX_BUNNYS; i++)
|
||||
{
|
||||
auto actorNew = insertActor(actor->spr.sector(), STAT_DEFAULT);
|
||||
auto actorNew = insertActor(actor->sector(), STAT_DEFAULT);
|
||||
actorNew->spr.clear();
|
||||
actorNew->spr.pos = actor->spr.pos;
|
||||
actorNew->spr.xrepeat = 30; // Baby size
|
||||
|
@ -1169,7 +1169,7 @@ void BunnyHatch(DSWActor* actor)
|
|||
DSWActor* BunnyHatch2(DSWActor* actor)
|
||||
{
|
||||
|
||||
auto actorNew = insertActor(actor->spr.sector(), STAT_DEFAULT);
|
||||
auto actorNew = insertActor(actor->sector(), STAT_DEFAULT);
|
||||
actorNew->spr.clear();
|
||||
actorNew->spr.pos.X = actor->spr.pos.X;
|
||||
actorNew->spr.pos.Y = actor->spr.pos.Y;
|
||||
|
@ -1272,7 +1272,7 @@ int DoBunnyMove(DSWActor* actor)
|
|||
|
||||
if (RandomRange(1000) > 985 && actor->spr.pal != PALETTE_PLAYER1 && actor->user.track < 0)
|
||||
{
|
||||
switch (actor->spr.sector()->floorpicnum)
|
||||
switch (actor->sector()->floorpicnum)
|
||||
{
|
||||
case 153:
|
||||
case 154:
|
||||
|
@ -1329,7 +1329,7 @@ int DoBunnyEat(DSWActor* actor)
|
|||
|
||||
DoActorSectorDamage(actor);
|
||||
|
||||
switch (actor->spr.sector()->floorpicnum)
|
||||
switch (actor->sector()->floorpicnum)
|
||||
{
|
||||
case 153:
|
||||
case 154:
|
||||
|
|
|
@ -541,7 +541,7 @@ int NewCoolg(DSWActor* actor)
|
|||
{
|
||||
ANIMATOR DoActorDecide;
|
||||
|
||||
auto actorNew = SpawnActor(STAT_ENEMY, COOLG_RUN_R0, &s_CoolgBirth[0], actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 50);
|
||||
auto actorNew = SpawnActor(STAT_ENEMY, COOLG_RUN_R0, &s_CoolgBirth[0], actor->sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 50);
|
||||
|
||||
ChangeState(actorNew, &s_CoolgBirth[0]);
|
||||
actorNew->user.StateEnd = s_CoolgDie;
|
||||
|
|
|
@ -112,7 +112,7 @@ void CopySectorMatch(int match)
|
|||
SWStatIterator it(STAT_COPY_DEST);
|
||||
while (auto dActor = it.Next())
|
||||
{
|
||||
dsectp = dActor->spr.sector();
|
||||
dsectp = dActor->sector();
|
||||
|
||||
if (match != dActor->spr.lotag)
|
||||
continue;
|
||||
|
@ -123,7 +123,7 @@ void CopySectorMatch(int match)
|
|||
if (SP_TAG2(sActor) == SP_TAG2(dActor) &&
|
||||
SP_TAG3(sActor) == SP_TAG3(dActor))
|
||||
{
|
||||
ssectp = sActor->spr.sector();
|
||||
ssectp = sActor->sector();
|
||||
|
||||
// !!!!!AAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHH
|
||||
// Don't kill anything you don't have to
|
||||
|
@ -165,8 +165,8 @@ void CopySectorMatch(int match)
|
|||
// move sprites from source to dest - use center offset
|
||||
|
||||
// get center of src and dest sect
|
||||
SectorMidPoint(sActor->spr.sector(), &sx, &sy, &trash);
|
||||
SectorMidPoint(dActor->spr.sector(), &dx, &dy, &trash);
|
||||
SectorMidPoint(sActor->sector(), &sx, &sy, &trash);
|
||||
SectorMidPoint(dActor->sector(), &dx, &dy, &trash);
|
||||
|
||||
// get offset
|
||||
src_xoff = sx - itActor->spr.pos.X;
|
||||
|
@ -185,7 +185,7 @@ void CopySectorMatch(int match)
|
|||
SECTOR_OBJECTp sop;
|
||||
|
||||
// find and add sprite to SO
|
||||
sop = DetectSectorObject(itActor->spr.sector());
|
||||
sop = DetectSectorObject(itActor->sector());
|
||||
AddSpriteToSectorObject(itActor, sop);
|
||||
|
||||
// update sprites postions so they aren't in the
|
||||
|
|
|
@ -456,8 +456,8 @@ void WarpCopySprite(tspritetype* tsprite, int& spritesortcnt)
|
|||
{
|
||||
if (itActor1->spr.lotag == match)
|
||||
{
|
||||
auto sect1 = itActor->spr.sector();
|
||||
auto sect2 = itActor1->spr.sector();
|
||||
auto sect1 = itActor->sector();
|
||||
auto sect2 = itActor1->sector();
|
||||
|
||||
SWSectIterator it2(sect1);
|
||||
while (auto itActor2 = it.Next())
|
||||
|
@ -478,7 +478,7 @@ void WarpCopySprite(tspritetype* tsprite, int& spritesortcnt)
|
|||
newTSpr->pos.X = itActor1->spr.pos.X - xoff;
|
||||
newTSpr->pos.Y = itActor1->spr.pos.Y - yoff;
|
||||
newTSpr->pos.Z = itActor1->spr.pos.Z - zoff;
|
||||
newTSpr->sectp = itActor1->spr.sector();
|
||||
newTSpr->sectp = itActor1->sector();
|
||||
}
|
||||
|
||||
it2.Reset(sect2);
|
||||
|
@ -495,7 +495,7 @@ void WarpCopySprite(tspritetype* tsprite, int& spritesortcnt)
|
|||
|
||||
auto off = itActor1->spr.pos - newTSpr->pos;
|
||||
newTSpr->pos = itActor->spr.pos - off;
|
||||
newTSpr->sectp = itActor->spr.sector();
|
||||
newTSpr->sectp = itActor->sector();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -654,7 +654,7 @@ void analyzesprites(tspritetype* tsprite, int& spritesortcnt, int viewx, int vie
|
|||
// workaround for mines and floor decals beneath the floor
|
||||
if (tsp->picnum == BETTY_R0 || tsp->picnum == FLOORBLOOD1)
|
||||
{
|
||||
int32_t const floorz = getflorzofslopeptr(tActor->spr.sector(), tActor->spr.pos.X, tActor->spr.pos.Y);
|
||||
int32_t const floorz = getflorzofslopeptr(tActor->sector(), tActor->spr.pos.X, tActor->spr.pos.Y);
|
||||
if (tActor->spr.pos.Z > floorz)
|
||||
tsp->pos.Z = floorz;
|
||||
}
|
||||
|
@ -1115,8 +1115,8 @@ void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, sectortype** tsect, binan
|
|||
ang_test = getincangle(ang.asbuild(), actor->spr.ang) < actor->spr.lotag;
|
||||
|
||||
FAFcansee_test =
|
||||
(FAFcansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), *tx, *ty, *tz, pp->cursector) ||
|
||||
FAFcansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.sector(), *tx, *ty, *tz + ActorSizeZ(pp->actor), pp->cursector));
|
||||
(FAFcansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), *tx, *ty, *tz, pp->cursector) ||
|
||||
FAFcansee(actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->sector(), *tx, *ty, *tz + ActorSizeZ(pp->actor), pp->cursector));
|
||||
|
||||
player_in_camera = ang_test && FAFcansee_test;
|
||||
|
||||
|
@ -1168,7 +1168,7 @@ void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, sectortype** tsect, binan
|
|||
*tx = actor->spr.pos.X;
|
||||
*ty = actor->spr.pos.Y;
|
||||
*tz = actor->spr.pos.Z;
|
||||
*tsect = actor->spr.sector();
|
||||
*tsect = actor->sector();
|
||||
|
||||
found_camera = true;
|
||||
break;
|
||||
|
@ -1214,7 +1214,7 @@ void PreDraw(void)
|
|||
SWStatIterator it(STAT_FLOOR_SLOPE_DONT_DRAW);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
actor->spr.sector()->floorstat &= ~(CSTAT_SECTOR_SLOPE);
|
||||
actor->sector()->floorstat &= ~(CSTAT_SECTOR_SLOPE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1224,7 +1224,7 @@ void PostDraw(void)
|
|||
SWStatIterator it(STAT_FLOOR_SLOPE_DONT_DRAW);
|
||||
while (auto actor = it.Next())
|
||||
{
|
||||
actor->spr.sector()->floorstat |= (CSTAT_SECTOR_SLOPE);
|
||||
actor->sector()->floorstat |= (CSTAT_SECTOR_SLOPE);
|
||||
}
|
||||
|
||||
it.Reset(STAT_FAF_COPY);
|
||||
|
@ -1240,7 +1240,7 @@ void PreDrawStackedWater(void)
|
|||
SWStatIterator it(STAT_CEILING_FLOOR_PIC_OVERRIDE);
|
||||
while (auto itActor = it.Next())
|
||||
{
|
||||
SWSectIterator it2(itActor->spr.sector());
|
||||
SWSectIterator it2(itActor->sector());
|
||||
while (auto itActor2 = it2.Next())
|
||||
{
|
||||
if (itActor2->hasU())
|
||||
|
@ -1333,19 +1333,19 @@ void UpdateWallPortalState()
|
|||
if (SP_TAG3(actor) == 0)
|
||||
{
|
||||
// back up ceilingpicnum and ceilingstat
|
||||
SP_TAG5(actor) = actor->spr.sector()->ceilingpicnum;
|
||||
actor->spr.sector()->ceilingpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->spr.sector()->ceilingstat;
|
||||
actor->spr.sector()->ceilingstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->spr.sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
SP_TAG5(actor) = actor->sector()->ceilingpicnum;
|
||||
actor->sector()->ceilingpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->sector()->ceilingstat;
|
||||
actor->sector()->ceilingstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
else if (SP_TAG3(actor) == 1)
|
||||
{
|
||||
SP_TAG5(actor) = actor->spr.sector()->floorpicnum;
|
||||
actor->spr.sector()->floorpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->spr.sector()->floorstat;
|
||||
actor->spr.sector()->floorstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->spr.sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
SP_TAG5(actor) = actor->sector()->floorpicnum;
|
||||
actor->sector()->floorpicnum = SP_TAG2(actor);
|
||||
SP_TAG4(actor) = actor->sector()->floorstat;
|
||||
actor->sector()->floorstat |= (ESectorFlags::FromInt(SP_TAG6(actor)));
|
||||
actor->sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1359,15 +1359,15 @@ void RestorePortalState()
|
|||
if (SP_TAG3(actor) == 0)
|
||||
{
|
||||
// restore ceilingpicnum and ceilingstat
|
||||
actor->spr.sector()->ceilingpicnum = SP_TAG5(actor);
|
||||
actor->spr.sector()->ceilingstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->spr.sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
actor->sector()->ceilingpicnum = SP_TAG5(actor);
|
||||
actor->sector()->ceilingstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->sector()->ceilingstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
else if (SP_TAG3(actor) == 1)
|
||||
{
|
||||
actor->spr.sector()->floorpicnum = SP_TAG5(actor);
|
||||
actor->spr.sector()->floorstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->spr.sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
actor->sector()->floorpicnum = SP_TAG5(actor);
|
||||
actor->sector()->floorstat = ESectorFlags::FromInt(SP_TAG4(actor));
|
||||
actor->sector()->floorstat &= ~(CSTAT_SECTOR_SKY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -420,17 +420,17 @@ int DoEelMatchPlayerZ(DSWActor* actor)
|
|||
|
||||
int bound;
|
||||
|
||||
if (FAF_ConnectArea(actor->spr.sector()))
|
||||
if (FAF_ConnectArea(actor->sector()))
|
||||
{
|
||||
if (actor->user.hi_sectp)
|
||||
{
|
||||
actor->user.hiz = actor->spr.sector()->ceilingz + Z(16);
|
||||
actor->user.hi_sectp = actor->spr.sector();
|
||||
actor->user.hiz = actor->sector()->ceilingz + Z(16);
|
||||
actor->user.hi_sectp = actor->sector();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (actor->user.hiz < actor->spr.sector()->ceilingz + Z(16))
|
||||
actor->user.hiz = actor->spr.sector()->ceilingz + Z(16);
|
||||
if (actor->user.hiz < actor->sector()->ceilingz + Z(16))
|
||||
actor->user.hiz = actor->sector()->ceilingz + Z(16);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue