From 0e5f48adb493c7c8566474838626f53418ddcece Mon Sep 17 00:00:00 2001
From: Randy Heit <rheit@zdoom.fake>
Date: Fri, 30 Oct 2009 00:59:34 +0000
Subject: [PATCH] - Quoth Gez:   * when a logical condition was rewritten and
 inverted, one of the boolean test wasn't inverted along the rest. So the
 "monster must not be a player" was accidentally changed into "monster must be
 a player", which is usually going to be false... There's another minor, but
 related issue.

SVN r1948 (trunk)
---
 src/p_enemy.cpp                 | 5 ++++-
 src/p_mobj.cpp                  | 2 +-
 wadsrc/static/compatibility.txt | 1 +
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/p_enemy.cpp b/src/p_enemy.cpp
index 980025d96..919c11bec 100644
--- a/src/p_enemy.cpp
+++ b/src/p_enemy.cpp
@@ -2545,6 +2545,10 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates)
 			S_Sound (corpsehit, CHAN_BODY, "vile/raise", 1, ATTN_IDLE);
 			info = corpsehit->GetDefault ();
 			
+			if (corpsehit->state == corpsehit->FindState(NAME_GenericCrush))
+			{			
+				corpsehit->Translation = info->Translation; // Clean up bloodcolor translation from crushed corpses
+			}
 			if (ib_compatflags & BCOMPATF_VILEGHOSTS)
 			{
 				corpsehit->height <<= 2;
@@ -2563,7 +2567,6 @@ static bool P_CheckForResurrection(AActor *self, bool usevilestates)
 						corpsehit->RenderStyle = STYLE_Translucent;
 					}
 				}
-				corpsehit->Translation = info->Translation; // Clean up bloodcolor translation from crushed corpses
 			}
 			else
 			{
diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp
index 9b9824264..7ecf49987 100644
--- a/src/p_mobj.cpp
+++ b/src/p_mobj.cpp
@@ -1018,7 +1018,7 @@ bool AActor::Grind(bool items)
 		if (state == NULL 												// Only use the default crushed state if:
 			&& !(flags & MF_NOBLOOD)						// 1. the monster bleeeds,
 			&& (i_compatflags & COMPATF_CORPSEGIBS)			// 2. the compat setting is on,
-			&& player != NULL)								// 3. and the thing isn't a player.
+			&& player == NULL)								// 3. and the thing isn't a player.
 		{
 			isgeneric = true;
 			state = FindState(NAME_GenericCrush);
diff --git a/wadsrc/static/compatibility.txt b/wadsrc/static/compatibility.txt
index dbaadf6fc..b2a168ce7 100644
--- a/wadsrc/static/compatibility.txt
+++ b/wadsrc/static/compatibility.txt
@@ -86,6 +86,7 @@ F84AB4557464A383E93F37CD3A82AC48 // MM2 map03
 2EEB1E12FA9F9545DE9D99990A4A78E5 // Icarus map24
 65A53A09A09525AE42EA210BF879CD37 // Plutonia 2 map32
 2499CF9A9351BE9BC4E9C66FC9F291A7 // Requiem map23
+3CA5493FEFF2E27BFD4181E6C4A3C2BF // The Waterfront map01
 {
 	corpsegibs
 	vileghosts