- MBF21: more work on flags.

* added handlers for the missing upper flags in the first flag word.
* refactored some code related to MF_BOUNCES to adapt to other flags' changes to avoid constant property updates for too many flags.
* treat anything with RF_ZDOOMTRANS as non-translucent for the purpose of the flag checks.
This commit is contained in:
Christoph Oelckers 2021-07-02 19:48:58 +02:00
commit 9082ef7d49
6 changed files with 157 additions and 35 deletions

View file

@ -1608,7 +1608,7 @@ bool AActor::FloorBounceMissile (secplane_t &plane)
flags &= ~MF_INBOUNCE;
return false;
}
else Vel.Z *= bouncefactor;
else Vel.Z *= GetMBFBounceFactor(this);
}
else // Don't run through this for MBF-style bounces
{
@ -2551,7 +2551,7 @@ void P_ZMovement (AActor *mo, double oldfloorz)
if (mo->BounceFlags & BOUNCE_Floors)
{
mo->FloorBounceMissile (mo->floorsector->floorplane);
/* if (!(mo->flags6 & MF6_CANJUMP)) */ return;
/* if (!CanJump(mo)) */ return;
}
else if (mo->flags3 & MF3_NOEXPLODEFLOOR)
{
@ -2660,7 +2660,7 @@ void P_ZMovement (AActor *mo, double oldfloorz)
if (mo->BounceFlags & BOUNCE_Ceilings)
{ // ceiling bounce
mo->FloorBounceMissile (mo->ceilingsector->ceilingplane);
/*if (!(mo->flags6 & MF6_CANJUMP))*/ return;
/* if (!CanJump(mo)) */ return;
}
if (mo->flags & MF_SKULLFLY)
{ // the skull slammed into something