mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-06-04 11:10:48 +00:00
- Update to ZDoom r3013:
* 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 * Added some fudging to make sectors that are neighboring a portal plane but share the same texture properties actual parts of the portal. This is only done when portals are defined with portal things. This was necessary to preserve an effect that depended on incomplete checks in the renderer that could not be preserved with the implementation of linedef based portals. git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1113 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
parent
d48dad9567
commit
9aefd4cddc
4 changed files with 224 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