- floatified the height parameter of nextsectorneighborptr

This commit is contained in:
Christoph Oelckers 2022-09-03 17:27:41 +02:00
parent f378c481b3
commit 6b0b8f944c
7 changed files with 54 additions and 55 deletions

View file

@ -535,9 +535,8 @@ int inside(double x, double y, const sectortype* sect)
//
//==========================================================================
sectortype* nextsectorneighborzptr(sectortype* sectp, int startz_, int flags)
sectortype* nextsectorneighborzptr(sectortype* sectp, double startz, int flags)
{
double startz = startz_ * zinttoworld;
double factor = (flags & Find_Up)? -1 : 1;
double bestz = INT_MAX;
sectortype* bestsec = (flags & Find_Safe)? sectp : nullptr;

View file

@ -358,7 +358,7 @@ enum EFindNextSector
Find_FloorUp = Find_Floor | Find_Up,
Find_FloorDown = Find_Floor | Find_Down,
};
sectortype* nextsectorneighborzptr(sectortype* sectp, int startz, int flags);
sectortype* nextsectorneighborzptr(sectortype* sectp, double startz, int flags);

View file

@ -74,7 +74,7 @@ int pinsectorresetup(sectortype* sec)
if (j == -1)
{
j = nextsectorneighborzptr(sec, sec->int_ceilingz(), Find_CeilingUp | Find_Safe)->int_ceilingz();
j = nextsectorneighborzptr(sec, sec->ceilingz, Find_CeilingUp | Find_Safe)->int_ceilingz();
setanimation(sec, anim_ceilingz, sec, j, 64);
return 1;
}

View file

@ -667,10 +667,10 @@ static void handle_st16(sectortype* sptr, DDukeActor* actor)
if (i == -1)
{
sectp = nextsectorneighborzptr(sptr, sptr->int_floorz(), Find_FloorDown);
sectp = nextsectorneighborzptr(sptr, sptr->floorz, Find_FloorDown);
if (sectp == nullptr)
{
sectp = nextsectorneighborzptr(sptr, sptr->int_floorz(), Find_FloorUp);
sectp = nextsectorneighborzptr(sptr, sptr->floorz, Find_FloorUp);
if (sectp == nullptr) return;
setanimation(sptr, anim_floorz, sptr, sectp->int_floorz(), sptr->extra);
}
@ -694,8 +694,8 @@ static void handle_st18(sectortype* sptr, DDukeActor* actor)
if (i == -1)
{
auto sectp = nextsectorneighborzptr(sptr, sptr->int_floorz(), Find_FloorUp);
if (sectp == nullptr) sectp = nextsectorneighborzptr(sptr, sptr->int_floorz(), Find_FloorDown);
auto sectp = nextsectorneighborzptr(sptr, sptr->floorz, Find_FloorUp);
if (sectp == nullptr) sectp = nextsectorneighborzptr(sptr, sptr->floorz, Find_FloorDown);
if (sectp == nullptr) return;
int j = sectp->int_floorz();
int q = sptr->extra;
@ -717,9 +717,9 @@ static void handle_st29(sectortype* sptr, DDukeActor* actor)
int j;
if (sptr->lotag & 0x8000)
j = nextsectorneighborzptr(sptr, sptr->int_ceilingz(), Find_FloorDown | Find_Safe)->int_floorz();
j = nextsectorneighborzptr(sptr, sptr->ceilingz, Find_FloorDown | Find_Safe)->int_floorz();
else
j = nextsectorneighborzptr(sptr, sptr->int_ceilingz(), Find_CeilingUp | Find_Safe)->int_ceilingz();
j = nextsectorneighborzptr(sptr, sptr->ceilingz, Find_CeilingUp | Find_Safe)->int_ceilingz();
DukeStatIterator it(STAT_EFFECTOR);
while (auto act2 = it.Next())
@ -769,7 +769,7 @@ REDODOOR:
}
else
{
auto sectp = nextsectorneighborzptr(sptr, sptr->int_ceilingz(), Find_CeilingUp);
auto sectp = nextsectorneighborzptr(sptr, sptr->ceilingz, Find_CeilingUp);
if (sectp) j = sectp->int_ceilingz();
else
@ -798,14 +798,14 @@ static void handle_st21(sectortype* sptr, DDukeActor* actor)
if (i >= 0)
{
if (animategoal[i] == sptr->int_ceilingz())
animategoal[i] = nextsectorneighborzptr(sptr, sptr->int_ceilingz(), Find_FloorDown | Find_Safe)->int_floorz();
animategoal[i] = nextsectorneighborzptr(sptr, sptr->ceilingz, Find_FloorDown | Find_Safe)->int_floorz();
else animategoal[i] = sptr->int_ceilingz();
j = animategoal[i];
}
else
{
if (sptr->ceilingz == sptr->floorz)
j = nextsectorneighborzptr(sptr, sptr->int_ceilingz(), Find_FloorDown | Find_Safe)->int_floorz();
j = nextsectorneighborzptr(sptr, sptr->ceilingz, Find_FloorDown | Find_Safe)->int_floorz();
else j = sptr->int_ceilingz();
sptr->lotag ^= 0x8000;
@ -832,9 +832,9 @@ static void handle_st22(sectortype* sptr, DDukeActor* actor)
}
else
{
q = nextsectorneighborzptr(sptr, sptr->int_floorz(), Find_FloorDown | Find_Safe)->int_floorz();
q = nextsectorneighborzptr(sptr, sptr->floorz, Find_FloorDown | Find_Safe)->int_floorz();
j = setanimation(sptr, anim_floorz, sptr, q, sptr->extra);
q = nextsectorneighborzptr(sptr, sptr->int_ceilingz(), Find_CeilingUp | Find_Safe)->int_ceilingz();
q = nextsectorneighborzptr(sptr, sptr->ceilingz, Find_CeilingUp | Find_Safe)->int_ceilingz();
j = setanimation(sptr, anim_ceilingz, sptr, q, sptr->extra);
}

View file

@ -750,8 +750,8 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors)
case SE_17_WARP_ELEVATOR:
{
actor->temp_data[2] = sectp->int_floorz(); //Stopping loc
actor->temp_data[3] = nextsectorneighborzptr(sectp, sectp->int_floorz(), Find_CeilingUp | Find_Safe)->int_ceilingz();
actor->temp_data[4] = nextsectorneighborzptr(sectp, sectp->int_ceilingz(), Find_FloorDown | Find_Safe)->int_floorz();
actor->temp_data[3] = nextsectorneighborzptr(sectp, sectp->floorz, Find_CeilingUp | Find_Safe)->int_ceilingz();
actor->temp_data[4] = nextsectorneighborzptr(sectp, sectp->ceilingz, Find_FloorDown | Find_Safe)->int_floorz();
if (numplayers < 2)
{

View file

@ -615,7 +615,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
This function searches z-coordinates of neighboring sectors to find the
closest (next) ceiling starting at the given z-coordinate (thez).
*/
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
int nElev = BuildElevC(0, nChannel, pSector, FindWallSprites(pSector), nSpeed * 100, nSpeed * 100, 2, pSector->int_floorz(), nextSectorP->int_ceilingz());
@ -634,7 +634,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 2: // Floor Doom door
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
int nElev = BuildElevF(nChannel, pSector, FindWallSprites(pSector), nSpeed * 100, nSpeed * 100, 2, pSector->int_ceilingz(), nextSectorP->int_floorz());
@ -683,7 +683,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 5: // Permanent floor raise
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz() + 1, Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz + 0.005, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
int nElev = BuildElevF(nChannel, pSector, FindWallSprites(pSector), nSpeed * 100, nSpeed * 100, 2, pSector->int_floorz(), nextSectorP->int_ceilingz());
@ -694,7 +694,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 6: // Touchplate floor lower, single
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -712,7 +712,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 7: // Touchplate floor lower, multiple
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -732,7 +732,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 8: // Permanent floor lower
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -744,7 +744,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 9: // Switch activated lift down
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -760,7 +760,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 10: // Touchplate Floor Raise
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -789,7 +789,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
*/
int zVal = 0;
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorUp | Find_Safe);
if (nextSectorP != nullptr) {
zVal = nextSectorP->int_floorz();
}
@ -809,7 +809,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
*/
int zVal = 0;
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorUp | Find_Safe);
if (nextSectorP != nullptr) {
zVal = nextSectorP->int_floorz();
}
@ -833,7 +833,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
*/
int zVal = 0;
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP != nullptr) {
zVal = nextSectorP->int_floorz();
}
@ -850,7 +850,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 15: // Sector raise/lower
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -925,7 +925,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
*/
int zVal = 0;
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP) {
zVal = nextSectorP->int_floorz();
}
@ -942,7 +942,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 24: // Ceiling door, channel trigger only
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -958,7 +958,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 25:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -974,7 +974,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 26:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -990,7 +990,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 27:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1006,7 +1006,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 28:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1022,7 +1022,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 31: // Touchplate
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1038,7 +1038,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 32:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1050,7 +1050,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 33: // Ceiling Crusher
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1062,7 +1062,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 34: // Triggerable Ceiling Crusher(Inactive)
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1088,7 +1088,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 37:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1100,7 +1100,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 39: // Touchplate
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1163,7 +1163,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
*/
int zVal = 0;
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingDown | Find_Safe);
if (nextSectorP != nullptr) {
zVal = nextSectorP->int_ceilingz();
}
@ -1176,7 +1176,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 49:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1188,7 +1188,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 50: // Floor lower / raise
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1264,7 +1264,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 54:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1280,7 +1280,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 55:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1296,7 +1296,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 56:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1308,7 +1308,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 57:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1333,7 +1333,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
nEnergyChan = nChannel;
}
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
int nElev = BuildElevC(0, nChannel, pSector, FindWallSprites(pSector), nSpeed * 100, nSpeed * 100, 2, pSector->int_floorz(), nextSectorP->int_ceilingz());
@ -1344,7 +1344,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 59:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1369,7 +1369,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
while (1)
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorUp | Find_Safe);
if (nextSectorP == nullptr || var_1C >= 8) {
break;
}
@ -1393,7 +1393,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
while (1)
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr || var_20 >= 8) {
break;
}
@ -1419,7 +1419,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 68:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_floorz(), Find_FloorDown | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->floorz, Find_FloorDown | Find_Safe);
if (nextSectorP == nullptr) break;
@ -1432,7 +1432,7 @@ void runlist_ProcessSectorTag(sectortype* pSector, int nLotag, int nHitag)
case 70:
case 71:
{
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->int_ceilingz(), Find_CeilingUp | Find_Safe);
auto nextSectorP = nextsectorneighborzptr(pSector, pSector->ceilingz, Find_CeilingUp | Find_Safe);
if (nextSectorP == nullptr) break;

View file

@ -640,7 +640,7 @@ void DoSpringBoardDown(void)
{
if ((sbp->TimeOut -= synctics) <= 0)
{
auto destz = nextsectorneighborzptr(sbp->sectp, sbp->sectp->int_floorz(), Find_FloorDown | Find_Safe)->floorz;
auto destz = nextsectorneighborzptr(sbp->sectp, sbp->sectp->floorz, Find_FloorDown | Find_Safe)->floorz;
AnimSet(ANIM_Floorz, sbp->sectp, destz, 256);
sbp->sectp->lotag = TAG_SPRING_BOARD;