- added code submission for printing secret information.
- added missing TRXTCOLOR_CYAN #define. - changed bridge things to be completely immobile towards sector plane movement. This problem again reared its ugly head in 007LTSD where the oversized bridges got messed up by some opening doors and lowering lifts. Now any plane trying to move such a thing will get blocked. Moving these things by other means still works normally, of course SVN r3013 (trunk)
This commit is contained in:
parent
14f4a9e835
commit
5ad9e0c3b8
3 changed files with 144 additions and 6 deletions
|
|
@ -4737,9 +4737,11 @@ int P_PushUp (AActor *thing, FChangePosition *cpos)
|
|||
{
|
||||
AActor *intersect = intersectors[firstintersect];
|
||||
if (!(intersect->flags2 & MF2_PASSMOBJ) ||
|
||||
(!(intersect->flags3 & MF3_ISMONSTER) &&
|
||||
intersect->Mass > mymass))
|
||||
{ // Can't push things more massive than ourself
|
||||
(!(intersect->flags3 & MF3_ISMONSTER) && intersect->Mass > mymass) ||
|
||||
(intersect->flags4 & MF4_ACTLIKEBRIDGE)
|
||||
)
|
||||
{
|
||||
// Can't push bridges or things more massive than ourself
|
||||
return 2;
|
||||
}
|
||||
fixed_t oldz = intersect->z;
|
||||
|
|
@ -4779,9 +4781,11 @@ int P_PushDown (AActor *thing, FChangePosition *cpos)
|
|||
{
|
||||
AActor *intersect = intersectors[firstintersect];
|
||||
if (!(intersect->flags2 & MF2_PASSMOBJ) ||
|
||||
(!(intersect->flags3 & MF3_ISMONSTER) &&
|
||||
intersect->Mass > mymass))
|
||||
{ // Can't push things more massive than ourself
|
||||
(!(intersect->flags3 & MF3_ISMONSTER) && intersect->Mass > mymass) ||
|
||||
(intersect->flags4 & MF4_ACTLIKEBRIDGE)
|
||||
)
|
||||
{
|
||||
// Can't push bridges or things more massive than ourself
|
||||
return 2;
|
||||
}
|
||||
fixed_t oldz = intersect->z;
|
||||
|
|
@ -4813,6 +4817,7 @@ void PIT_FloorDrop (AActor *thing, FChangePosition *cpos)
|
|||
P_AdjustFloorCeil (thing, cpos);
|
||||
|
||||
if (oldfloorz == thing->floorz) return;
|
||||
if (thing->flags4 & MF4_ACTLIKEBRIDGE) return; // do not move bridge things
|
||||
|
||||
if (thing->velz == 0 &&
|
||||
(!(thing->flags & MF_NOGRAVITY) ||
|
||||
|
|
@ -4856,6 +4861,11 @@ void PIT_FloorRaise (AActor *thing, FChangePosition *cpos)
|
|||
if (thing->z <= thing->floorz ||
|
||||
(!(thing->flags & MF_NOGRAVITY) && (thing->flags2 & MF2_FLOATBOB)))
|
||||
{
|
||||
if (thing->flags4 & MF4_ACTLIKEBRIDGE)
|
||||
{
|
||||
cpos->nofit = true;
|
||||
return; // do not move bridge things
|
||||
}
|
||||
intersectors.Clear ();
|
||||
fixed_t oldz = thing->z;
|
||||
if (!(thing->flags2 & MF2_FLOATBOB))
|
||||
|
|
@ -4898,6 +4908,11 @@ void PIT_CeilingLower (AActor *thing, FChangePosition *cpos)
|
|||
|
||||
if (thing->z + thing->height > thing->ceilingz)
|
||||
{
|
||||
if (thing->flags4 & MF4_ACTLIKEBRIDGE)
|
||||
{
|
||||
cpos->nofit = true;
|
||||
return; // do not move bridge things
|
||||
}
|
||||
intersectors.Clear ();
|
||||
fixed_t oldz = thing->z;
|
||||
if (thing->ceilingz - thing->height >= thing->floorz)
|
||||
|
|
@ -4935,6 +4950,8 @@ void PIT_CeilingRaise (AActor *thing, FChangePosition *cpos)
|
|||
{
|
||||
bool isgood = P_AdjustFloorCeil (thing, cpos);
|
||||
|
||||
if (thing->flags4 & MF4_ACTLIKEBRIDGE) return; // do not move bridge things
|
||||
|
||||
// For DOOM compatibility, only move things that are inside the floor.
|
||||
// (or something else?) Things marked as hanging from the ceiling will
|
||||
// stay where they are.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue