diff --git a/doc/sphinx/lfun/AddInfo.rst b/doc/sphinx/lfun/AddInfo.rst
index 7154ce8..55f5a63 100644
--- a/doc/sphinx/lfun/AddInfo.rst
+++ b/doc/sphinx/lfun/AddInfo.rst
@@ -246,7 +246,7 @@
      Files:
        /std/npc/info.c
      Loggen:
-       :doc:`P_LOG_INFO`
+       :doc:`../props/P_LOG_INFO`
      Interna:
        :doc:`GetInfoArr` , :doc:`do_frage`
 
diff --git a/doc/sphinx/lfun/AddRoomMessage.rst b/doc/sphinx/lfun/AddRoomMessage.rst
index 53c7b4d..527ea54 100644
--- a/doc/sphinx/lfun/AddRoomMessage.rst
+++ b/doc/sphinx/lfun/AddRoomMessage.rst
@@ -4,7 +4,7 @@
 FUNKTION
 --------
 
-     void AddRoomMessage(string *msg, int time, mixed *func);
+     void AddRoomMessage(string* msg, int time, mixed* func);
 
 DEFINIERT IN
 ------------
@@ -65,7 +65,7 @@
 BEISPIELE
 ---------
 
-  .. code-block:: pike
+.. code-block:: pike
 
      // Beispiel 1:
      // Es soll alle halbe Minute eine Meldung ausgegeben werden. Falls es
@@ -96,7 +96,7 @@
      }
 
 
-  .. code-block:: pike
+.. code-block:: pike
 
      // Beispiel 2: Abschalten der Raumnachrichten
      public int action_laerm(string str);
@@ -128,7 +128,7 @@
          "Du schreist dir kurz die Seele aus dem Leib. Alle Tiere "
          "verstummen sofort.", MT_NOTIFICATION);
        send_room(this_object(),
-         this_player()->Name()+" schreit laut. Alle Tiere verstimmen "
+         this_player()->Name()+" schreit laut. Alle Tiere verstummen "
          "sofort.", MT_LISTEN, 0, 0, ({this_player()}));
        return 1;
      }
diff --git a/doc/sphinx/props/P_AERIAL_HELPERS.rst b/doc/sphinx/props/P_AERIAL_HELPERS.rst
index df12a3b..ace652b 100644
--- a/doc/sphinx/props/P_AERIAL_HELPERS.rst
+++ b/doc/sphinx/props/P_AERIAL_HELPERS.rst
@@ -3,31 +3,27 @@
 
 NAME
 ----
-::
 
      P_AERIAL_HELPERS "lib_p_aerial_helpers"
 
 DEFINIERT IN
 ------------
-::
 
      <living/helpers.h>
 
 BESCHREIBUNG
 ------------
-::
 
      Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
-     zu ermitteln, die fuer die Unterstuetzung beim Fliegen/Segeln bei diesem 
-     Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
-     Form zurueckgeliefert:
+     zu ermitteln, die sich fuer die Unterstuetzung beim Fliegen/Segeln bei 
+     diesem Lebewesen registriert haben. Die Daten werden als Mapping der 
+     folgenden Form zurueckgeliefert:
      ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
      Eine Erlaeuterung dazu findet sich in der Dokumentation zu 
-     RegisterHelperObject().
+     :doc:`../lfun/RegisterHelperObject`.
 
 BEMERKUNGEN
 -----------
-::
 
      Diese Property kann nur abgefragt werden.
      Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche 
@@ -35,14 +31,15 @@
 
 BEISPIEL
 --------
-::
 
      Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das 
      beim Fliegen hilft, sucht man alle Objekte aus dem Mapping heraus, die
      einen Wert >0 eingetragen haben und prueft deren Anzahl:
 
+.. code-block:: pike
+
      mapping aerial = this_player()->QueryProp(P_AERIAL_HELPERS);
-     object* helpers = filter( aerial, function int (object h) {
+     object* helpers = filter( m_indices(aerial), function int (object h) {
                          return (aerial[h]>0); });
      if ( sizeof(helpers) ) {
        tell_object(this_player(), "Du erhebst Dich mit Hilfe "+
@@ -54,11 +51,8 @@
 
 SIEHE AUCH
 ----------
-::
 
-     Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
-     Properties:  P_HELPER_OBJECTS, P_AQUATIC_HELPERS
+     Methoden:    :doc:`../lfun/RegisterHelperObject`, :doc:`../lfun/UnregisterHelperObject`
+     Properties:  :doc:`P_HELPER_OBJECTS`, :doc:`P_AQUATIC_HELPERS`
 
-
-12.03.2016, Arathorn
-
+04.02.2018, Arathorn
diff --git a/doc/sphinx/props/P_AQUATIC_HELPERS.rst b/doc/sphinx/props/P_AQUATIC_HELPERS.rst
index 6055df9..d041397 100644
--- a/doc/sphinx/props/P_AQUATIC_HELPERS.rst
+++ b/doc/sphinx/props/P_AQUATIC_HELPERS.rst
@@ -3,19 +3,16 @@
 
 NAME
 ----
-::
 
      P_AQUATIC_HELPERS "lib_p_aquatic_helpers"
 
 DEFINIERT IN
 ------------
-::
 
      <living/helpers.h>
 
 BESCHREIBUNG
 ------------
-::
 
      Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
      zu ermitteln, die fuer die Unterstuetzung beim Tauchen bei diesem 
@@ -23,11 +20,10 @@
      Form zurueckgeliefert:
      ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
      Eine Erlaeuterung dazu findet sich in der Dokumentation zu 
-     RegisterHelperObject().
+     :doc:`../lfun/RegisterHelperObject`.
 
 BEMERKUNGEN
 -----------
-::
 
      Diese Property kann nur abgefragt werden.
      Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche 
@@ -35,14 +31,15 @@
 
 BEISPIEL
 --------
-::
 
      Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das 
      beim Tauchen hilft, sucht man alle Objekte aus dem Mapping heraus, die
      einen Wert >0 eingetragen haben und prueft deren Anzahl:
 
+.. code-block:: pike
+
      mapping aquatic = this_player()->QueryProp(P_AQUATIC_HELPERS);
-     object* helpers = filter( aquatic, function int (object h) {
+     object* helpers = filter( m_indices(aquatic), function int (object h) {
                          return (aquatic[h]>0); });
      if ( sizeof(helpers) ) {
        tell_object(this_player(), "Du stuerzt Dich in die Fluten und "
@@ -55,11 +52,8 @@
 
 SIEHE AUCH
 ----------
-::
 
-     Methoden:    RegisterHelperObject(L), UnregisterHelperObject(L)
-     Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS
+     Methoden:    :doc:`../lfun/RegisterHelperObject`, :doc:`../lfun/UnregisterHelperObject`
+     Properties:  :doc:`P_HELPER_OBJECTS`, :doc:`P_AERIAL_HELPERS`
 
-
-06.04.2016, Arathorn
-
+04.02.2018, Arathorn
diff --git a/doc/sphinx/props/P_HARBOUR.rst b/doc/sphinx/props/P_HARBOUR.rst
index a8a7515..60d01d1 100644
--- a/doc/sphinx/props/P_HARBOUR.rst
+++ b/doc/sphinx/props/P_HARBOUR.rst
@@ -3,25 +3,21 @@
 
 NAME
 ----
-::
 
     P_HARBOUR                                  "harbour_name"                   
 
 DEFINIERT IN
 ------------
-::
 
     /sys/transport.h
 
 BESCHREIBUNG
 ------------
-::
 
     Array mit eindeutiger Bezeichnung des 'Hafens'
 
 BEMERKUNGEN
 -----------
-::
 
     Diese Property wird in Raeumen gesetzt, die als Anleger fuer Transporter
     dienen sollen. Sie enthaelt ein Array aus zwei Elementen, einem String
@@ -30,8 +26,11 @@
     ({ "zur Sonneninsel", ({"sonneninsel"}) }) oder 
     ({ "nach Titiwu", ({"titiwu"}) })
 
-    Damit bekommt der Spieler bei einer Abfrage seiner Reiseroute mittels
-    "reise route" eine Ausgabe wie 
+    Hafen der Sonneninsel: ({ "zur Sonneninsel", ({"sonneninsel"}) }) oder
+    Hafen von Titiwu:      ({ "nach Titiwu", ({"titiwu"}) })
+
+    Damit bekommt der Spieler bei einer Abfrage seiner Reiseroute mittels 
+    "reise route", sofern er schon eine gesetzt hat, eine Ausgabe wie
       'Du reist mit dem Floss nach Titiwu' oder
       'Du reist mit dem Wal zur Sonneninsel'.
 
@@ -54,7 +53,6 @@
 
 HINWEISE
 --------
-::
 
     Wird der zweite Parameter in dieser Property, d.h. die Liste der 
     Anleger-IDs, nicht korrekt gesetzt, kann das dazu fuehren, dass Spieler
@@ -67,7 +65,6 @@
 
 HISTORIE
 --------
-::
 
     Frueher war der zweite Eintrag in dieser Property ein einzelner String.
     Es existiert eine SetMethode auf dieser Property, die solche Daten in
@@ -76,21 +73,17 @@
     den Daten im File uebereinstimmen. Dies moege aber bitte niemand 
     zum Anlass nehmen, in neuem Code veraltete Daten in die Property zu 
     schreiben!
-
     
 
 SIEHE AUCH
 ----------
-::
 
-  Properties:     P_NO_TRAVELING, P_TRAVEL_INFO
-  Funktionen:     AddRoute(L)
+  Properties:     :doc:`P_NO_TRAVELING`, :doc:`P_TRAVEL_INFO`
+  Funktionen:     :doc:`../lfun/AddRoute`
   Spielerbefehle: reise
   weitere Doku:   /d/inseln/schiffe/HowTo
 
 LETZTE AENDERUNG
 ----------------
-::
 
-2015-Jan-18, Arathorn
-
+04.02.2018, Arathorn
