Gesammelte Doku-Updates

Groesstenteils Formatierung, Whitespace und kleinere
Aenderungen.

Change-Id: I2a7363cb10ff5b4c5252e1e7bef62d2bff6d9ff0
diff --git a/doc/WIZRULES b/doc/WIZRULES
new file mode 100644
index 0000000..652d2c1
--- /dev/null
+++ b/doc/WIZRULES
@@ -0,0 +1,158 @@
+
+Magiervertrag
+*************
+
+Herzlich willkommen im Kreis der Magier!
+
+Ab jetzt kannst Du hinter die Kulisse des MorgenGrauens schauen. Diese
+Faehigkeit birgt Verantwortung.
+
+Deshalb gelten ab jetzt zusaetzlich zu den bisherigen Regeln folgende
+Magierregeln fuer Dich:
+
+
+Hilfe durch Magier
+==================
+
+Man darf Spielern keine Hilfen geben, es sei denn, es liegt ein
+*offensichtlicher* Fehler vor. Dabei zaehlt auch ein Zweitspieler, mit
+dem ein Magier spielt, zu den Spielern! Haelt der Sheriff einen Extra-
+Charakter eines Magiers nicht fuer einen echten Zweitie, kann er ihn
+jederzeit zum Testspieler erklaeren.
+
+Beispiele fuer nicht erlaubte Hilfen:
+
+   * Stats von Monstern mitteilen.
+
+   * Objekte clonen, und Spielern geben.
+
+   * Objekte schreiben, die den Spielern zu sehr helfen, oder
+     umgekehrt die Spieler schaedigen.
+
+   * Spieler teleportieren.
+
+   * Explizite Kommandos angeben, die ein Spieler eingeben muss.
+
+   * Selber (oder mit Zweitcharakteren) mitspielen oder -kaempfen,
+     sobald Insiderwissen in Anwendung kommt. Hier ist der gesunde
+     Menschenverstand bei der Entscheidung gefragt, ab wann dies der
+     Fall ist.
+
+   * Raeume resetten, damit die Spieler Objekte bekommen.
+     (Insbesondere kann das Nebeneffekte haben, die man als normaler
+     Magier nicht ueberschauen kann, ausserdem koennen die Spieler
+     auch mal warten.)
+
+   * Weitergabe von Objektinformationen, die der Spieler nicht
+     einsehen kann.
+
+In den folgenden Faellen darf natuerlich geholfen werden:
+
+   * Spielern aus fehlerhaften Raeumen oder der 'void' heraushelfen.
+
+   * Man sieht, dass der Spieler weiss, was er zu tun hat, aber ihm
+     die abwegige(!) Formulierung nicht einfaellt. (Hier sollte man
+     aber zusaetzlich dem Magier, der das entsprechende Objekt
+     'verbrochen' hat, eine Mitteilung geben, auf dass er es
+     verbessert.)
+
+Selber spielen soll man nur dann, wenn man den Spielern dabei nicht
+hilft oder ihnen ein Abenteuer vor der Nase wegloest.
+
+
+Privatsphaere / Snoopen
+=======================
+
+*Generell muss die Privatsphaere von Spielern geachtet werden.*
+
+Snoopen von Spielern ist nur dann erlaubt, wenn es darum geht, Fehler
+im Mud zu finden oder Ideen zu sammeln, um seinen _eigenen_ Gebiete,
+bzw. Regionen fuer die man verantwortlich ist, zu verbessern und
+anzupassen. Es darf auf keinen Fall dafuer benutzt werden, Spieler
+ohne besonderen Grund zu beobachten, sich ueber sie lustig zu machen,
+oder sie auszuspionieren. Wenn Spieler Post schreiben oder lesen ist
+snoopen strengstens untersagt (Briefgeheimnis). Generell ist es
+angebracht Spieler darauf hinzuweisen, dass sie gesnoopt werden.
+
+Es ist ebenso unzulaessig, andere Moeglichkeiten auszunutzen, die dazu
+dienen Spieler zu beobachten, bzw. auszuspionieren (zB verfolgen).
+
+Insbesondere ist es STRIKT untersagt, Objekte zu schreiben, die in
+irgendeiner Weise (zB add_action(...,"",1)) 'teile mit', 'fluester'
+und aehnliche Kommunikationsbefehle abfangen, um Gespraeche von
+anderen abzuhoeren. Dies stellt einen schweren Eingriff in die
+Intimsphaere der anderen Teilnehmer dar und wird dementsprechend
+geahndet!
+
+Jegliche Art von Belaestigung von Spielern ist untersagt. Dazu gehoert
+das Verfluchen, Monster auf sie hetzen, oder ihnen auf irgendeine Art
+boeswillig Schaden zuzufuegen.
+
+
+Zu dem, was Du hier so programmierst:
+=====================================
+
+Alles was Du hier an Daten ablegst ist natuerlich Dein eigenes,
+geistiges Eigentum. Trotzdem gehen wir davon aus, das alles, was hier
+im Mudverzeichnis landet, auch fuer das MorgenGrauen entwickelt worden
+ist, also alles was Du schreibst, auch vom Mud genutzt werden darf.
+Dies fuehrt zu folgender Regelung:
+
+Fuer das MorgenGrauen gilt uneingeschraenktes Nutzungsrecht fuer alle
+Monster, Objekte oder Raeume die Du hier programmierst. Dies gilt
+insbesondere fuer alle Sachen, die bereits an die Regionen des MGs
+angeschlossen sind. Das bedeutet fuer Dich, dass unter Umstaenden von
+Dir geschriebene Objekte auch gegen Deinen Willen angeschlossen
+bleiben, und vielleicht sogar ggf. aus einem Backup wieder eingespielt
+werden. Mit dieser Regel soll verhindert werden, das unglueckselige
+Magier aus- steigen und beim Verlassen des MG riesige Loecher in der
+Landschaft und im allgemeinen Gleichgewicht hinterlassen.
+
+
+Beendigung Deiner Magierzeit
+============================
+
+Sollte Deine Magierzeit beendet sein, verpflichtest Du Dich, ueber
+etwaige waehrend Deiner Magierzeit gewonnene, nicht-oeffentliche
+Interna - insb. nicht-oeffentlichen Code - auch weiterhin
+Stillschweigen zu bewahren. Dies gilt unabhaengig von dem Grund oder
+der Art und Weise, Deine Magierzeit zu beenden (z.B. Loeschung).
+
+Wenn Du diesen Vertrag unterschreibst, erkennst Du die Regeln an. Die
+Regeln in /etc/WIZRULES sind immer verbindlich, unabhaengig davon, wie
+sie zum Zeitpunkt deines Magierwerdens aussahen.
+
+Nun genug der strengen Regeln ;).
+
+
+Nun zu dem, was Du jeden Moment wirst; und zu dem, was danach kommt:
+====================================================================
+
+1.) Wenn Du diesen Vertrag unterschrieben hast, und Dein Sponsor (das
+ist
+   der, der Dir den Vertrag gegeben hat) Merlin gebeten hat, Dich zum
+   Magier zu machen, bekommst Du die magischen Faehigkeiten der
+   Magier. Du wirst Dich unsichtbar machen koennen, andere Wesen
+   teleportieren koennen (siehe jedoch Regeln), Objekte clonen und so
+   weiter und so weiter. Dein Sponsor hat die Aufgabe, Dir den Umgang
+   mit den neuen Faehigkeiten beizubringen (Du darfst ihn darauf
+   festnageln ;-)).
+
+2.) Du kannst jedoch selbst noch keinerlei Programme schreiben. Wenn
+Du
+   auch selber programmieren willst, musst Du zuerst ein
+   Gesellenstueck abliefern. Wie das geht, findest du bei der Hilfe
+   zum Gesellenstueck beschrieben("hilfe gesellenstueck").
+
+So und nun zu den Dingen, die fuer Dich da sind:
+
+   Mit dem Befehl "mhilfe" kannst Du eine Uebersicht ueber die Befehle
+   bekommen, die ein Magier zusaetzlich zu denen der Spieler hat. In
+   dem Verzeichniss /doc findest Du verschiedene Files, die Dir das
+   Verstaendnis erleichtern sollen. Eine Uebersicht kannst Du mit dem
+   Befehl. "more /doc/README" bekommen.
+
+   Der gute alte Merlin ist nicht nur der Urvater aller Magier,
+   sondern beherbergt darueber hinaus auch einen (ab und zu) gut
+   besuchten WizClub. Wer sich mit "goto" noch nicht so gut auskennt,
+   kann ihn in der Abenteurergilde mit dem Kommando "treff" betreten.
diff --git a/doc/balance/artillerie b/doc/balance/artillerie
index 914278d..d18a55c 100644
--- a/doc/balance/artillerie
+++ b/doc/balance/artillerie
@@ -24,29 +24,11 @@
  a. Artillerie _muss_ P_ATTACK_BUSY beachten (setzen/abfragen).
  b. Artillerie _muss_ bei Verwendung Konzentrationspunkte 
     verbrauchen.
- c. Artillerie darf nicht (bzw. nur begrenzt) gehortet werden
-    koennen.
- d. Artillerie darf bei Paralyse nicht angewendet werden koennen
+ c. Artillerie darf bei Paralyse nicht angewendet werden koennen
     (P_DISABLE_ATTACK).
- e. Artillerie muss durch Setzen der Property P_IS_ARTILLERY 
+ d. Artillerie muss durch Setzen der Property P_IS_ARTILLERY 
     gekennzeichnet sein. 
- f. Artillerie, die Munition benutzt oder selbst Munition ist (wie z.B.
-    Wurfsterne), muss das Unitobjekt und den dortigen Mechanismus zum
-    Zerfall von Objekten nutzen. Dabei sind P_UNIT_DECAY_INTERVAL und
-    P_UNIT_DECAY_QUOTA so zu setzen, dass die Munition eine Halbwertszeit
-    zwischen 5 und 10  Tagen hat, der ihrer Verfuegbarkeit angemessen
-    ist. Dies laesst sich durch geeignetes Einstellen des
-    Prozentsatzes und/oder der Resetzeit erreichen.
-
-    Beispiele:
-    Setzt man p=1% Zerfall pro Reset an, dann muss der Reset
-    fuer eine Halbwertszeit von 5 Tagen dann 
-    t=ln(0.5)/ln(0,99)*5*24*3600 s dauern, das sind 6224 s.
-
-    Moechte man lieber den normalen Reset, der im Mittel 45 min, d.h. 160
-    Resets in 5 Tagen betraegt, so erhaelt man folgenden Prozentsatz:
-    p = 1-0,5^(1/160) d.h. ca. 0,43%.
- g. Artillerie ist immer genehmigungspflichtig.
+ e. Artillerie ist immer genehmigungspflichtig.
 
 Details werden fallweise entschieden.
 
@@ -58,6 +40,7 @@
 Revision am 5. April 2008
 Revision am 7. April 2011
 Revision am 24. August 2011
+Revision am 8. August 2018
 
 --------------------------------------------------------------------------
-Letzte Aenderung: Mi, 24.8. 2011 von Humni
+Letzte Aenderung: Mi, 8.8. 2018 von Humni
diff --git a/doc/index b/doc/index
index 6f84b1c..778f6b5 100644
--- a/doc/index
+++ b/doc/index
@@ -14,8 +14,8 @@
 Indices and tables
 ******************
 
-* *Stichwortverzeichnis*
+* Stichwortverzeichnis
 
-* *Modulindex*
+* Modulindex
 
-* *Suche*
+* Suche
diff --git a/doc/lfun/AddExtraLook b/doc/lfun/AddExtraLook
index 279b496..3e6edc2 100644
--- a/doc/lfun/AddExtraLook
+++ b/doc/lfun/AddExtraLook
@@ -172,12 +172,12 @@
 ==========
 
    Verwandt:
-      *RemoveExtraLook()*, *P_INTERNAL_EXTRA_LOOK*
+      RemoveExtraLook(), P_INTERNAL_EXTRA_LOOK
 
    Sonstiges:
-      *replace_personal()*, *break_string()*
+      replace_personal(), break_string()
 
    Fuer Spielerobjekte:
-      *P_EXTRA_LOOK*
+      P_EXTRA_LOOK
 
 5. Juni 2017 Gloinson
diff --git a/doc/lfun/AddInfo b/doc/lfun/AddInfo
index e2774d5..193e407 100644
--- a/doc/lfun/AddInfo
+++ b/doc/lfun/AddInfo
@@ -241,18 +241,18 @@
 ==========
 
    Verwandt:
-      *AddSpecialInfo()*, *RemoveInfo()*
+      AddSpecialInfo(), RemoveInfo()
 
    Props:
-      *P_PRE_INFO*
+      P_PRE_INFO
 
    Files:
       /std/npc/info.c
 
    Loggen:
-      *P_LOG_INFO*
+      P_LOG_INFO
 
    Interna:
-      *GetInfoArr()* , *do_frage()*
+      GetInfoArr() , do_frage()
 
 7. Mar 2017 Gloinson
diff --git a/doc/lfun/AddRoomMessage b/doc/lfun/AddRoomMessage
index 7d33a52..82c2c99 100644
--- a/doc/lfun/AddRoomMessage
+++ b/doc/lfun/AddRoomMessage
@@ -152,9 +152,9 @@
 ==========
 
    Verwandt:
-      tell_room(), *send_room()*, *ReceiveMsg()*
+      tell_room(), send_room(), ReceiveMsg()
 
    Props:
-      *P_MSG_PROB*, *P_FUNC_MSG*, *P_ROOM_MSG*
+      P_MSG_PROB, P_FUNC_MSG, P_ROOM_MSG
 
 28. Mar 2016 Gloinson
diff --git a/doc/lfun/AddSpell b/doc/lfun/AddSpell
index b8175e5..c0e6da7 100644
--- a/doc/lfun/AddSpell
+++ b/doc/lfun/AddSpell
@@ -192,10 +192,9 @@
 SIEHE AUCH
 ==========
 
-   Sonstiges: *SpellAttack()*, *SpellDefend()*, *Defend()*,
-   *QueryDefend()*, *SelectEnemy()*, *ReceiveMsg()*,
-   *replace_personal()*
+   Sonstiges: SpellAttack(), SpellDefend(), Defend(), QueryDefend(),
+   SelectEnemy(), ReceiveMsg(), replace_personal()
 
-   Properties: *P_DISABLE_ATTACK*, *P_SPELLRATE*, *P_AGGRESSIVE*
+   Properties: P_DISABLE_ATTACK, P_SPELLRATE, P_AGGRESSIVE
 
 Letzte Aenderung: 15.02.2018, Bugfix
diff --git a/doc/lfun/Defend b/doc/lfun/Defend
index dd66fa1..1de1f78 100644
--- a/doc/lfun/Defend
+++ b/doc/lfun/Defend
@@ -178,20 +178,20 @@
 SIEHE AUCH
 ==========
 
-   Angriff: *Attack()*, *P_NO_ATTACK*, *InsertEnemy()*
+   Angriff: Attack(), P_NO_ATTACK, InsertEnemy()
 
-   Schaden:   *P_ENABLE_IN_ATTACK_OUT*, *P_LAST_MOVE*, *do_damage()*,
-   *reduce_hit_points()*
+   Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE, do_damage(),
+   reduce_hit_points()
 
-   Schutz:    *P_DEFENDERS*, *InformDefend()*, *DefendOther()*,
-   *P_ARMOURS*, *P_AC*, *P_DEFEND_FUNC*, *QueryDefend()*, *P_BODY*
+   Schutz:    P_DEFENDERS, InformDefend(), DefendOther(), P_ARMOURS,
+   P_AC, P_DEFEND_FUNC, QueryDefend(), P_BODY
 
-   Daten:     *P_LAST_COMBAT_TIME*, *P_LAST_DAMTYPES*,
-   *P_LAST_DAMTIME*, *P_LAST_DAMAGE*, *P_DAMAGE_MSG*
+   Daten:     P_LAST_COMBAT_TIME, P_LAST_DAMTYPES, P_LAST_DAMTIME,
+   P_LAST_DAMAGE, P_DAMAGE_MSG
 
-   Resistenz: *P_RESISTANCE_STRENGTHS*, *CheckResistance()*
+   Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance()
 
-   Sonstiges: *CheckSensitiveAttack()*, *InternalModifyDefend()*,
-   *UseSkill()*, *DefendInfo()*
+   Sonstiges: CheckSensitiveAttack(), InternalModifyDefend(),
+   UseSkill(), DefendInfo()
 
 Letzte Aenderung: 29.12.2017, Bugfix
diff --git a/doc/lfun/DefendFunc b/doc/lfun/DefendFunc
index a544cc2..5338a9f 100644
--- a/doc/lfun/DefendFunc
+++ b/doc/lfun/DefendFunc
@@ -103,4 +103,4 @@
 SIEHE AUCH
 ==========
 
-   *P_DEFEND_FUNC*, "QueryDefendd" /std/armour/combat.c
+   P_DEFEND_FUNC, *QueryDefendd* /std/armour/combat.c
diff --git a/doc/lfun/GetHelperObject b/doc/lfun/GetHelperObject
index e879129..87b1b8a 100644
--- a/doc/lfun/GetHelperObject
+++ b/doc/lfun/GetHelperObject
@@ -39,9 +39,8 @@
    welches die Anforderungen erfuellt.
 
    Ist <strength> ein int, muss die Staerke/Guete des Helfers
-   (Rueckgabewert der Callback-Methode, siehe
-   *RegisterHelperObject()*) mindestens so gross sein wie der als
-   <strength> uebergebene Wert.
+   (Rueckgabewert der Callback-Methode, siehe RegisterHelperObject())
+   mindestens so gross sein wie der als <strength> uebergebene Wert.
 
    Ist <strength> eine Closure, wird diese fuer jeden Helfer
    ausgewertet und entscheidet, ob der Helfer akzeptiert wird. Die
@@ -87,7 +86,7 @@
 SIEHE AUCH
 ==========
 
-   *RegisterHelperObject()*, *UnregisterHelperObject()*,
-   *P_AERIAL_HELPERS*, *P_AQUATIC_HELPERS*, *P_HELPER_OBJECTS*
+   RegisterHelperObject(), UnregisterHelperObject(), P_AERIAL_HELPERS,
+   P_AQUATIC_HELPERS, P_HELPER_OBJECTS
 
 Letzte Aenderung: 9.3.2018, Zesstra
diff --git a/doc/lfun/GetShopItems b/doc/lfun/GetShopItems
index 9c7f28d..1b8cfa5 100644
--- a/doc/lfun/GetShopItems
+++ b/doc/lfun/GetShopItems
@@ -37,4 +37,4 @@
 SIEHE AUCH
 ==========
 
-   *PrintList()*
+   PrintList()
diff --git a/doc/lfun/GuildName b/doc/lfun/GuildName
index 4a4dbdf..080fcf9 100644
--- a/doc/lfun/GuildName
+++ b/doc/lfun/GuildName
@@ -31,7 +31,7 @@
 ==========
 
    Verwandt:
-      *GuildName()*
+      GuildName()
 
    Props:
-      *P_GUILD*
+      P_GUILD
diff --git a/doc/lfun/InternalModifyDefend b/doc/lfun/InternalModifyDefend
index 3762c07..efe50ab 100644
--- a/doc/lfun/InternalModifyDefend
+++ b/doc/lfun/InternalModifyDefend
@@ -50,4 +50,4 @@
 SIEHE AUCH
 ==========
 
-   *InternalModifyAttack()* *Defend()*
+   InternalModifyAttack() Defend()
diff --git a/doc/lfun/IsGuildMember b/doc/lfun/IsGuildMember
index bc29366..20074d9 100644
--- a/doc/lfun/IsGuildMember
+++ b/doc/lfun/IsGuildMember
@@ -61,7 +61,7 @@
 ==========
 
    Verwandt:
-      *GuildName()*
+      GuildName()
 
    Props:
-      *P_GUILD*
+      P_GUILD
diff --git a/doc/lfun/PresentRows b/doc/lfun/PresentRows
index 37e3ab8..e69de29 100644
--- a/doc/lfun/PresentRows
+++ b/doc/lfun/PresentRows
@@ -1,120 +0,0 @@
-
-PresentRows()
-*************
-
-
-FUNKTION
-========
-
-   mixed *PresentRows(object env);
-
-
-DEFINIERT IN
-============
-
-   TEAM_OBJECT (s. <living/team.h>)
-
-
-ARGUMENTE
-=========
-
-   object env
-       Das Environment des gewuenschten Objektes.
-
-
-BESCHREIBUNG
-============
-
-   Mit dieser Funktion bekommt man die aktuellen Teamreihen, die im Argument
-   env anwesend sind, des Teams zurueckgegeben. Ist env kein Objekt, so
-   wird environment(this_player()) als solches angenommen.
-
-
-RUECKGABEWERT
-=============
-
-   Es wird ein mixed-Array zurueckgegeben, dabei sind die einzelnen Reihen
-   selbst wiederum Arrays mit den Spielerobjekten.
-
-
-BEISPIEL
-========
-
-   Ein NPC im Kampf laesst eine Feuerwalze auf ein Team los, welche aber nur
-   Spieler in der ersten und zweiten Teamreihe Schaden zufuegen soll.
-
-   void Attack( object enemy )
-   {
-    ...
-
-    object team = enemy->QueryProp(P_TEAM);
-
-    if ( objectp(team) )
-     {
-      mixed teamrows = team->PresentRows(enemy);
-
-//  Inhalt von "teamrows" zu diesem Zeitpunkt:
-
-//  ({ ({[/dwarf:hauweg]}),({}),({[/elf:spitzohr]}),({}),({}),({}) })
-
-//  In der Umgebung von Zwerg Hauweg steht also noch Elf Spitzohr, und
-zwar //  in der dritten Teamreihe (der hat Glueck gehabt). //  Wenn
-dem Team noch mehr Spieler angehoeren, befinden sie sich gerade //
-nicht in der Umgebung (sprich im selben Raum) wie Hauweg.
-
-            foreach ( i : 2 )
-               {
-                  foreach ( object pl : teamrows[i] )
-                     {
-                        tell_object(pl,"Der Feuerteufel laesst eine
-                        Feuerwalze auf Dich "
-                           "und Dein Team los.n");
-
-                        pl->Defend(200+random(200),({DT_FIRE}),([SP_S
-                        HOW_DAMAGE:1]),TO);
-
-                     }
-
-               }
-
-         }
-
-      else
-         {
-            tell_object(enemy,"Der Feuerteufel laesst eine Feuerwalze
-            auf Dich "
-               "los.n");
-
-            enemy->Defend(200+random(200),({DT_FIRE}),([SP_SHOW_DAMAG
-            E:1]),TO);
-
-         }
-
-      ...
-
-   }
-
-
-BEMERKUNG
-=========
-
-   Man beachte, dass das erste Argument (also Argument 0) die erste
-   Teamreihe ist.
-
-
-SIEHE AUCH
-==========
-
-   Uebersicht: teamkampf
-   Properties: P_TEAM, P_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-   Bewegung:   IsTeamMove, TeamFlee
-   Mitglieder: IsTeamLeader, TeamMembers
-   Kampf:      AssocMember, DeAssocMember, InsertEnemyTeam,
-               SelectNearEnemy, SelectFarEnemy
-   Positionen: PresentPosition, PresentEnemyRows, PresentTeamPosition,
-               SwapRows
-   Sonstiges:  TeamPrefix, teamkampf_intern
-
-Last modified: 16-08-2010, Gabylon
diff --git a/doc/lfun/PreventFollow b/doc/lfun/PreventFollow
index fcfc2a6..f8b0343 100644
--- a/doc/lfun/PreventFollow
+++ b/doc/lfun/PreventFollow
@@ -58,4 +58,4 @@
 SIEHE AUCH
 ==========
 
-   * *AddPursuer()*, *RemovePursuer()*
+   * AddPursuer(), RemovePursuer()
diff --git a/doc/lfun/PrintList b/doc/lfun/PrintList
index 18be079..d4caffc 100644
--- a/doc/lfun/PrintList
+++ b/doc/lfun/PrintList
@@ -54,4 +54,4 @@
 SIEHE AUCH
 ==========
 
-   *GetShopItems()*
+   GetShopItems()
diff --git a/doc/lfun/RemoveExtraLook b/doc/lfun/RemoveExtraLook
index 1bcde43..4323bef 100644
--- a/doc/lfun/RemoveExtraLook
+++ b/doc/lfun/RemoveExtraLook
@@ -81,12 +81,12 @@
 ==========
 
    Verwandt:
-      *AddExtraLook()*, *P_INTERNAL_EXTRA_LOOK*
+      AddExtraLook(), P_INTERNAL_EXTRA_LOOK
 
    Sonstiges:
-      *replace_personal()*, *break_string()*
+      replace_personal(), break_string()
 
    Fuer Spielerobjekte:
-      *P_EXTRA_LOOK*
+      P_EXTRA_LOOK
 
 15. Jun 2017 Gloinson
diff --git a/doc/lfun/SetAttackChats b/doc/lfun/SetAttackChats
index b5a26e9..ac3d108 100644
--- a/doc/lfun/SetAttackChats
+++ b/doc/lfun/SetAttackChats
@@ -114,12 +114,12 @@
 ==========
 
    Verwandt:
-      *SetChats()*, *AddSpell()*
+      SetChats(), AddSpell()
 
    Props:
-      *P_CHAT_CHANCE*
+      P_CHAT_CHANCE
 
    Sonstiges:
-      *send_room()*, *process_string()*
+      send_room(), process_string()
 
 3. April 2017 Gloinson
diff --git a/doc/lfun/SetChats b/doc/lfun/SetChats
index ee6d04b..e99314b 100644
--- a/doc/lfun/SetChats
+++ b/doc/lfun/SetChats
@@ -145,12 +145,12 @@
 ==========
 
    Verwandt:
-      *SetAttackChats()*
+      SetAttackChats()
 
    Props:
-      *P_CHAT_CHANCE*
+      P_CHAT_CHANCE
 
    Sonstiges:
-      *send_room()*, *process_string()*
+      send_room(), process_string()
 
 3. April 2017 Gloinson
diff --git a/doc/lfun/create b/doc/lfun/create
index 03fc91a..066ee55 100644
--- a/doc/lfun/create
+++ b/doc/lfun/create
@@ -7,7 +7,6 @@
 ========
 
    protected void create();
-   void create();
 
 
 DEFINIERT IN
@@ -25,15 +24,15 @@
 BESCHREIBUNG
 ============
 
-   Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder geclont
-   wird.
-   In dieser Funktion wird das Objekt initialisiert und konfiguriert.
-   Waehrend des create() kann es einen this_player()/this_interactive()
-   geben, muss aber nicht!
-   Im create() hat das Objekt noch kein environment().
-   create() wird nur gerufen, wenn das Objekte geclont oder explizit geladen
-   wird. Wenn es aufgrund eines inherit in einem anderen Objekt vom Driver
-   geladen wird, wird das create() nicht ausgefuehrt (s. create_super()).
+   Diese Funktion wird aufgerufen, wenn ein Objekt geladen oder
+   geclont wird. In dieser Funktion wird das Objekt initialisiert und
+   konfiguriert. Waehrend des create() kann es einen
+   this_player()/this_interactive() geben, muss aber nicht! Im
+   create() hat das Objekt noch kein environment(). create() wird nur
+   gerufen, wenn das Objekte geclont oder explizit geladen wird. Wenn
+   es aufgrund eines inherit in einem anderen Objekt vom Driver
+   geladen wird, wird das create() nicht ausgefuehrt (s.
+   create_super()).
 
 
 RUeCKGABEWERT
@@ -45,20 +44,24 @@
 BEMERKUNGEN
 ===========
 
-   Erbt man von anderen Objekten, so besteht die erste Aktion innerhalb
-   von create() normalerweise darin, in diesen Objekten create()
-   aufzurufen.
-   Die Funktion kann protected oder static sein (aber nicht private). Es
-   duerfte fuer die meisten Objekte sinnvoll sein, create() protected zu
-   deklarieren.
+   Erbt man von anderen Objekten, so besteht die erste Aktion
+   innerhalb von create() normalerweise darin, in diesen Objekten
+   create() aufzurufen.
 
-   Um Speicher zu sparen, kann man bei Blueprints von der Konfigurierung
-   absehen (siehe Beispiel). Dies sollte man allerdings nicht bei Objekten
-   machen, von denen keine Clones erzeugt werden sollen (zB. bei Raeumen).
+   In altem Code wird create() haeufig ohne Sichtbarkeitsmodifikator
+   verwendet, es sollte aber immer protected gewaehlt werden, es gibt
+   keinen guten Grund create() mehr als einmal zu rufen, im Gegenteil,
+   wird das geerbte create() mehrfach gerufen kann das zu schwer zu
+   findenden Bugs fuehren.
 
-   Man sollte bei Abbruch des create() in BP unbedingt set_next_reset(-1);
-   rufen, da sonst die (nicht konfigurierte) BP resetten kann und dann
-   buggt.
+   Um Speicher zu sparen, kann man bei Blueprints von der
+   Konfigurierung absehen (siehe Beispiel). Dies sollte man allerdings
+   nicht bei Objekten machen, von denen keine Clones erzeugt werden
+   sollen (zB. bei Raeumen).
+
+   Man sollte bei Abbruch des create() in BP unbedingt
+   set_next_reset(-1); rufen, da sonst die (nicht konfigurierte) BP
+   resetten kann und dann buggt.
 
 
 BEISPIELE
@@ -66,18 +69,19 @@
 
    Ein Gegenstand wuerde wie folgt konfiguriert:
 
-   inherit "std/thing";
+   inherit "/std/thing";
 
    #include <properties.h>
 
-   create()
+   protected void create()
    {
      // Wenn wir die Blueprint sind: NICHT konfigurieren!
-     // Bei normalen Raeumen oder Transportern sind diese beiden
+     // Bei normalen Raeumen oder Transportern sind diese
      // Zeilen wegzulassen!!!
-     if (!clonep(this_object())) {
-         set_next_reset(-1);    // wichtig, damit die BP nicht resettet.
-         return;
+     if (!clonep(this_object()))
+     {
+       set_next_reset(-1);    // wichtig, damit die BP nicht resettet.
+       return;
      }
 
      // Ansonsten die allgemeinen Eigenschaften von /std/thing
@@ -97,8 +101,6 @@
 SIEHE AUCH
 ==========
 
-   create(L), reset(L)
-   hook(C), create(H), create_ob(H), create_super(H, reset(H)
-   create(A), reset(A)
+   create(), reset(), create_super() set_next_reset()
 
-22.10.2007, Zesstra
+Letzte Aenderung: 27.10.2018, Bugfix
diff --git a/doc/lfun/init b/doc/lfun/init
index 813c8f3..8a2688f 100644
--- a/doc/lfun/init
+++ b/doc/lfun/init
@@ -107,7 +107,7 @@
 SIEHE AUCH
 ==========
 
-   *exit()*, *AddCmd()*, *NotifyInsert()*
+   exit(), AddCmd(), NotifyInsert()
 
    add_action(E)
 
diff --git a/doc/lfun/list b/doc/lfun/list
index 41b989f..4148dc0 100644
--- a/doc/lfun/list
+++ b/doc/lfun/list
@@ -41,4 +41,4 @@
 SIEHE AUCH
 ==========
 
-   *PrintList()*, *AddCmd()*
+   PrintList(), AddCmd()
diff --git a/doc/lfun/obsolete/DoList b/doc/lfun/obsolete/DoList
index 17cc419..2119f05 100644
--- a/doc/lfun/obsolete/DoList
+++ b/doc/lfun/obsolete/DoList
@@ -36,4 +36,4 @@
 SIEHE AUCH
 ==========
 
-   *PrintList()*
+   PrintList()
diff --git a/doc/lfun/obsolete/GetList b/doc/lfun/obsolete/GetList
index 2e58523..e066273 100644
--- a/doc/lfun/obsolete/GetList
+++ b/doc/lfun/obsolete/GetList
@@ -36,4 +36,4 @@
 SIEHE AUCH
 ==========
 
-   *GetShopItems()*
+   GetShopItems()
diff --git a/doc/lfun/obsolete/extra_look b/doc/lfun/obsolete/extra_look
index 6d134a9..9d1ac15 100644
--- a/doc/lfun/obsolete/extra_look
+++ b/doc/lfun/obsolete/extra_look
@@ -27,4 +27,4 @@
 SIEHE AUCH
 ==========
 
-   *AddExtraLook()*, *P_EXTRA_LOOK*
+   AddExtraLook(), P_EXTRA_LOOK
diff --git a/doc/lfun/remove b/doc/lfun/remove
index 78d8ada..ea982b1 100644
--- a/doc/lfun/remove
+++ b/doc/lfun/remove
@@ -60,6 +60,6 @@
 SIEHE AUCH
 ==========
 
-   "../efun/destruct", *U_REQ*, *P_AMOUNT*
+   *../efun/destruct*, U_REQ, P_AMOUNT
 
 Letzte Aenderung: 24.07.2018, Bugfix
diff --git a/doc/pcmd/passwort b/doc/pcmd/passwort
index 191b5b2..bc48b04 100644
--- a/doc/pcmd/passwort
+++ b/doc/pcmd/passwort
@@ -13,7 +13,7 @@
  BESCHREIBUNG:
     Aendert das Passwort. Zur Sicherheit muss zuerst das alte Passwort
     eingegeben werden. Daraufhin wird das neue Passwort zweimal erfragt. Das
-    Passwort wird nur dann geaendert, wenn die beiden Eingaben des neues
+    Passwort wird nur dann geaendert, wenn die beiden Eingaben des neuen
     Passwortes uebereinstimmen.
 
  LETZTE AeNDERUNG:
diff --git a/doc/props.index b/doc/props.index
index b63a77e..938833b 100644
--- a/doc/props.index
+++ b/doc/props.index
@@ -91,7 +91,7 @@
      * "mixed Set(<name>, <wert>, <interpretation>)" wird genutzt,
        um eines der folgenden zu setzen:
 
-          * den normalen Wert (aber fast immer besser: *SetProp()*
+          * den normalen Wert (aber fast immer besser: SetProp()
             verwenden!)
 
           * eine Query- oder Setmethode
@@ -101,7 +101,7 @@
      * "mixed Query(<name>, <interpretation>)" fragt fuer <name>
        einen <wert> ab
 
-       * den normalen Wert (aber fast immer besser: *QueryProp()*
+       * den normalen Wert (aber fast immer besser: QueryProp()
          verwenden!)
 
        * die Closure der Query- oder Setmethode
@@ -142,9 +142,9 @@
 SIEHE AUCH:
 ===========
 
-* *SetProp()*, *QueryProp()*, *Set()*, *Query()*,
+* SetProp(), QueryProp(), Set(), Query(),
 
-* *SetProperties()*, *QueryProperties()*
+* SetProperties(), QueryProperties()
 
 * objekte, effizienz, closures
 
diff --git a/doc/props/P_AERIAL_HELPERS b/doc/props/P_AERIAL_HELPERS
index 7fbe8d0..5d9b030 100644
--- a/doc/props/P_AERIAL_HELPERS
+++ b/doc/props/P_AERIAL_HELPERS
@@ -23,7 +23,7 @@
    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()*.
+   findet sich in der Dokumentation zu RegisterHelperObject().
 
 
 BEMERKUNGEN
@@ -57,7 +57,7 @@
 SIEHE AUCH
 ==========
 
-   Methoden:    *RegisterHelperObject()*, *UnregisterHelperObject()*
-   Properties:  *P_HELPER_OBJECTS*, *P_AQUATIC_HELPERS*
+   Methoden:    RegisterHelperObject(), UnregisterHelperObject()
+   Properties:  P_HELPER_OBJECTS, P_AQUATIC_HELPERS
 
 04.02.2018, Arathorn
diff --git a/doc/props/P_AQUATIC_HELPERS b/doc/props/P_AQUATIC_HELPERS
index ef80e67..b1bab50 100644
--- a/doc/props/P_AQUATIC_HELPERS
+++ b/doc/props/P_AQUATIC_HELPERS
@@ -23,7 +23,7 @@
    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()*.
+   der Dokumentation zu RegisterHelperObject().
 
 
 BEMERKUNGEN
@@ -58,7 +58,7 @@
 SIEHE AUCH
 ==========
 
-   Methoden:    *RegisterHelperObject()*, *UnregisterHelperObject()*
-   Properties:  *P_HELPER_OBJECTS*, *P_AERIAL_HELPERS*
+   Methoden:    RegisterHelperObject(), UnregisterHelperObject()
+   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS
 
 04.02.2018, Arathorn
diff --git a/doc/props/P_EXTRA_LOOK b/doc/props/P_EXTRA_LOOK
index 5ea639a..b0f8869 100644
--- a/doc/props/P_EXTRA_LOOK
+++ b/doc/props/P_EXTRA_LOOK
@@ -33,7 +33,7 @@
    verwendet werden, sollte man das Umbrechen der Mudlib ueberlassen.
 
    **Nur** dann benutzen, wenn ihr auch unabhaengig vom Extralook ein
-   Objekt im Spieler benoetigt, ansonsten **immer** *AddExtraLook()*
+   Objekt im Spieler benoetigt, ansonsten **immer** AddExtraLook()
    verwenden.
 
    Bemerkung: Der Extralook taucht an einem Lebewesen nur auf, wenn
@@ -55,10 +55,10 @@
 SIEHE AUCH
 ==========
 
-   * *long()*
+   * long()
 
-   * *AddExtraLook()*, *RemoveExtraLook()*
+   * AddExtraLook(), RemoveExtraLook()
 
    * /std/living/description.c, /std/player/base.c
 
-   * *replace_personal()*
+   * replace_personal()
diff --git a/doc/props/P_FUNC_MSG b/doc/props/P_FUNC_MSG
index ac09232..811e71c 100644
--- a/doc/props/P_FUNC_MSG
+++ b/doc/props/P_FUNC_MSG
@@ -34,12 +34,12 @@
 ==========
 
    LFuns:
-      *AddRoomMessage()*
+      AddRoomMessage()
 
    Verwandt:
-      tell_room(), *send_room()*, *ReceiveMsg()*
+      tell_room(), send_room(), ReceiveMsg()
 
    Props:
-      *P_MSG_PROB*, *P_ROOM_MSG*
+      P_MSG_PROB, P_ROOM_MSG
 
 2.Feb 2016 Gloinson
diff --git a/doc/props/P_HARBOUR b/doc/props/P_HARBOUR
index 80ee19a..5b79d9b 100644
--- a/doc/props/P_HARBOUR
+++ b/doc/props/P_HARBOUR
@@ -84,8 +84,8 @@
 SIEHE AUCH
 ==========
 
-   Properties:     *P_NO_TRAVELING*, *P_TRAVEL_INFO* Funktionen:
-   *AddRoute()* Spielerbefehle: reise weitere Doku:
+   Properties:     P_NO_TRAVELING, P_TRAVEL_INFO Funktionen:
+   AddRoute() Spielerbefehle: reise weitere Doku:
    /d/inseln/schiffe/HowTo
 
 
diff --git a/doc/props/P_INFO b/doc/props/P_INFO
index 214301a..c18cd97 100644
--- a/doc/props/P_INFO
+++ b/doc/props/P_INFO
@@ -49,6 +49,6 @@
 ==========
 
    Aehnlich:
-      *GetOwner()*
+      GetOwner()
 
 14. Mar 2017 Gloinson
diff --git a/doc/props/P_INTERNAL_EXTRA_LOOK b/doc/props/P_INTERNAL_EXTRA_LOOK
index d61da7a..9e18201 100644
--- a/doc/props/P_INTERNAL_EXTRA_LOOK
+++ b/doc/props/P_INTERNAL_EXTRA_LOOK
@@ -69,9 +69,9 @@
 ==========
 
    Verwandt:
-      *AddExtraLook()*, *RemoveExtraLook()* *long()*
+      AddExtraLook(), RemoveExtraLook() long()
 
    Fuer Spielerobjekte:
-      *P_EXTRA_LOOK*
+      P_EXTRA_LOOK
 
 15. Juni 2017 Gloinson
diff --git a/doc/props/P_LIGHT b/doc/props/P_LIGHT
index d0b55d8..c1eb0e5 100644
--- a/doc/props/P_LIGHT
+++ b/doc/props/P_LIGHT
@@ -19,34 +19,34 @@
 ============
 
    Gibt den Lichtlevel eines Objektes an, d.h. wie hell das Objekt von sich
-   aus leuchtet. Moechte man den gesamten Lichtlevel haben der von einem
+   aus leuchtet. Moechte man den gesamten Lichtlevel haben, der von einem
    Objekt ausgeht, so sollte man P_TOTAL_LIGHT nehmen, das den Inhalt eines
    Containers direkt mit verrechnet.
 
    Bitte _nur_ ueber SetProp bzw. QueryProp zugreifen, da es fuer die
-   Berechnung wichtig ist, das in allen Containern P_LAST_CONTENT_CHANGE
-   gesetzt wird um ein neuberechnen des Lichtlevels auszuloesen!
+   Berechnung wichtig ist, dass in allen Containern P_LAST_CONTENT_CHANGE
+   gesetzt wird, um ein Neuberechnen des Lichtlevels auszuloesen!
 
 
 ANMERKUNG
 =========
 
-   Um ein ungefaehres Gefuehl davon zu bekommen was ein Lichtlevel in
-   etwa bedeutet hier einige allgemeine Beispiele von Gegenstaenden.
+   Um ein ungefaehres Gefuehl davon zu bekommen, was ein Lichtlevel in
+   etwa bedeutet, hier einige allgemeine Beispiele von Gegenstaenden.
    Grundsaetzlich sollten Lichtlevel <0 und >2 nur in Ruecksprache mit dem
    Balanceteam benutzt werden.
 
    Lichtlevel -1,  z.B. ein schwarzer Ring, von dem eine kleine dunkle Aura
                    ausgeht, die den Spieler umgibt.
    Lichtlevel  0,  der Gegenstand beeinflusst das Licht ueberhaupt nicht
-   Lichtlevel  1,  der Spieler haelt eine kleine Lichtquelle in Haenden,
-                   dieses kann ein Leuchtpfirsich, eine Fackel oder ein
-                   Feuerschwert oder aehnliches sein.
+   Lichtlevel  1,  der Spieler haelt eine kleine Lichtquelle in den
+                   Haenden, dieses kann ein Leuchtpfirsich, eine Fackel oder
+                   ein Feuerschwert oder aehnliches sein.
    Lichtlevel  2,  eine etwas groessere Lichtquelle, die aber immer noch
-                   nicht den Raum beleuchtet sondern lediglich dem Spieler
-                   einen Lichtschein gewaehrt mit dem er sehen kann.
+                   nicht den Raum beleuchtet, sondern lediglich dem Spieler
+                   einen Lichtschein gewaehrt, mit dem er sehen kann.
    Lichtlevel >2,  extrem helle Lichtquellen, die den gesamten Raum
-                   ausleuchten, in der Regel wohl eher magischer Natur.
+                   ausleuchten; in der Regel wohl eher magischer Natur.
                    Solche Lichtquellen sollten sich mit der Zeit
                    verbrauchen, dem Spieler Schaden zufuegen oder
                    aehnliches, damit die Spieler nicht defaultmaessig mit
@@ -59,20 +59,20 @@
                    ueber keine Nachtsicht verfuegen. Ueber ein Abdunkeln des
                    Raumes kann der Spieler dann doch den Nachtkampf nutzen.
    Lichtlevel   1: Der Raum ist erleuchtet und die Spieler koennen ohne
-                   weitere Lichtquellen sehen...
-   Lichtlevel   0: Ein dunkler Raum in dem man mit jeder Fackel sehen kann.
-   Lichtlevel  -1: man benoetigt zwei einfache Lichtquellen oder Nachtsicht
+                   weitere Lichtquellen sehen.
+   Lichtlevel   0: Ein dunkler Raum, in dem man mit jeder Fackel sehen kann.
+   Lichtlevel  -1: man benoetigt zwei einfache Lichtquellen oder Nachtsicht,
                    um in diesem Raum etwas sehen zu koennen.
-   Lichtlevel  -2: Man benoetigt schon eine besondere Lichtquelle um in
+   Lichtlevel  -2: Man benoetigt schon eine besondere Lichtquelle, um in
                    diesem Raum noch etwas sehen zu koennen. Solche
                    Lichtquellen sind nichts fuer Anfaenger oder mittlere
-                   Spieler da sie schwer zu beschaffen und in der Regel
+                   Spieler, da sie schwer zu beschaffen und in der Regel
                    auch einige Handicaps haben.
    Lichtlevel <-2: Der Raum ist wirklich absolut stockduster und
-                   Lichtquellen die solch einen Raum ausleuchten koennen,
+                   Lichtquellen, die solch einen Raum ausleuchten koennen,
                    sind ausserordentlich selten und haben immer ihre
                    Tuecken. Diese Lichtlevel sollten nur mit Vorsicht
-                   genossen werden.
+                   gesetzt werden.
 
 
 SIEHE AUCH
diff --git a/doc/props/P_MSG_PROB b/doc/props/P_MSG_PROB
index 216d8e0..5c679a7 100644
--- a/doc/props/P_MSG_PROB
+++ b/doc/props/P_MSG_PROB
@@ -71,10 +71,10 @@
 ==========
 
    LFuns:
-      *AddRoomMessage()*
+      AddRoomMessage()
 
    Props:
-      *P_ROOM_MSG*, *P_FUNC_MSG*
+      P_ROOM_MSG, P_FUNC_MSG
 
    Verwandt:
       call_out()
diff --git a/doc/props/P_PURSUERS b/doc/props/P_PURSUERS
index 8348a6a..feaf575 100644
--- a/doc/props/P_PURSUERS
+++ b/doc/props/P_PURSUERS
@@ -35,4 +35,4 @@
 SIEHE AUCH
 ==========
 
-   * *AddPursuer()*, *RemovePursuer()*
+   * AddPursuer(), RemovePursuer()
diff --git a/doc/props/P_RACE b/doc/props/P_RACE
index c6aebc7..1c61e7a 100644
--- a/doc/props/P_RACE
+++ b/doc/props/P_RACE
@@ -22,11 +22,10 @@
    gesetzt werden. Es empfiehlt sich hierbei, Rassen nur in Form von
    grossgeschriebenen Strings zu setzen. Leichen erhalten mittels
    dieser Property automatisch die Rasse der Lebewesen, aus denen sie
-   hervorgegangen sind.
-   Der Sinn des Ganzen liegt darin, das Spiel differenzierter zu
-   gestalten und auf Rassenspezifika einzugehen. Zum Beispiel koennen
-   Elfen weniger Alkohol vertragen als Zwerge, was in '/std/pub'
-   beruecksichtigt wurde.
+   hervorgegangen sind. Der Sinn des Ganzen liegt darin, das Spiel
+   differenzierter zu gestalten und auf Rassenspezifika einzugehen.
+   Zum Beispiel koennen Elfen weniger Alkohol vertragen als Zwerge,
+   was in '/std/pub' beruecksichtigt wurde.
 
 
 BEISPIEL
@@ -43,6 +42,7 @@
 SIEHE AUCH
 ==========
 
-   /std/npc.c, /std/pub.c
+   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/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
diff --git a/doc/props/P_ROOM_MSG b/doc/props/P_ROOM_MSG
index 2d52e57..44ea622 100644
--- a/doc/props/P_ROOM_MSG
+++ b/doc/props/P_ROOM_MSG
@@ -33,12 +33,12 @@
 ==========
 
    LFuns:
-      *AddRoomMessage()*
+      AddRoomMessage()
 
    Verwandt:
-      tell_room(), *send_room()*, *ReceiveMsg()*
+      tell_room(), send_room(), ReceiveMsg()
 
    Props:
-      *P_MSG_PROB*, *P_FUNC_MSG*
+      P_MSG_PROB, P_FUNC_MSG
 
 2.Feb 2016 Gloinson
diff --git a/doc/props/P_SKILL_ATTRIBUTE_OFFSETS b/doc/props/P_SKILL_ATTRIBUTE_OFFSETS
index 6bfcad3..a976072 100644
--- a/doc/props/P_SKILL_ATTRIBUTE_OFFSETS
+++ b/doc/props/P_SKILL_ATTRIBUTE_OFFSETS
@@ -18,8 +18,8 @@
 BESHREIBUNG
 ===========
 
-   Der Wert der Property ist ein Mapping: ([Attributname: Wert])
-   In dieser Property stehen permanente Abweichungen der Skillattribute
+   Der Wert der Property ist ein Mapping: ([Attributname: Wert]) In
+   dieser Property stehen permanente Abweichungen der Skillattribute
    vom Standardwert 100.
 
    Zu den Moeglichen Attributwerten, siehe P_SKILL_ATTRIBUTES.
@@ -27,23 +27,31 @@
    Die Werte duerfen zwischen 10 und 1000 liegen.
 
 
-BEMERKUNG
-=========
+BEMERKUNGEN
+===========
 
    Diese Property sollte AUF GAR KEINEN FALL in einem Spieler gesetzt
    werden, ohne Ruecksprachen mit allerhoechsten Stellen!
 
+   Nur via SetProp() setzen, Query-Methoden werden nicht ausgewertet.
+
+
+BEISPIEL
+========
+
+   // Zwei Angriffe pro Kampfrunde
+   SetProp(P_SKILL_ATTRIBUTE_OFFSETS,([SA_SPEED:200]));
+
 
 SIEHE AUCH
 ==========
 
-   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-   * Nutzung:      UseSpell, UseSkill
-   * Abfragen:     QuerySkill, QuerySkillAbility
-   * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
-                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-   * sonstig:      spruchermuedung, skill_info_liste
-   * Properties:   P_NEWSKILLS
+   Skills Lernen:  LearnSkill(), ModifySkill(), LimitAbility()
+   Nutzung:      UseSpell(), UseSkill() Abfragen:     QuerySkill(),
+   QuerySkillAbility() Modifikation: ModifySkillAttribute(),
+   QuerySkillAttribute(), QuerySkillAttributeModifier(),
+   RemoveSkillAttributeModifier() Properties: P_SKILL_ATTRIBUTES
+   sonstig:      spruchermuedung, skill_info_liste Properties:
+   P_NEWSKILLS
 
-31.12.2013, Zesstra
+Letzte Aenderung: 27.10.2018, Bugfix
diff --git a/doc/props/P_SYNTAX_HELP b/doc/props/P_SYNTAX_HELP
index fee400f..1d1cb67 100644
--- a/doc/props/P_SYNTAX_HELP
+++ b/doc/props/P_SYNTAX_HELP
@@ -61,4 +61,4 @@
 SIEHE AUCH
 ==========
 
-   *AddCmd()*
+   AddCmd()
diff --git a/doc/props/P_WEIGHT b/doc/props/P_WEIGHT
index a68f580..024ba11 100644
--- a/doc/props/P_WEIGHT
+++ b/doc/props/P_WEIGHT
@@ -44,7 +44,7 @@
 SIEHE AUCH
 ==========
 
-   *P_TOTAL_WEIGHT* *P_EMPTY_PROPS*, *P_WEIGHT_PERCENT*,
-   *P_WEIGHT_PER_UNIT*, zu Speisen: wiz/food
+   P_TOTAL_WEIGHT P_EMPTY_PROPS, P_WEIGHT_PERCENT, P_WEIGHT_PER_UNIT,
+   zu Speisen: wiz/food
 
 Last modified: 25.07.2018 by Zesstra
diff --git a/doc/sefun/log_file b/doc/sefun/log_file
index a3f3cab..b8bfb41 100644
--- a/doc/sefun/log_file
+++ b/doc/sefun/log_file
@@ -6,24 +6,30 @@
 FUNKTION
 ========
 
-         int log_file(string file, string text)
-   int log_file(string file, string text, int size_to_break)
+   varargs int log_file(string file, string text, int size_to_break)
 
 
 ARGUMENTE
 =========
 
-   file - Name der Datei, in die geschrieben werden soll
-   text - Der Text, der geschrieben werden soll
-   size_to_break - Groesse, ab der ein neues File begonnen wird (optional)
+   file
+      Name der Datei, in die geschrieben werden soll
+
+   text
+      Der Text, der geschrieben werden soll
+
+   size_to_break
+      Groesse, ab der ein neues File begonnen wird (optional)
 
 
 BESCHREIBUNG
 ============
 
-   log_file schreibt den Text text in die Datei /log/file.
-   Sollte file schon mit einem /log/ beginnen, wird kein erneutes /log/ davor
-   eingefuegt.
+   log_file schreibt den Text text in die Datei /log/file. Sollte file
+   schon mit einem /log/ beginnen, wird kein erneutes /log/ davor
+   eingefuegt. Falls das Zielverzeichnis unterhalb von /log/ noch
+   nicht existiert, wird dies automatisch angelegt, sofern das rufende
+   Objekt das Logfile schreiben darf.
 
 
 RUECKGABEWERT
@@ -35,11 +41,12 @@
 BEMERKUNGEN
 ===========
 
-   Wenn die Groesse von file vor dem Schreiben 50000 Bytes ueberschreitet,
-   wird sie in file.old umbenannt. Eine schon vorhandene Datei file.old
-   wird dabei geloescht. Der Text wird nach dem Umbenennen geschrieben.
-   Wird 'size_to_break' angegeben und ist dies > 0, wird dieser Wert (in
-   Bytes) statt der 50000 Bytes zum Rotieren des Logfiles benutzt.
+   Wenn die Groesse von file vor dem Schreiben 50000 Bytes
+   ueberschreitet, wird sie in file.old umbenannt. Eine schon
+   vorhandene Datei file.old wird dabei geloescht. Der Text wird nach
+   dem Umbenennen geschrieben. Wird 'size_to_break' angegeben und ist
+   dies > 0, wird dieser Wert (in Bytes) statt der 50000 Bytes zum
+   Rotieren des Logfiles benutzt.
 
 
 BEISPIELE
@@ -56,4 +63,4 @@
 
    write_file(E)
 
-29.01.2017, Zesstra
+05.09.2018, Zesstra
diff --git a/doc/sefun/send_room b/doc/sefun/send_room
index 2a34ba2..2906b5a 100644
--- a/doc/sefun/send_room
+++ b/doc/sefun/send_room
@@ -67,6 +67,6 @@
 SIEHE AUCH
 ==========
 
-   *ReceiveMsg()* tell_object(E), tell_room(E), say(E), write(E)
+   ReceiveMsg() tell_object(E), tell_room(E), say(E), write(E)
 
 31.01.2018, Deaddy
diff --git a/doc/sphinx/props/P_LIGHT.rst b/doc/sphinx/props/P_LIGHT.rst
index 5f06359..1475b29 100644
--- a/doc/sphinx/props/P_LIGHT.rst
+++ b/doc/sphinx/props/P_LIGHT.rst
@@ -18,34 +18,34 @@
 ::
 
     Gibt den Lichtlevel eines Objektes an, d.h. wie hell das Objekt von sich
-    aus leuchtet. Moechte man den gesamten Lichtlevel haben der von einem
+    aus leuchtet. Moechte man den gesamten Lichtlevel haben, der von einem
     Objekt ausgeht, so sollte man P_TOTAL_LIGHT nehmen, das den Inhalt eines
     Containers direkt mit verrechnet.
 
     Bitte _nur_ ueber SetProp bzw. QueryProp zugreifen, da es fuer die
-    Berechnung wichtig ist, das in allen Containern P_LAST_CONTENT_CHANGE
-    gesetzt wird um ein neuberechnen des Lichtlevels auszuloesen!
+    Berechnung wichtig ist, dass in allen Containern P_LAST_CONTENT_CHANGE
+    gesetzt wird, um ein Neuberechnen des Lichtlevels auszuloesen!
 
 ANMERKUNG
 ---------
 ::
 
-    Um ein ungefaehres Gefuehl davon zu bekommen was ein Lichtlevel in
-    etwa bedeutet hier einige allgemeine Beispiele von Gegenstaenden.
+    Um ein ungefaehres Gefuehl davon zu bekommen, was ein Lichtlevel in
+    etwa bedeutet, hier einige allgemeine Beispiele von Gegenstaenden.
     Grundsaetzlich sollten Lichtlevel <0 und >2 nur in Ruecksprache mit dem
     Balanceteam benutzt werden.
 
     Lichtlevel -1,  z.B. ein schwarzer Ring, von dem eine kleine dunkle Aura
                     ausgeht, die den Spieler umgibt.
     Lichtlevel  0,  der Gegenstand beeinflusst das Licht ueberhaupt nicht
-    Lichtlevel  1,  der Spieler haelt eine kleine Lichtquelle in Haenden,
-                    dieses kann ein Leuchtpfirsich, eine Fackel oder ein
-                    Feuerschwert oder aehnliches sein.
+    Lichtlevel  1,  der Spieler haelt eine kleine Lichtquelle in den 
+                    Haenden, dieses kann ein Leuchtpfirsich, eine Fackel oder
+                    ein Feuerschwert oder aehnliches sein.
     Lichtlevel  2,  eine etwas groessere Lichtquelle, die aber immer noch
-                    nicht den Raum beleuchtet sondern lediglich dem Spieler
-                    einen Lichtschein gewaehrt mit dem er sehen kann.
+                    nicht den Raum beleuchtet, sondern lediglich dem Spieler
+                    einen Lichtschein gewaehrt, mit dem er sehen kann.
     Lichtlevel >2,  extrem helle Lichtquellen, die den gesamten Raum
-                    ausleuchten, in der Regel wohl eher magischer Natur.
+                    ausleuchten; in der Regel wohl eher magischer Natur.
                     Solche Lichtquellen sollten sich mit der Zeit
                     verbrauchen, dem Spieler Schaden zufuegen oder
                     aehnliches, damit die Spieler nicht defaultmaessig mit
@@ -58,20 +58,20 @@
                     ueber keine Nachtsicht verfuegen. Ueber ein Abdunkeln des
                     Raumes kann der Spieler dann doch den Nachtkampf nutzen.
     Lichtlevel   1: Der Raum ist erleuchtet und die Spieler koennen ohne
-                    weitere Lichtquellen sehen...
-    Lichtlevel   0: Ein dunkler Raum in dem man mit jeder Fackel sehen kann.
-    Lichtlevel  -1: man benoetigt zwei einfache Lichtquellen oder Nachtsicht
+                    weitere Lichtquellen sehen.
+    Lichtlevel   0: Ein dunkler Raum, in dem man mit jeder Fackel sehen kann.
+    Lichtlevel  -1: man benoetigt zwei einfache Lichtquellen oder Nachtsicht,
                     um in diesem Raum etwas sehen zu koennen.
-    Lichtlevel  -2: Man benoetigt schon eine besondere Lichtquelle um in
+    Lichtlevel  -2: Man benoetigt schon eine besondere Lichtquelle, um in
                     diesem Raum noch etwas sehen zu koennen. Solche
                     Lichtquellen sind nichts fuer Anfaenger oder mittlere
-                    Spieler da sie schwer zu beschaffen und in der Regel
+                    Spieler, da sie schwer zu beschaffen und in der Regel
                     auch einige Handicaps haben.
     Lichtlevel <-2: Der Raum ist wirklich absolut stockduster und
-                    Lichtquellen die solch einen Raum ausleuchten koennen,
+                    Lichtquellen, die solch einen Raum ausleuchten koennen,
                     sind ausserordentlich selten und haben immer ihre
                     Tuecken. Diese Lichtlevel sollten nur mit Vorsicht
-                    genossen werden.
+                    gesetzt werden.
 
 SIEHE AUCH
 ----------
diff --git a/doc/wiz/artillerie b/doc/wiz/artillerie
index 349cec4..6a4bdb5 100644
--- a/doc/wiz/artillerie
+++ b/doc/wiz/artillerie
@@ -24,28 +24,11 @@
  a. Artillerie _muss_ P_ATTACK_BUSY beachten (setzen/abfragen).
  b. Artillerie _muss_ bei Verwendung Konzentrationspunkte 
     verbrauchen.
- c. Artillerie darf nicht (bzw. nur begrenzt) gehortet werden
-    koennen.
- d. Artillerie darf bei Paralyse nicht angewendet werden koennen
+ c. Artillerie darf bei Paralyse nicht angewendet werden koennen
     (P_DISABLE_ATTACK).
- e. Artillerie muss durch Setzen der Property P_IS_ARTILLERY 
+ d. Artillerie muss durch Setzen der Property P_IS_ARTILLERY 
     gekennzeichnet sein. 
- f. Artillerie, die Munition benutzt oder selbst Munition ist (wie z.B.
-    Wurfsterne), muss das Unitobjekt und den dortigen Mechanismus zum
-    Zerfall von Objekten nutzen. Dabei sind P_UNIT_DECAY_INTERVAL und
-    P_UNIT_DECAY_QUOTA so zu setzen, dass die Munition eine Halbwertszeit
-    zwischen 5 und 10  Tagen hat, der ihrer Verfuegbarkeit angemessen
-    ist. Dies laesst sich durch geeignetes Einstellen des
-    Prozentsatzes und/oder der Resetzeit erreichen.
-
-    Beispiele:
-    Setzt man p=1% Zerfall pro Reset an, dann muss der Reset
-    fuer eine Halbwertszeit von 5 Tagen dann 
-    t=ln(0.5)/ln(0,99)*5*24*3600 s dauern, das sind 6224 s.
-
-    Moechte man lieber den normalen Reset, der im Mittel 45 min, d.h. 160
-    Resets in 5 Tagen betraegt, so erhaelt man folgenden Prozentsatz:
-    p = 1-0,5^(1/160) d.h. ca. 0,43%.
+ e. Artillerie ist immer genehmigungspflichtig.
 
 Details werden fallweise entschieden.
 
@@ -56,6 +39,7 @@
 Diese Regeln treten am 5. August 2003 in Kraft.
 Revision am 5. April 2008
 Revision am 7. April 2011
+Revision am 8. August 2018
 
 --------------------------------------------------------------------------
-Letzte Aenderung: Sam,  7. April 2011 von Humni
+Letzte Aenderung: Mi, 8. August 2018  von Humni