diff --git a/doc/props/P_TARGET_AREA b/doc/props/P_TARGET_AREA
index 9d2cec9..614320f 100644
--- a/doc/props/P_TARGET_AREA
+++ b/doc/props/P_TARGET_AREA
@@ -1,75 +1,95 @@
+
 P_TARGET_AREA
+*************
 
-NAME:
-    P_TARGET_AREA     "target_area"
 
-DEFINIERT IN:
-    <combat.h>
+NAME
+====
 
-BESCHREIBUNG:
-    Kann in einem Raum gesetzt werden, um einen anderen, von dort aus mit
-    Fernkampfwaffen beschiessbaren Raum als Objekt oder Objektnamen (zu
-    einem geladenen Objekt) festzulegen.
+   P_TARGET_AREA     "target_area"
 
-BEMERKUNGEN:
-    Ein Schuetze kann nur in den anderen Raum schiessen, wenn die P_RANGE
-    seiner Waffe mindest gleich der P_SHOOTING_AREA des Raums (nicht des
-    Zielraums) ist.
 
-    Idealerweise sollte in mit P_TARGET_AREA angegebenen Raeumen auch
-    P_NEVER_CLEAN gesetzt sein.
+DEFINIERT IN
+============
 
-BEISPIELE:
-    // #1 Ein Baum-Raum (/std/room)
-    void create() {
-      ::create();
-      SetProp(P_INT_SHORT, "Auf einem Baum");
-      SetProp(P_INT_LONG, break_string("Du hockst auf einem Baum und kannst "
-        "auf die Lichtung unter Dir sehen.\n");
+   <combat.h>
 
-      AddExit("unten", RAEUME("lichtung"));
 
-      SetProp(P_TARGET_AREA, RAEUME("lichtung"));  // Lichtung beschiessbar
-      SetProp(P_SHOOTING_AREA, 15);                // 15 Entfernung
-    }
+BESCHREIBUNG
+============
 
-    // #2 Ein Elefanten-Transporter (/std/transport)
-    // Er trampelt durch mehrere Raeume durch und der Schuetze kann vom
-    // Ruecken des Elefanten aus auf Gegner draussen schiessen.
-    void create() {
-      ::create();
-      SetProp(P_NAME, "Kampfelefant");
-      AddId(({"elefant", "kampfelefant")});
-      SetProp(P_GENDER, MALE);
-      SetProp(P_SHORT, "Ein Kampfelefant");
-      SetProp(P_INT_SHORT, "Auf einem Kampfelefanten");
-      // P_LONG, P_INT_LONG
+   Kann in einem Raum gesetzt werden, um einen anderen, von dort aus mit
+   Fernkampfwaffen beschiessbaren Raum als Objekt oder Objektnamen (zu
+   einem geladenen Objekt) festzulegen.
 
-      SetProp(P_ENTERCMDS, ({"kletter", "erkletter"}));
-      SetProp(P_LEAVECMDS, ({"verlass", "verlasse"}));
 
-      SetProp(P_ARRIVEMSG, ({"Der Elefant trampelt in einen Raum.\n",
-                             "Ein Kampfelefant trampelt herein.\n"}));
-      SetProp(P_DEPARTMSG, ({"Der Elefant trampelt weiter.\n",
-                             "Der Kampfelefant trampelt weiter.\n"}));
+BEMERKUNGEN
+===========
 
-      SetProp(P_SHOOTING_AREA, 8); // weiter als 8 sollte man schiessen
+   Ein Schuetze kann nur in den anderen Raum schiessen, wenn die P_RANGE
+   seiner Waffe mindest gleich der P_SHOOTING_AREA des Raums (nicht des
+   Zielraums) ist.
 
-      AddRoute(RAEUME("schlachtfeld"), 20+random(10), 6, "Schlachtfeld");
-      AddRoute(RAEUME("burgtor"), 20+random(10), 6, "Burgtor");
-      AddRoute(RAEUME("burghof"), 20+random(10), 6, "Burghof");
-      AddRoute(RAEUME("halle"), 20+random(10), 6, "Halle");
-      AddRoute(RAEUME("bresche"), 20+random(10), 6, "Bresche");
-      // ...
+   Idealerweise sollte in mit P_TARGET_AREA angegebenen Raeumen auch
+   P_NEVER_CLEAN gesetzt sein.
 
-      Start();
-    }
 
-SIEHE AUCH:
-    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
-    Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
-    Gebiet:    P_RANGE, P_SHOOTING_AREA
-    Raeume:    P_NEVER_CLEAN
-    Sonstiges: fernwaffen
+BEISPIELE
+=========
 
-29.Jul 2014 Gloinson
\ No newline at end of file
+   // #1 Ein Baum-Raum (/std/room)
+   void create() {
+     ::create();
+     SetProp(P_INT_SHORT, "Auf einem Baum");
+     SetProp(P_INT_LONG, break_string("Du hockst auf einem Baum und kannst "
+       "auf die Lichtung unter Dir sehen.\n");
+
+     AddExit("unten", RAEUME("lichtung"));
+
+     SetProp(P_TARGET_AREA, RAEUME("lichtung"));  // Lichtung beschiessbar
+     SetProp(P_SHOOTING_AREA, 15);                // 15 Entfernung
+   }
+
+   // #2 Ein Elefanten-Transporter (/std/transport)
+   // Er trampelt durch mehrere Raeume durch und der Schuetze kann vom
+   // Ruecken des Elefanten aus auf Gegner draussen schiessen.
+   void create() {
+     ::create();
+     SetProp(P_NAME, "Kampfelefant");
+     AddId(({"elefant", "kampfelefant")});
+     SetProp(P_GENDER, MALE);
+     SetProp(P_SHORT, "Ein Kampfelefant");
+     SetProp(P_INT_SHORT, "Auf einem Kampfelefanten");
+     // P_LONG, P_INT_LONG
+
+     SetProp(P_ENTERCMDS, ({"kletter", "erkletter"}));
+     SetProp(P_LEAVECMDS, ({"verlass", "verlasse"}));
+
+     SetProp(P_ARRIVEMSG, ({"Der Elefant trampelt in einen Raum.\n",
+                            "Ein Kampfelefant trampelt herein.\n"}));
+     SetProp(P_DEPARTMSG, ({"Der Elefant trampelt weiter.\n",
+                            "Der Kampfelefant trampelt weiter.\n"}));
+
+     SetProp(P_SHOOTING_AREA, 8); // weiter als 8 sollte man schiessen
+
+     AddRoute(RAEUME("schlachtfeld"), 20+random(10), 6, "Schlachtfeld");
+     AddRoute(RAEUME("burgtor"), 20+random(10), 6, "Burgtor");
+     AddRoute(RAEUME("burghof"), 20+random(10), 6, "Burghof");
+     AddRoute(RAEUME("halle"), 20+random(10), 6, "Halle");
+     AddRoute(RAEUME("bresche"), 20+random(10), 6, "Bresche");
+     // ...
+
+     Start();
+   }
+
+
+SIEHE AUCH
+==========
+
+   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
+   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
+   Gebiet:    P_RANGE, P_SHOOTING_AREA
+   Raeume:    P_NEVER_CLEAN
+   Sonstiges: fernwaffen
+
+29.Jul 2014 Gloinson
