--- nethack-3.4.3/src/do.c	2005-05-20 09:37:42.878341544 +0200
+++ nethack-3.4.3-patched/src/do.c	2005-05-20 10:02:56.543229504 +0200
@@ -183,6 +183,45 @@ const char *verb;
 				    t->ttyp == TRAPDOOR ? "plugs a trap door" :
 				    t->ttyp == HOLE ? "plugs a hole" :
 				    "fills a pit");
+
+				struct obj *gobjchain, *gobj;
+				int ct = 0;
+				gobjchain = level.objects[x][y];
+
+				for (gobj = gobjchain; gobj; gobj = gobj->nexthere){
+					if (gobj->otyp == CORPSE)
+						ct+=gobj->quan;
+				}
+				if (ct > 0){
+					deltrap(t);
+					obfree(obj, (struct obj *)0);
+					bury_objs(x, y);
+					if (ct > 1){
+						make_grave(x, y, "Common Grave -- Please take a minute to mourn for the victims of War");
+					} else {
+						struct tm *mytime;
+						time_t *tt;
+						char *q;
+
+						tt=(time_t *)malloc(sizeof(time_t));
+						mytime=(struct tm *)malloc(sizeof(time_t));
+						time(tt);
+						mytime=localtime(tt);
+
+						for (gobj = gobjchain; gobj->otyp != CORPSE && gobj; gobj = gobj->nexthere);
+
+						q=(char *)alloc(12+strlen(doname(gobj)));
+						sprintf(q, "%02i/%02i/%04i %s", mytime->tm_mday, mytime->tm_mon+1, mytime->tm_year+1900, doname(gobj));
+						q[strlen(q)]='\0';
+						make_grave(x, y, q);
+						free(q);
+						free(tt);
+						free(mytime);
+					}
+					newsym(x,y);
+					gobj=gobjchain=0;
+					return TRUE;
+				}
 			}
 		}
 		deltrap(t);
