diff --git a/doc/props/P_KILL_MSG b/doc/props/P_KILL_MSG
index 0a9e3bb..9437975 100644
--- a/doc/props/P_KILL_MSG
+++ b/doc/props/P_KILL_MSG
@@ -1,80 +1,96 @@
+
 P_KILL_MSG
-
-NAME:
-	P_KILL_MSG			"kill_msg"
-
-DEFINIERT IN:
-	/sys/properties.h
-
-BESCHREIBUNG:
-     Wenn ein Spieler getoetet wird, so erscheint dazu eine kurze Information
-     auf dem Todeskanal. Um dem toetenden Objekt zusaetzlich die Moeglichkeit
-     zu geben, noch etwas mehr auf diesem Kanal auszugeben, kann man in
-     dieser Property einen String uebergeben.
-     Noetige Zeilenumbrueche werden hierbei automatisch generiert.
-
-     Es ist auch moeglich anzugeben, ob Emotes verwendet werden und ob das
-     toetende Objekt ein Plural-Objekt ist. Hierzu uebergibt man ein Array
-     der Gestalt:
-
-	({Killmessage,Emotes}) bzw. ({Killmessage,Emotes,PLURAL})
-
-     Der Eintrag <Killmessage> stellt hierbei die Meldung selbst dar, PLURAL
-     gibt an, dass es sich um ein Plural-Objekt handelt und <Emotes> kann
-     folgende Werte annehmen:
-
-	MSG_SAY    - Meldung wird normal ausgegeben.
-	MSG_EMOTE  - Meldung erscheint als Emote.
-	MSG_GEMOTE - Meldung erscheint als Genitiv-Emote.
-	MSG_EMPTY  - Meldung erscheint ohne zuvorige Angabe des
-	               toetenden Objektes.
-
-     Moechte man die Meldung noch etwas "persoenlicher" ;-) gestalten, so
-     kann man den Platzhalter %s verwenden. An dessen Stelle wird dann der
-     Name des Verblichenen eingesetzt.
-
-BEISPIEL:
-     Ein nettes Beispiel ist das folgende: Wenn ein Spieler sich als
-     Drachentoeter bewehrt hat, so kann er traditionell in seinem Blut baden.
-     Hin und wieder ist jedoch auch der Drache erfolgreich, dem man eine
-     lustige Zusatzmeldung fuer den Todeskanal uebergeben kann:
-
-     void create() {
-       ::create();
-       ...
-       SetProp(P_KILL_MSG,"Jetzt bade ich mal in DEINEM Blut, %s!");
-       ...
-     }
+**********
 
 
-     Falls der 'Killer' ein Plural-Objekt oder -NPC war, koennte eine Meldung
-     auch folgendermassen aussehen:
+NAME
+====
 
-     SetProp(P_KILL_MSG,({"haun sich jetzt die Hucke voll.",
-			  MSG_EMOTE,
-			  PLURAL}));
-
-     wobei P_KILL_NAME hier natuerlich auf "Eine Menge Orks" oder
-     dergleichen gesetzt sein sollte. Auf dem Kanal waere dann dies zu
-     lesen:
-
-	[Tod:Lars] Eine Menge Orks haben gerade Orktoeter umgebracht.
-	[Tod:Eine Menge Orks haun sich jetzt die Hucke voll.]
+   P_KILL_MSG                      "kill_msg"
 
 
-     Weiteres Beispiel.
-     Man habe einen NPC, dessen Killname als Plural aufzufassen ist, der aber
-     keinen zusaetlichen Text auf -Tod bringen soll.
+DEFINIERT IN
+============
 
-     SetProp(P_NAME, "Eine Horde Gummibaeren");
-     SetProp(P_KILL_NAME, "Viele kleine Gummibaeren");
-     SetProp(P_KILL_MSG, ({0, 0, 1}));
+   /sys/properties.h
 
-SIEHE AUCH:
-     Tod:		die(L)
-     Todesmeldungen:	P_KILL_NAME, P_DIE_MSG, P_MURDER_MSG
-			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
-     Sonstiges:		P_CORPSE, P_NOCORPSE, /room/death/death_room.c
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   Wenn ein Spieler getoetet wird, so erscheint dazu eine kurze Information
+   auf dem Todeskanal. Um dem toetenden Objekt zusaetzlich die Moeglichkeit
+   zu geben, noch etwas mehr auf diesem Kanal auszugeben, kann man in
+   dieser Property einen String uebergeben.
+   Noetige Zeilenumbrueche werden hierbei automatisch generiert.
+
+   Es ist auch moeglich anzugeben, ob Emotes verwendet werden und ob das
+   toetende Objekt ein Plural-Objekt ist. Hierzu uebergibt man ein Array
+   der Gestalt:
+
+      ({Killmessage,Emotes}) bzw. ({Killmessage,Emotes,PLURAL})
+
+   Der Eintrag <Killmessage> stellt hierbei die Meldung selbst dar, PLURAL
+   gibt an, dass es sich um ein Plural-Objekt handelt und <Emotes> kann
+   folgende Werte annehmen:
+
+      MSG_SAY    - Meldung wird normal ausgegeben.
+      MSG_EMOTE  - Meldung erscheint als Emote.
+      MSG_GEMOTE - Meldung erscheint als Genitiv-Emote.
+      MSG_EMPTY  - Meldung erscheint ohne zuvorige Angabe des
+                     toetenden Objektes.
+
+   Moechte man die Meldung noch etwas "persoenlicher" ;-) gestalten, so
+   kann man den Platzhalter %s verwenden. An dessen Stelle wird dann der
+   Name des Verblichenen eingesetzt.
+
+
+BEISPIEL
+========
+
+   Ein nettes Beispiel ist das folgende: Wenn ein Spieler sich als
+   Drachentoeter bewehrt hat, so kann er traditionell in seinem Blut baden.
+   Hin und wieder ist jedoch auch der Drache erfolgreich, dem man eine
+   lustige Zusatzmeldung fuer den Todeskanal uebergeben kann:
+
+   void create() {
+     ::create();
+     ...
+     SetProp(P_KILL_MSG,"Jetzt bade ich mal in DEINEM Blut, %s!");
+     ...
+   }
+
+
+   Falls der 'Killer' ein Plural-Objekt oder -NPC war, koennte eine Meldung
+   auch folgendermassen aussehen:
+
+   SetProp(P_KILL_MSG,({"haun sich jetzt die Hucke voll.",
+                        MSG_EMOTE,
+                        PLURAL}));
+
+   wobei P_KILL_NAME hier natuerlich auf "Eine Menge Orks" oder
+   dergleichen gesetzt sein sollte. Auf dem Kanal waere dann dies zu
+   lesen:
+
+      [Tod:Lars] Eine Menge Orks haben gerade Orktoeter umgebracht.
+      [Tod:Eine Menge Orks haun sich jetzt die Hucke voll.]
+
+
+   Weiteres Beispiel.
+   Man habe einen NPC, dessen Killname als Plural aufzufassen ist, der aber
+   keinen zusaetlichen Text auf -Tod bringen soll.
+
+   SetProp(P_NAME, "Eine Horde Gummibaeren");
+   SetProp(P_KILL_NAME, "Viele kleine Gummibaeren");
+   SetProp(P_KILL_MSG, ({0, 0, 1}));
+
+
+SIEHE AUCH
+==========
+
+   Tod:               die(L)
+   Todesmeldungen:    P_KILL_NAME, P_DIE_MSG, P_MURDER_MSG
+                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
+   Sonstiges:         P_CORPSE, P_NOCORPSE, /room/death/death_room.c
+
 Last modified: Wed Aug 21 14:36:04 2002 by Bambi
