Keine Leerstrings aus AttackChats ausgeben

Schaden austeilende AttackChat-Funktionen geben regelmaessig
Leerstrings oder 0 zurueck, nachdem sie den Schaden am Gegner
verursacht haben. Wenn sie dabei z.B. an zurueckschlagenden
DefendFuncs sterben, wird der Leerstring trotzdem via send_room()
ausgegeben, und das loest durch das call_other("ReceiveMsg", ...)
eine Warnung aus.

Change-Id: Ife4fc3f434d91e540dd9aeb23ca243055ce2f0e9
diff --git a/std/npc/chat.c b/std/npc/chat.c
index 03a232a..59f7006 100644
--- a/std/npc/chat.c
+++ b/std/npc/chat.c
@@ -52,13 +52,19 @@
     }
     if(closurep(entry))
       entry = funcall(entry, &msg_typ);
+    entry = process_string(entry);
 
     if(msg_typ)
       msg_typ|=MSG_DONT_STORE|MSG_DONT_BUFFER;
-    send_room(environment(),
-              process_string(entry),
-              msg_typ||(MT_LOOK|MT_LISTEN|MT_FEEL|MT_SMELL|
-                        MSG_DONT_STORE|MSG_DONT_BUFFER|MSG_DONT_WRAP));
+
+    // Nur nicht-leere Meldungen ausgeben, und nur dann, wenn der NPC noch
+    // existiert, denn im Falle von Attack-Chats koennte dieser z.B. durch
+    // reflektierten Schaden zerstoert worden sein.
+    if ( stringp(entry) && sizeof(entry) && objectp(this_object()) )
+      send_room(environment(),
+                entry,
+                msg_typ||(MT_LOOK|MT_LISTEN|MT_FEEL|MT_SMELL|
+                          MSG_DONT_STORE|MSG_DONT_BUFFER|MSG_DONT_WRAP));
   }
 }