diff --git a/doc/props/P_REAL_RACE b/doc/props/P_REAL_RACE
index 39c196a..713ceb3 100644
--- a/doc/props/P_REAL_RACE
+++ b/doc/props/P_REAL_RACE
@@ -18,28 +18,27 @@
 BESCHREIBUNG
 ============
 
-   Diese Property enthaelt die Rasse des Livings. Sie darf nicht durch
-   Shadows ueberschrieben werden.
+   Diese Property enthaelt die Rasse des Livings und sollte wie P_RACE
+   aus traditionellen Gruenden gross geschrieben werden.
 
+   Diese Property 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 Spieler hat.
 
-   Wirklich interessant ist sie, wenn ein Spieler sich tarnt. Dort kann
-   man mit dieser Property trotz Tarnung feststellen, welche Rasse der
-   Spieler hat.
-
-   Bei NPC enthaelt sie den gleichen Wert wie P_RACE. Wenn P_REAL_RACE
-   allerdings gesetzt wird, kann man damit einen getarnten NPC simu-
-   lieren, da dann P_RACE und P_REAL_RACE voneinander abweichen.
+      Bei NPC enthaelt sie den gleichen Wert wie P_RACE. Wenn
+      P_REAL_RACE 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:
-
-   int futter(string arg)
-   {
+   // 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;
 
@@ -50,39 +49,33 @@
      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;
+       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;
+       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;
    }
 
@@ -90,6 +83,7 @@
 SIEHE AUCH
 ==========
 
-   /std/living/description.c, /sys/living/description.h, P_RACE
+   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
