diff --git a/doc/sphinx/lfun/SetChats.rst b/doc/sphinx/lfun/SetChats.rst
index fd99a3d..78f1485 100644
--- a/doc/sphinx/lfun/SetChats.rst
+++ b/doc/sphinx/lfun/SetChats.rst
@@ -16,25 +16,29 @@
 
     int chance
       Prozentuale Wahrscheinlichkeit einer Ausgabe
-    mixed strs
+    <string|closure|<string|closure|int>* >* strs
       Array mit den verschiedenen Moeglichkeiten der Monsterchats
+      (optional)
 
 BESCHREIBUNG
 ------------
 
     Der NPC gibt mit der Wahrscheinlichkeit <chance> pro Heartbeat einen
-    zufaellig gewaehlten Text aus dem Array <strs> in den Raum aus. Dabei
-    wird per Default send_room() ohne erneutes Umbrechen mit den Messagetypen
-    MT_LOOK|MT_LISTEN|MT_FEEL|MT_SMELL verwendet.
-
-    Die einzelnen Arrayelemente koennen:
+    zufaellig gewaehlten Text aus dem Array <strs> in den Raum aus. Wird
+    kein <strs> uebergeben, wird nur die Chat-Chance geaendert und die
+    bisherigen Chats werden beibehalten.
     
-      * Strings sein
-      * Closures sein, deren Rueckgabe ausgegeben wird und die zusaetzlich
+    Per Default wird send_room() ohne erneutes Umbrechen mit den Messagetypen
+    MT_LOOK|MT_LISTEN|MT_FEEL|MT_SMELL zur Ausgabe verwendet.
+
+    Die einzelnen Arrayelemente koennen sein:
+
+      * Strings
+      * Closures, deren Rueckgabe ausgegeben wird und die zusaetzlich
         einen aenderbaren und in send_room() verwendeten 'msg_typ' per
         Referenz uebergeben bekommen
       * Arrays mit der Struktur
-        `({<string|closure msg >, <int msg_typ>})` sein, fuer
+        `({<string|closure msg >, <int msg_typ>})`, fuer
         die obige Regeln auf 'msg' angewendet werden und bei denen 'msg_typ'
         im send_room() verwendet wird
 
diff --git a/std/npc/chat.c b/std/npc/chat.c
index 4c70823..9eb9184 100644
--- a/std/npc/chat.c
+++ b/std/npc/chat.c
@@ -23,29 +23,30 @@
 /*
  * heart_beat is called so the monster may chat.
  */
-void SetChats(int chance, mixed strs) {
-  if (!pointerp(strs))
-    return;
-  SetProp(P_CHAT_CHANCE,chance);
-  SetProp(P_CHATS,strs);
+void SetChats(int chance,
+        <string|closure|<string|closure|int>* >* strs = QueryProp(P_CHATS))
+{
+  SetProp(P_CHAT_CHANCE, chance);
+  SetProp(P_CHATS, strs);
 }
 
-void SetAttackChats(int chance, mixed strs) {
-  if (!pointerp(strs))
-    return;
-  SetProp(P_ACHAT_CHANCE,chance);
-  SetProp(P_ACHATS,strs);
+void SetAttackChats(int chance,
+        <string|closure|<string|closure|int>* >* strs = QueryProp(P_ACHATS))
+{
+  SetProp(P_ACHAT_CHANCE, chance);
+  SetProp(P_ACHATS, strs);
 }
 
 #define SR_CHAT_MSG 0
 #define SR_CHAT_TYP 1
 
-protected void process_chat(mixed strs) {
-  if (!pointerp(strs) || !sizeof(strs))
+protected void process_chat(<string|closure|<string|closure|int>* >* strs)
+{
+  if (!sizeof(strs))
     return;
 
   int msg_typ;
-  mixed entry = strs[random(sizeof(strs))];
+  <string|closure|<string|closure|int>*> entry = strs[random(sizeof(strs))];
 
   if(pointerp(entry) && sizeof(entry)>=2 && intp(entry[SR_CHAT_TYP])) {
     msg_typ = entry[SR_CHAT_TYP];
