diff --git a/doc/sphinx/props/P_RACE.rst b/doc/sphinx/props/P_RACE.rst
index ba0bde3..b2c9caf 100644
--- a/doc/sphinx/props/P_RACE.rst
+++ b/doc/sphinx/props/P_RACE.rst
@@ -3,19 +3,16 @@
 
 NAME
 ----
-::
 
 	P_RACE				"race"
 
 DEFINIERT IN
 ------------
-::
 
 	/sys/living/description.h
 
 BESCHREIBUNG
 ------------
-::
 
 	Die Rasse eines Lebewesens kann ueber diese Property ermittelt bzw.
 	gesetzt werden. Es empfiehlt sich hierbei, Rassen nur in Form von
@@ -29,7 +26,8 @@
 
 BEISPIEL
 --------
-::
+
+.. code-block:: pike
 
 	void create()
 	{ ::create();
@@ -40,10 +38,9 @@
 
 SIEHE AUCH
 ----------
-::
 
+  :doc:`P_REAL_RACE`
 	/std/npc.c, /std/pub.c
 
 
-Last modified: Mon Sep 15 21:15:49 2003 by Vanion
-
+Last modified: 15.10.2018 Zesstra
diff --git a/doc/sphinx/props/P_REAL_RACE.rst b/doc/sphinx/props/P_REAL_RACE.rst
index b8d5936..fd0053b 100644
--- a/doc/sphinx/props/P_REAL_RACE.rst
+++ b/doc/sphinx/props/P_REAL_RACE.rst
@@ -3,24 +3,19 @@
 
 NAME
 ----
-::
 
 	P_REAL_RACE				"real_race"
 
 DEFINIERT IN
 ------------
-::
 
 	/sys/living/description.h
 
 BESCHREIBUNG
 ------------
-::
-
-        Diese Property enthaelt die Rasse des Livings. Sie darf nicht durch 
-	Shadows ueberschrieben werden.
-
-	
+  
+  Diese Property enthaelt die Rasse des Livings. Sie darf nicht durch 
+	Shadows ueberschrieben werden.	
 
 	Wirklich interessant ist sie, wenn ein Spieler sich tarnt. Dort kann
 	man mit dieser Property trotz Tarnung feststellen, welche Rasse der
@@ -30,71 +25,62 @@
 	allerdings gesetzt wird, kann man damit einen getarnten NPC simu-
 	lieren, da dann P_RACE und P_REAL_RACE voneinander abweichen.
 
-	
 
 BEISPIEL
 --------
-::
 
-        Ein Zwerg mag Zwergenbrot, fuer Elfen ist es giftig. Selbst wenn der
-	Elf sich als Zwerg tarnt, wird ihm durch lembas sicher uebel werden:
+.. code-block:: pike
 
-        int futter(string arg)
-        {
-          notify_fail("Was willst Du essen?\n");
-          if(!arg || !id(arg)) return 0;
+  // Ein Zwerg mag Zwergenbrot, fuer Elfen ist es giftig. Selbst wenn der
+  // Elf sich als Zwerg tarnt, wird ihm durch lembas sicher uebel werden:
+  int futter(string arg) {
+    notify_fail("Was willst Du essen?\n");
+    if(!arg || !id(arg)) return 0;
 
-          notify_fail("Du kannst nichts mehr essen.\n");
-          if(!this_player()->eat_food(55)) return 0;
+    notify_fail("Du kannst nichts mehr essen.\n");
+    if(!this_player()->eat_food(55)) return 0;
 
-          write("Du isst ein Stueck Zwegenbrot. Du versuchst es zumindest!\n");
-          say(sprintf("%s beisst in ein Stueck Zwergenbrot. Zahnschmerz!!!\n",
-              this_player()->Name()));
+    write("Du isst ein Stueck Zwegenbrot. Du versuchst es zumindest!\n");
+    say(sprintf("%s beisst in ein Stueck Zwergenbrot. Zahnschmerz!!!\n",
+        this_player()->Name()));
 
+    switch( this_player()->QueryProp(P_REAL_RACE) )
+    {
+      case "Zwerg":
+        if ((this_player()->QueryProp(P_RACE))!="Zwerg")
+          write("Zur Tarnung spuckst Du etwas von dem Brot aus!\n"); 
+        this_player()->buffer_hp(100,10);
+        this_player()->buffer_sp(100,10);
+        break;
 
-          switch( this_player()->QueryProp(P_REAL_RACE) )
-          {
-          case "Zwerg":
-	    if ((this_player()->QueryProp(P_RACE))!="Zwerg")
-	      write("Zur Tarnung spuckst Du etwas von dem Brot aus!\n"); 
-            this_player()->buffer_hp(100,10);
-            this_player()->buffer_sp(100,10);
-            break;
+      case "Elf":
+        write("Das Zwergenbrot brennt wie Feuer auf Deiner Zunge!");
+        // Getarnt?
+        if ((this_player()->QueryProp(P_RACE))!="Elf")
+          write(" Deine Tarnung nutzt Dir da wenig.\n"
+        else
+          write("\n");
+        this_player()->restore_spell_points(-100);
+        this_player()->do_damage(100,this_object());
+        break;
 
-          case "Elf":
-	    write("Das Zwergenbrot brennt wie Feuer auf Deiner Zunge!");
-	    // Getarnt?
-	    if ((this_player()->QueryProp(P_RACE))!="Elf")
-	      write(" Deine Tarnung nutzt Dir da wenig.\n"
-            else write("\n");
-            this_player()->restore_spell_points(-100);
-            this_player()->do_damage(100,this_object());
-            break;
-
-          default:
-	    write("Du bekommst nur wenig davon herunter..\n");
-            this_player()->buffer_hp(10,1);
-            this_player()->buffer_sp(10,2);
-            break;
-          }
-
-  
-
-          remove();
-
-  
-
-          return 1;
-        }
+      default:
+        write("Du bekommst nur wenig davon herunter..\n");
+        this_player()->buffer_hp(10,1);
+        this_player()->buffer_sp(10,2);
+        break;
+    }
+    remove();
+    return 1;
+  }
 
 	
 
 SIEHE AUCH
 ----------
-::
-
-	/std/living/description.c, /sys/living/description.h, P_RACE
+  
+  :doc:`P_RACE`
+	/std/living/description.c, /sys/living/description.h,
 
 
-Last modified: Mon Sep 15 21:15:49 2003 by Vanion
-
+Last modified: 15.10.2018 Zesstra
