Index: src/projectile.c
===================================================================
--- src/projectile.c	(revision 1619)
+++ src/projectile.c	(working copy)
@@ -399,7 +399,7 @@
 
 		ASSERT(psProj->type == OBJ_BULLET, "Penetrating but not projectile?");
 		psObj->psSource = psProj->psSource;
-		psObj->psDamaged = psProj->psDest;
+		psObj->psDamaged = psProj->psDest->died ? NULL : psProj->psDest;
 		psProj->state = PROJ_IMPACT;
 	}
 	else
@@ -1881,6 +1881,7 @@
 static void
 proj_Update( PROJ_OBJECT *psObj )
 {
+	//Watermelon:please do this after the 3 if below.those are used to clean bogus object pointer
 	CHECK_PROJECTILE(psObj);
 
 	/* See if any of the stored objects have died
@@ -1894,6 +1895,10 @@
 	{
 		psObj->psDest = NULL;
 	}
+	if (psObj->psDamaged && psObj->psDamaged->died)
+	{
+		psObj->psDamaged = NULL;
+	}
 
 	//Watermelon:get naybors
 	projGetNaybors((PROJ_OBJECT *)psObj);
