diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp
index 79f549dd3..e0c9530d3 100644
--- a/src/p_mobj.cpp
+++ b/src/p_mobj.cpp
@@ -7766,7 +7766,13 @@ FState *AActor::GetRaiseState()
 void AActor::Revive()
 {
 	AActor *info = GetDefault();
+	FLinkContext ctx;
+
+	bool flagchange = (flags & (MF_NOBLOCKMAP | MF_NOSECTOR)) != (info->flags & (MF_NOBLOCKMAP | MF_NOSECTOR));
+
+	if (flagchange) UnlinkFromWorld(&ctx);
 	flags = info->flags;
+	if (flagchange) LinkToWorld(&ctx);
 	flags2 = info->flags2;
 	flags3 = info->flags3;
 	flags4 = info->flags4;