diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 2b06d4f60..15c6a0985 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,10 @@ -April 9, 2009 +April 10, 2009 (Changes by Graf Zahl) +- Extended MF5_MOVEWITHSECTOR so that it always keeps the actor on the ground + of a moving floor, regardless of movement speed. For NOBLOCKMAP items this + is necessary because otherwise they can be left in the air and it also adds + some options for other things. + +April 9, 2009 - Changed A_FreezeDeathChunks() so that instead of directly destroying an actor, it sets it to the "Null" state, which will make it invisible and destroy it one tic later. diff --git a/src/p_map.cpp b/src/p_map.cpp index 88e514eb4..9edf30dec 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4442,7 +4442,7 @@ void PIT_FloorDrop (AActor *thing, FChangePosition *cpos) thing->z = thing->z - oldfloorz + thing->floorz; P_CheckFakeFloorTriggers (thing, oldz); } - else if ((thing->flags & MF_NOGRAVITY) || + else if ((thing->flags & MF_NOGRAVITY) || (thing->flags5 & MF5_MOVEWITHSECTOR) || (((cpos->sector->Flags & SECF_FLOORDROP) || cpos->moveamt < 9*FRACUNIT) && thing->z - thing->floorz <= cpos->moveamt)) { @@ -4634,7 +4634,11 @@ bool P_ChangeSector (sector_t *sector, int crunch, int amt, int floorOrCeil, boo if (!n->visited) { n->visited = true; - if (!(n->m_thing->flags&MF_NOBLOCKMAP)) iterator(n->m_thing, &cpos); + if (!(n->m_thing->flags & MF_NOBLOCKMAP) || //jff 4/7/98 don't do these + (n->m_thing->flags5 & MF5_MOVEWITHSECTOR)) + { + iterator(n->m_thing, &cpos); + } break; } }