diff --git a/doc/sphinx/lfun/PreventFollow.rst b/doc/sphinx/lfun/PreventFollow.rst
index 1cca2ff..aff975d 100644
--- a/doc/sphinx/lfun/PreventFollow.rst
+++ b/doc/sphinx/lfun/PreventFollow.rst
@@ -3,19 +3,17 @@
 
 FUNKTION
 --------
-::
 
   int PreventFollow(object dest)
 
 ARGUMENTE
 ---------
-::
 
-  dest: Zielobjekt, in das der Verfolgte bewegt werden soll.
+  dest:
+    Zielobjekt, in das der Verfolgte bewegt werden soll.
 
 FUNKTION
 --------
-::
 
   In jedem Verfolger, der mit AddPursuer in die Liste der Verfolger 
   eingetragen wurde, wird vor dem Bewegen in das Zielobjekt die Funktion
@@ -23,50 +21,33 @@
 
 RUECKGABEWERT
 -------------
-::
 
-  0: Verfolger darf in das Zielobjekt folgen
-  1: Verfolger darf in dieses Zielobjekt nicht folgen
-     (Verfolgung bleibt weiterhin aktiv)
-  2: Verfolger darf in dieses Zielobjekt nicht folgen
-     (Verfolgung wird abgebrochen und Verfolger aus der Verfolgerliste
-      ausgetragen)
-
-BEMERKUNG
----------
-::
-
-  Durch PreventFollow kann der raeumliche Bereich, in dem verfolgt werden
-  darf, eingeschraenkt werden.
+  0:
+    Verfolger darf in das Zielobjekt folgen
+  1:
+    Verfolger darf in dieses Zielobjekt nicht folgen
+    (Verfolgung bleibt weiterhin aktiv)
+  2:
+    Verfolger darf in dieses Zielobjekt nicht folgen
+    (Verfolgung wird abgebrochen und Verfolger aus der Verfolgerliste
+    ausgetragen)
 
 BEISPIELE
 ---------
-::
 
-  Man moechte, dass ein NPC auf einer Insel nicht mit dem Spieler in das
-  Boot steigt, um mit dem Spieler zusammen von der Insel herunterzukommen.
+  Man moechte, dass nur dann verfolgt wird, wenn das Ziel im gleichen Gebiet
+  liegt, wie man selber (wenn __PATH__(1) das Gebietsverzeichnis ist):
 
-  #define PATH(x) ("/d/.../.../mein/pfad/+(x)")                           
+  .. code-block:: pike
 
-  ...                                          
-
-  int PreventFollow(object boot)                                           
-   {
-    if ( object_name(boot)[0..strlen(PATH("boot"))-1] == PATH("boot") )
-     return 1;
-   }                                                                         
-
-  Diese Funktions-Definition ist sehr flexibel, denn sie erlaubt sowohl
-  spaetere Pfadanpassung als auch mehrere Boote.
-  Da ueber die Funktion strlen() nur bis zum letzten Buchstaben des    
-  angegebenen Strings getestet wird, wird also gleichzeitig auch auf          
-  boot[1], boot[2] usw. getestet.
+  int PreventFollow(object ziel)
+  {
+    if (strstr(load_name(ziel), __PATH__(1)) != 0)
+      return 1;
+  }
 
 SIEHE AUCH
 ----------
-::
 
-  "AddPursuer", "RemovePursuer"
-
-Last modified: Tue Jun 10 13:59:30 2003 by Gabylon
+  - :doc:`AddPursuer`, :doc:`RemovePursuer`
 
