diff --git a/doc/lfun/NotifyPlayerDeath b/doc/lfun/NotifyPlayerDeath
index 96678ea..924a704 100644
--- a/doc/lfun/NotifyPlayerDeath
+++ b/doc/lfun/NotifyPlayerDeath
@@ -19,11 +19,13 @@
 =========
 
    victim
-     Getoeteter Spieler.
+      Getoeteter Spieler.
+
    killer
-     Objekt, welches den Spieler getoetet hat.
+      Objekt, welches den Spieler getoetet hat.
+
    lost_exp
-     Erfahrungspunkte, die der Spieler durch den Tod verloren hat.
+      Erfahrungspunkte, die der Spieler durch den Tod verloren hat.
 
 
 BESCHREIBUNG
@@ -31,27 +33,34 @@
 
    Diese Funktion wird aus dem Spielerobjekt heraus immer dann
    aufgerufen, wenn der Spieler stirbt und zwar:
-     1) im Gegner, der den Spieler getoetet hat,
-     2) im Environment des getoeteten Spielers,
-     3) in der Gilde des Spielers,
-     4) in allen Objekten in diesem Environment und
-     5) in allen Objekten (auch innerhalb Containern) im Spieler.
+
+      1. im Gegner, der den Spieler getoetet hat,
+
+      2. im Environment des getoeteten Spielers,
+
+      3. in der Gilde des Spielers,
+
+      4. in allen Objekten in diesem Environment und
+
+      5. in allen Objekten (auch innerhalb Containern) im Spieler.
+
    Der Gegner wird hierbei nur einmal informiert, also bei letzteren
-   Faellen herausgefiltert, falls noetig!
-   Hauptaufgabe dieser Funktion ist es somit, auf Tode von Spielern zu
-   reagieren oder selbige einfach nur mitzuloggen.
+   Faellen herausgefiltert, falls noetig! Hauptaufgabe dieser Funktion
+   ist es somit, auf Tode von Spielern zu reagieren oder selbige
+   einfach nur mitzuloggen.
 
-   Zu dem Zeitpunkt des Aufrufs dieser Funktion ist der Spieler noch _nicht_
-   Geist und noch _nicht_ im Todesraum - dies wird im Anschluss an den Aufruf
-   der NotifyPlayerDeath() durchgefuehrt.
+   Zu dem Zeitpunkt des Aufrufs dieser Funktion ist der Spieler noch
+   _nicht_ Geist und noch _nicht_ im Todesraum - dies wird im
+   Anschluss an den Aufruf der NotifyPlayerDeath() durchgefuehrt.
 
+   Wenn ein Spieler an Gift stirbt, gibt es kein Killerobjekt - in dem
+   Fall ist <killer> 0. (P_KILLER im Opfer ist in diesem Fall "gift".)
 
-
-   Aufgerufen wird die Funktion aus '/std/player/life.c' mittels catch() und
-   werden mit limited() auf max. 150k (Gegner, Environment, Gilde) bzw. 80k
-   (alle anderen Objekte) Ticks beschraenkt.
-   Fehler in dieser Funktion haben somit keine negativen Auswirkungen
-   auf das Sterben des Spielers.
+   Aufgerufen wird die Funktion aus '/std/player/life.c' mittels
+   catch() und werden mit limited() auf max. 150k (Gegner,
+   Environment, Gilde) bzw. 80k (alle anderen Objekte) Ticks
+   beschraenkt. Fehler in dieser Funktion haben somit keine negativen
+   Auswirkungen auf das Sterben des Spielers.
 
 
 RUeCKGABEWERT
@@ -68,21 +77,22 @@
    haeufigsten auftretenden Fall bezogen, dass nur das toetende Objekt
    den Tod protokollieren soll):
 
-     void NotifyPlayerDeath(object dead, object killer, int lost_exp)
-     {
-       if ( intp(lost_exp) && objectp(dead) && objectp(killer) &&
-            killer==this_object() )
-         write_file( "/log/patryn/dead", sprintf(
-           "%s - %s von %s getoetet. XP: -%d", ctime(), getuid(dead),
-            killer->name(WEM), lost_exp) );
-     }
+      void NotifyPlayerDeath(object dead, object killer, int lost_exp)
+      {
+        if ( intp(lost_exp) && objectp(dead) && objectp(killer) &&
+             killer==this_object() )
+          write_file( "/log/patryn/dead", sprintf(
+            "%s - %s von %s getoetet. XP: -%d", ctime(), getuid(dead),
+             killer->name(WEM), lost_exp) );
+      }
 
-   Bitte beachten: write_file() schreibt ohne Groessenbegrenzung in das
-   Logfile. Da dies auf Dauer bzw. in Gebieten mit hoher Log-Aktivitaet
-   zu Logfiles von enormer Groesse fuehren kann, ist die Verwendung
-   von write_file() nicht empfehlenswert. Ausnahmen koennen natuerlich
-   mit dem zustaendigen Regionsmagier abgesprochen werden, z.B. fuer
-   begrenzte Anwendung etwa bei sehr starken, selten besiegten Gegnern.
+   Bitte beachten: write_file() schreibt ohne Groessenbegrenzung in
+   das Logfile. Da dies auf Dauer bzw. in Gebieten mit hoher Log-
+   Aktivitaet zu Logfiles von enormer Groesse fuehren kann, ist die
+   Verwendung von write_file() nicht empfehlenswert. Ausnahmen koennen
+   natuerlich mit dem zustaendigen Regionsmagier abgesprochen werden,
+   z.B. fuer begrenzte Anwendung etwa bei sehr starken, selten
+   besiegten Gegnern.
 
    Weiterhin ist es empfehlenswert, das toetende Objekt (killer) nicht
    im NotifyPlayerDeath() zu zestoeren, sondern etwas zeitversetzt,
@@ -93,7 +103,7 @@
 SIEHE AUCH
 ==========
 
-   Defend(), do_damage(), NotifyHpChange(), catch(), write_file(), log_file()
-   P_LAST_DEATH_PROPS
+   Defend(), do_damage(), *../efun/catch*, *../efun/write_file*,
+   log_file() P_LAST_DEATH_PROPS
 
-24.03.2012, Zesstra
+04.04.2020, Zesstra
