diff --git a/std/player/comm.c b/std/player/comm.c
index 7025a86..312f7e5 100644
--- a/std/player/comm.c
+++ b/std/player/comm.c
@@ -650,10 +650,10 @@
     ReceiveMsg(sprintf(
       "\nadd_to_tell_history(): got bad uid argument %O."
       "sent: %d, recv: %d, flags: %d, msg: %s", 
-      uid, sent, recv, flags, message),MT_DEBUG|MSG_BS_LEAVE_LFS,0,0,ME);              
+      uid, sent, recv, flags, message),MT_DEBUG|MSG_BS_LEAVE_LFS,0,0,ME);
   }
 
-  // letzten Gespraechspartner fuer erwidere.
+  // Gespraechspartner fuer erwidere auch ohne tmhist speichern.
   if (flags & (MSGFLAG_TELL|MSGFLAG_RTELL))
     last_comm_partner = uid;
 
@@ -677,6 +677,7 @@
     }
   }
 
+  // mit eingeschalteter History weitere Details speichern.
   if (!tell_history_enabled)
     return;
 
@@ -718,6 +719,7 @@
     chat->recvcount += recv;
   }
 
+  // ggf. auch INhalte von Gespraechen speichern
   if (tell_history_enabled < TELLHIST_ENABLED)
     return;
 
@@ -743,21 +745,18 @@
   msg->timestamp = time();
 }
 
-protected void clear_tell_history()
+protected void clear_tell_history(int force)
 {
   /* Nach einem "schlafe ein" werden die gespeicherten Mitteilungen geloescht,
      sofern der Spieler nichts abweichendes eingestellt hat. */
 
-#ifdef TELLHIST_LONGLIFE
-  if (tell_history_enabled == TELLHIST_LONGLIFE)
-    return;
-#endif
-
-  foreach (string uid, struct chat_s chat: tell_history)
-    if (pointerp(chat->msgbuf)) {
-      chat->msgbuf = 0;
-      chat->ptr = 0;
-    }
+  // bei manuellem Loeschen (force==1) immer loeschen, ansonsten nur, wenn die
+  // History nicht "long-life" ist.
+  if (tell_history_enabled < TELLHIST_LONGLIFE || force)
+  {
+    tell_history = ([]);
+    commreceivers = ({});
+  }
 }
 
 protected void reset(void)
@@ -767,7 +766,7 @@
      wie bei einem "schlafe ein" die Mitteilungen geloescht. */
 
   if (!interactive())
-    clear_tell_history();
+    clear_tell_history(0);
 
 }
 
@@ -1657,12 +1656,21 @@
     tell_history_enabled = TELLHIST_DISABLED;
     write("Ok, es wird nichts mehr gespeichert.\n");
     if (sizeof(tell_history)) {
-      tell_history = ([]);
-      commreceivers = ({});
+      clear_tell_history(1);
       write("Deine Mitteilungsgeschichte wurde geloescht.\n");
     }
     return 1;
   }
+  if (str == "loeschen")
+  {
+    if (sizeof(tell_history)) {
+      clear_tell_history(1);
+      write("Deine Mitteilungsgeschichte wurde geloescht.\n");
+    }
+    else
+      write("Deine Mitteilungsgeschichte war schon leer.\n");
+    return 1;
+  }
 
   if (str == "namen") {
     int flag;
@@ -1685,14 +1693,12 @@
     return 1;
   }
 
-#ifdef TELLHIST_LONGLIFE
   if (str == "langlebig") {
     tell_history_enabled = TELLHIST_LONGLIFE;
     write("Ok, zukuenftige Mitteilungen werden jeweils bis zum naechsten "
           "Ende/Crash/\nReboot gespeichert.\n");
     return 1;
   }
-#endif
 
   if (str == "status") {
     switch (tell_history_enabled) {
@@ -1705,12 +1711,10 @@
       case TELLHIST_ENABLED:
         write("Deine Mitteilungen werden gespeichert.\n");
         break;
-#ifdef TELLHIST_LONGLIFE
       case TELLHIST_LONGLIFE:
         write("Deine Mitteilungen werden jeweils bis zum naechsten Ende/"
               "Crash/Reboot\ngespeichert.\n");
         break;
-#endif
     }
     return 1;
   }
