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
diff --git a/doc/sphinx/lfun/NotifyPlayerDeath.rst b/doc/sphinx/lfun/NotifyPlayerDeath.rst
index 7fe7cfa..cf330af 100644
--- a/doc/sphinx/lfun/NotifyPlayerDeath.rst
+++ b/doc/sphinx/lfun/NotifyPlayerDeath.rst
@@ -3,19 +3,16 @@
 
 FUNKTION
 --------
-::
 
   void NotifyPlayerDeath(object victim,object killer,int lost_exp);
 
 DEFINIERT IN
 ------------
-::
 
   /std/player/life.c
 
 ARGUMENTE
 ---------
-::
 
   victim
     Getoeteter Spieler.
@@ -26,15 +23,16 @@
 
 BESCHREIBUNG
 ------------
-::
 
   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
@@ -44,8 +42,9 @@
   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.
@@ -54,19 +53,19 @@
 
 RUeCKGABEWERT
 -------------
-::
 
   keiner
 
 BEISPIELE
 ---------
-::
 
   Folgendes Beispiel demonstriert beispielsweise, wie man Tode von
   Spielern mitloggen kann (das Beispiel ist hierbei auf den am
   haeufigsten auftretenden Fall bezogen, dass nur das toetende Objekt
   den Tod protokollieren soll):
 
+  .. code-block:: pike
+
     void NotifyPlayerDeath(object dead, object killer, int lost_exp) 
     { 
       if ( intp(lost_exp) && objectp(dead) && objectp(killer) && 
@@ -90,10 +89,10 @@
 
 SIEHE AUCH
 ----------
-::
 
-  Defend(), do_damage(), NotifyHpChange(), catch(), write_file(), log_file()
-  P_LAST_DEATH_PROPS
+  :doc:`Defend`, :doc:`do_damage`,
+  :doc:`../efun/catch`, :doc:`../efun/write_file`, :doc:`../sefun/log_file`
+  :doc:`../props/P_LAST_DEATH_PROPS`
 
-24.03.2012, Zesstra
+04.04.2020, Zesstra
 
diff --git a/std/player/life.c b/std/player/life.c
index e62b015..51a04b0 100644
--- a/std/player/life.c
+++ b/std/player/life.c
@@ -414,6 +414,13 @@
     object* items = ({});
     if (objectp(killer))
         items = ({killer});
+    else
+    {
+      // (Fast) alle NotifyPlayerDeath() gehen davon aus, dass <killer> nur
+      // ein Objekt ist. Daher wird im Falle von Gifttoden - wenn <killer>
+      // ein string ist, immer 0 uebergehen.
+      killer = 0;
+    }
     if (environment() != killer)
         items += ({environment()});
     if (gi != killer && gi != environment())
