diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 5f846978c..18c737ded 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,11 @@ +May 22, 2006 (Changes by Graf Zahl) +- Fixed: Thing_ChangeTid must check whether the actor whose tid is about to + be changed is scheduled for destruction. +- Fixed: G_FinishTravel added the player to the hash chain twice. +- Fixed: The animations for Doom's E3 intermission used incorrect patch names. +- Added a check for MF_NOLIFTDROP to PIT_CeilingRaise because the overlapping + bridges in 007LTSD got moved by this function. + May 21, 2006 - Fixed GCC 4 warnings in FNodeBuilder::CreateSubsectorsForReal(). - Changed f_finale.cpp/atkstates[] into a static variable, since its diff --git a/src/g_level.cpp b/src/g_level.cpp index ea5c1f347..0acaac167 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -2029,7 +2029,6 @@ void G_FinishTravel () pawn->waterlevel = pawndup->waterlevel; pawn->target = NULL; pawn->lastenemy = NULL; - pawn->AddToHash (); pawn->player->mo = pawn; DObject::PointerSubstitution (oldpawn, pawn); oldpawn->Destroy(); diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index 9ffcbed51..123f29d47 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -885,7 +885,7 @@ FUNC(LS_Thing_ChangeTID) { if (arg0 == 0) { - if (it != NULL) + if (it != NULL && !(it->ObjectFlags & OF_MassDestruction)) { it->RemoveFromHash (); it->tid = arg1; @@ -900,12 +900,15 @@ FUNC(LS_Thing_ChangeTID) next = iterator.Next (); while (next != NULL) { - actor = next; - next = iterator.Next (); + if (!(next->ObjectFlags & OF_MassDestruction)) + { + actor = next; + next = iterator.Next (); - actor->RemoveFromHash (); - actor->tid = arg1; - actor->AddToHash (); + actor->RemoveFromHash (); + actor->tid = arg1; + actor->AddToHash (); + } } } return true; diff --git a/src/p_map.cpp b/src/p_map.cpp index dded60a33..e6147c2f6 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4151,7 +4151,8 @@ void PIT_CeilingRaise (AActor *thing) // (or something else?) Things marked as hanging from the ceiling will // stay where they are. if (thing->z < thing->floorz && - thing->z + thing->height >= thing->ceilingz - moveamt) + thing->z + thing->height >= thing->ceilingz - moveamt && + !(thing->flags & MF_NOLIFTDROP)) { fixed_t oldz = thing->z; thing->z = thing->floorz; diff --git a/wadsrc/in_epi3.txt b/wadsrc/in_epi3.txt index de009e437..d19aff6d9 100644 --- a/wadsrc/in_epi3.txt +++ b/wadsrc/in_epi3.txt @@ -26,23 +26,23 @@ Animation 160 96 11 Animation 104 80 11 { - WIA30300 - WIA30301 - WIA30302 + WIA20300 + WIA20301 + WIA20302 } Animation 120 32 11 { - WIA40400 - WIA40401 - WIA40402 + WIA20400 + WIA20401 + WIA20402 } Animation 40 0 8 { - WIA50500 - WIA50501 - WIA50502 + WIA20500 + WIA20501 + WIA20502 }