diff --git a/doc/lfun/UnregisterHelperNPC b/doc/lfun/UnregisterHelperNPC
index de384fd..79c18f6 100644
--- a/doc/lfun/UnregisterHelperNPC
+++ b/doc/lfun/UnregisterHelperNPC
@@ -1,45 +1,72 @@
+
 UnregisterHelperNPC()
-FUNKTION:
-     public int UnregisterHelperNPC(object npc);
+*********************
 
-DEFINIERT IN:
-     /std/player/combat.c
 
-ARGUMENTE:
-     object npc
-       Objekt des helfenden NPC, der abgemeldet werden soll.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
-     wieder abgemeldet, wenn dieser dem Spieler ab jetzt nicht mehr hilft.
+   public int UnregisterHelperNPC(object npc);
 
-     Wenn ein Helfer-NPC zerstoert wird, ist der Aufruf nicht noetig.
-     Bleibt das Objekt des NPC aber existent, bitte auf jeden Fall wieder
-     ordentlich abmelden, da ansonsten ggf. der Spieler unnoetig blockiert
-     wird.
 
-RUeCKGABEWERT:
-     1, wenn die Abmeldung erfolgreich war.
-     0 sonst, z.B. wenn der NPC gar nicht als Helfer registriert war.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
-     auf 0.
+   /std/player/combat.c
 
-BEISPIELE:
-     1. Ein NPC, der dem Spieler nicht mehr helfen will und normalerweisen im
-        Raum verbleiben soll:
-     tell_object(spieler, "Ich mag Dich nicht mehr, Du bist doof!\n");
-     if (spieler->UnregisterHelperNPC(this_object()) != 1) {
-       // das ist ja bloed...
-       remove(0);
-     }
-     else {
-       tell_room(environment(),
-           Name()+" dreht " +spieler->Name(WEM) + " schmollend den Ruecken "
-           "zu.\n");
-     }
 
-SIEHE AUCH:
-    UnregisterHelperNPC()
-    P_HELPER_NPC
+ARGUMENTE
+=========
+
+   object npc
+     Objekt des helfenden NPC, der abgemeldet werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
+   wieder abgemeldet, wenn dieser dem Spieler ab jetzt nicht mehr hilft.
+
+   Wenn ein Helfer-NPC zerstoert wird, ist der Aufruf nicht noetig.
+   Bleibt das Objekt des NPC aber existent, bitte auf jeden Fall wieder
+   ordentlich abmelden, da ansonsten ggf. der Spieler unnoetig blockiert
+   wird.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn die Abmeldung erfolgreich war.
+   0 sonst, z.B. wenn der NPC gar nicht als Helfer registriert war.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
+   auf 0.
+
+
+BEISPIELE
+=========
+
+   1. Ein NPC, der dem Spieler nicht mehr helfen will und normalerweisen im
+      Raum verbleiben soll:
+   tell_object(spieler, "Ich mag Dich nicht mehr, Du bist doof!\n");
+   if (spieler->UnregisterHelperNPC(this_object()) != 1) {
+     // das ist ja bloed...
+     remove(0);
+   }
+   else {
+     tell_room(environment(),
+         Name()+" dreht " +spieler->Name(WEM) + " schmollend den Ruecken "
+         "zu.\n");
+   }
+
+
+SIEHE AUCH
+==========
+
+   UnregisterHelperNPC()
+   P_HELPER_NPC
