NotifyPlayerDeath() bei Gifttoden mit 0 aufrufen

(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 als <killer> uebergehen.

Change-Id: Id619ba4d82c5ff58c336d5c0aef541ff1d41a537
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