diff --git a/doc/props/P_PRE_INFO b/doc/props/P_PRE_INFO
index 48f1d9e..099e592 100644
--- a/doc/props/P_PRE_INFO
+++ b/doc/props/P_PRE_INFO
@@ -1,55 +1,86 @@
-NAME:
-        P_PRE_INFO                        "npc_pre_info"
 
-DEFINIERT IN:
-        /sys/npc.h
+P_PRE_INFO
+**********
 
-BESCHREIBUNG:
-        Ist die Property in einem NPC definiert, so wird ihr Ergebnis
-        ausgewertet, bevor eine Frage an das Infosystem uebergeben wird.
-        
-        Moegliche Werte:
-        - numerischer Wert ungleich 0
-          => der NPC gibt _keinerlei_ Antwort, die Frage fuehrt sozusagen
-             ins Leere
 
-        - Stringwert
-          => wird als Rueckgabe an den Fragenden ausgegeben, umstehende 
-             Personen bekommen den Text:
-            "XY ist nicht gewillt, Spieler YZ zu antworten".
-            Der Fragende selbst bekommt bei angegebenem Stringwert:
-            "XY " + Stringwert.
+NAME
+====
 
-        - Closure
-          => die Antwort bzw. Reaktion des NPCs obliegt ganz der 
-             angegebenen Closure. Diese muss dabei einen String oder 
-             Ganzzahlen-Wert zurueckgeben
+   P_PRE_INFO                        "npc_pre_info"
 
-BEISPIEL:
-        Ein NPC der manchmal herumrennt, um z.B. eine Aufgabe zu verrichten,
-        koennte so lange Chats abschalten, z.B.
 
-          SetProp(P_CHAT_CHANCE,0); // NPC latscht los
-        
-        Und eine Weile spaeter:
-        
-          SetProp(P_CHAT_CHANCE,5); // NPC ruht wieder, quasselt rum
-        
-        Waehrend des Herumlaufens, also wenn er nicht automatisch schwatzt,
-        soll er auch keinerlei Fragen beantworten:
-          
-          Set(P_PRE_INFO, function mixed () {
-            return (QueryProp(P_CHAT_CHANCE) ? 0 : 
-              "hat gerade keine Zeit fuer Dich."); 
-            }, F_QUERY_METHOD);
+DEFINIERT IN
+============
 
-HINWEISE:
-        Bitte beachten, dass der interne Name der Property "npc_pre_info" 
-        ist und somit nur das Ueberschreiben von _query_npc_pre_info() 
-        funktioniert. 
+   /sys/npc.h
 
-SIEHE AUCH:
-        AddInfo(), /std/npc/info.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Ist die Property in einem NPC definiert, so wird ihr Ergebnis
+   ausgewertet, bevor eine Frage an das Infosystem uebergeben wird.
+
+
+
+   Moegliche Werte:
+   - numerischer Wert ungleich 0
+     => der NPC gibt _keinerlei_ Antwort, die Frage fuehrt sozusagen
+        ins Leere
+
+   - Stringwert
+     => wird als Rueckgabe an den Fragenden ausgegeben, umstehende
+        Personen bekommen den Text:
+       "XY ist nicht gewillt, Spieler YZ zu antworten".
+       Der Fragende selbst bekommt bei angegebenem Stringwert:
+       "XY " + Stringwert.
+
+   - Closure
+     => die Antwort bzw. Reaktion des NPCs obliegt ganz der
+        angegebenen Closure. Diese muss dabei einen String oder
+        Ganzzahlen-Wert zurueckgeben
+
+
+BEISPIEL
+========
+
+   Ein NPC der manchmal herumrennt, um z.B. eine Aufgabe zu verrichten,
+   koennte so lange Chats abschalten, z.B.
+
+     SetProp(P_CHAT_CHANCE,0); // NPC latscht los
+
+
+
+   Und eine Weile spaeter:
+
+
+
+     SetProp(P_CHAT_CHANCE,5); // NPC ruht wieder, quasselt rum
+
+
+
+   Waehrend des Herumlaufens, also wenn er nicht automatisch schwatzt,
+   soll er auch keinerlei Fragen beantworten:
+
+
+
+     Set(P_PRE_INFO, function mixed () {
+       return (QueryProp(P_CHAT_CHANCE) ? 0 :
+         "hat gerade keine Zeit fuer Dich.");
+       }, F_QUERY_METHOD);
+
+
+HINWEISE
+========
+
+   Bitte beachten, dass der interne Name der Property "npc_pre_info"
+   ist und somit nur das Ueberschreiben von _query_npc_pre_info()
+   funktioniert.
+
+
+SIEHE AUCH
+==========
+
+   AddInfo(), /std/npc/info.c
+
 Last modified: 01.03.2016 by Arathorn
