Beschreibung erweitert, zusammengefuehrt.

Die Beschreibung von check_restrictions wurde etwas erweitert.
Die Liste der nutzbaren Keys ist jetzt nur noch in
check_restrictions erklaert, damit es nicht zu Inkonsistenzen
kommt.

Change-Id: I5f1dfebbe70de4ed9a6f0fd06cade27f6060578d
diff --git a/doc/sphinx/lfun/check_restrictions.rst b/doc/sphinx/lfun/check_restrictions.rst
index b764a5d..83df446 100644
--- a/doc/sphinx/lfun/check_restrictions.rst
+++ b/doc/sphinx/lfun/check_restrictions.rst
@@ -44,7 +44,8 @@
     NIEMALS solchen Code einfach KOPIEREN. Spaeter muss nur irgendwer
     eurem alten Code hinterherraeumen.
 
-Aktuelle Liste der pruefbaren Parameter:
+    Aktuelle Liste der pruefbaren Parameter:
+
     P_LEVEL
       Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
       auszufuehren.
@@ -106,11 +107,28 @@
       Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier Gilden
       genannt werden.
     SR_FUN
-      Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
-      Restriktionen angegeben werden, siehe execute_anything().
-      Das kann nuetzlich sein, um andere Restriktionen zu pruefen,
-      wie das Bestehen von Miniquests oder andere Faehigkeiten/Flags.
-      Ist der Test nicht bestanden, gibt die Funktion einen String zurueck.
+      Hier kann eine Funktion angegeben werden, die aufgerufen wird, um sie
+      die Restriktionen zu pruefen zu lassen. Folgende Formen sind moeglich:
+      - Funktionsname als String; Funktion wird an dem Objekt gerufen, das
+        die Restriktion prueft, d.h. an der Ruestung/Waffe/Kleidung. Soll
+        die Funktion an einem anderen Objekt gerufen werden, ist eine
+        der beiden alternativen Formen zu verwenden.
+      - eine Closure, wird per funcall() gerufen
+      - ein Array mit dem folgenden Aufbau:
+        ({ Objekt/Objektname, Funktionsname, arg_1, arg_2, ... , arg_n })
+     
+      Der aufgerufenen Funktion wird das Spielerobjekt immer als erstes
+      Argument uebergeben, d.h. bei der Array-Form ggf. vor dem ersten
+      Extra-Argument arg_1 eingeschoben.
+      SR_FUN kann nuetzlich sein, um Restriktionen zu pruefen, die sich mit
+      den anderen Optionen nicht abbilden lassen.
+      Ist der Test nicht bestanden, muss die Funktion einen String zurueck-
+      geben, ansonsten 0.
+      Eine Besonderheit besteht beim Aufruf per call_other(), d.h. wenn
+      restriction_checker.c nicht geerbt wurde und nur ein Funktionsname
+      uebergeben wird. In diesem Fall, der auch bei Verwendung von
+      P_RESTRICTIONS zum Tragen kommt, wird die Funktion immer am
+      aufrufenden Objekt, d.h. previous_object(), gerufen.
     SR_PROP
       Hier kann ein Mapping mit Properties und zugehoerigen Werten angegeben
       werden, die jeweils auf Identitaet geprueft werden. Zusaetzlich sollte
diff --git a/doc/sphinx/props/P_RESTRICTIONS.rst b/doc/sphinx/props/P_RESTRICTIONS.rst
index c5682ff..9099df5 100644
--- a/doc/sphinx/props/P_RESTRICTIONS.rst
+++ b/doc/sphinx/props/P_RESTRICTIONS.rst
@@ -18,7 +18,7 @@
 ------------
 ::
 
-    Enthaelt ein mapping mit den zu pruefenden Einschraenkungen.
+    Enthaelt ein Mapping mit den zu pruefenden Einschraenkungen.
 
     In dieser Property lassen sich Restriktionen setzen, die vor dem
     Zuecken einer Waffe / Anziehen einer Ruestung oder Kleidung geprueft
@@ -26,104 +26,24 @@
     vorhandene WieldFunc / WearFunc zuzugreifen.
 
     Die Auswertung erfolgt ueber den Aufruf von check_restrictions()
-    in /std/restriction_checker.c
+    in /std/restriction_checker.c per call_other().
 
-    Folgende Keys werden in dem Mapping ausgewertet:
-
-    P_LEVEL
-      Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
-      auszufuehren.
-    P_GUILD_LEVEL
-      Gildenlevel, das das Lebewesen mindestens erreicht haben muss, um die
-      Aktion auszufuehren.
-    SR_SEER
-      Ist gesetzt, wenn das Lebewesen Seher sein muss.
-      Auswertung nur fuer Interactives, NSC ignorieren das Flag.
-    P_XP
-      Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen muss,
-      um die Aktion auszufuehren.
-    P_QP
-      Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
-    P_ALCOHOL
-      Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen liegen
-      muss, um die Aktion noch ausfuehren zu koennen.
-    P_DRINK
-      Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
-      Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
-    P_FOOD
-      Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel des
-      Spielers liegen muss, um die Aktion noch ausfuehren zu koennen.
-    P_DEAF
-      Ist gesetzt, falls der Spieler nicht taub sein darf.
-    P_FROG
-      Ist gesetzt, falls der Spieler kein Frosch sein darf.
-    P_BLIND
-      Ist gesetzt, falls der Spieler nicht blind sein darf.
-      Achtung: das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
-      nichts mehr sehen kann. Auch andere Gruende (zum Beispiel Dunkelheit)
-      koennen bewirken, dass ein Spieler nichts mehr sieht.
-    A_INT, A_DEX, A_CON, A_STR
-      Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren zu
-      koennen.
-    SR_BAD, SR_GOOD
-      Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein Charakter sein
-      darf, um eine Aktion ausfuehren zu koennen.
-    SR_MIN_SIZE, SR_MAX_SIZE
-      Gibt die minimale, bzw. die maximale Groesse an, die ein Charakter
-      maximal haben darf, um eine Aktion ausfuehren zu koennen.
-    SR_FREE_HANDS
-      Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
-      besitzen muss.
-    SR_EXCLUDE_RACE
-      Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
-      diese Aktion nicht ausfuehren.
-    SR_INCLUDE_RACE
-      Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen koennen
-      diese Aktion nicht ausfuehren.
-    SM_RACE
-      Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese Rasse
-      geltenden Einschraenkungen vorgenommen werden. Als Keys sind die
-      in dieser Manpage beschriebenen Keys erlaubt, wobei SM_RACE nicht
-      rekursiv ausgewertet wird.
-      Der Rassenname ist gross geschrieben und "*" steht fuer alle Rassen.
-    SR_EXCLUDE_GUILD
-    SR_INCLUDE_GUILD
-      Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier Gilden
-      genannt werden.
-    SR_FUN
-      Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
-      Restriktionen angegeben werden, siehe execute_anything().
-      Das kann nuetzlich sein, um andere Restriktionen zu pruefen,
-      wie das Bestehen von Miniquests oder andere Faehigkeiten/Flags.
-      Ist der Test nicht bestanden, gibt die Funktion einen String zurueck.
-    SR_PROP
-      Hier kann ein Mapping mit Properties und zugehoerigen Werten angegeben
-      werden, die jeweils auf Identitaet geprueft werden. Zusaetzlich sollte
-      eine Meldung angegeben werden, die als Fehlermeldung ausgegeben wird,
-      wenn der Spieler die Bedingung nicht erfuellt. Es sollte immer eine
-      passende Meldung fuer den Spieler eingebaut werden. Beispiel:
-      ([ SR_PROP: ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
-          "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn Du "
-          "Dich als wuerdig erwiesen hast!"]) ])
-      Aufgrund der Meldung wird empfohlen, SR_PROP nicht in Restriktionen 
-      einzusetzen, die massenweise in Savefiles landen (z.B. 
-      Spielersavefiles).
-    SR_QUEST
-      Hier kann ein String-Array mit den Namen (Keys) der Quest(s) angegeben
-      werden, die der Spieler bestanden haben muss, um die Aktion ausfuehren
-      zu koennen.
-    SR_MINIQUEST
-      Hier kann entweder ein String-Array mit den Ladenamen der vergebenden
-      Objekte oder ein Int-Array mit den Index-Nummern (IDs) der
-      Miniquest(s) (empfohlen!) angegeben werden, die der Spieler bestanden
-      haben muss, um die Aktion ausfuehren zu koennen.
+    Die im Mapping verwendbaren Eintraege finden sich in der Manpage
+    zu check_restrictions().
+    
+    Die Funktionalitaet ist identisch mit Ausnahme von SR_FUN. Bei
+    Verwendung von SR_FUN im Mapping wird die Funktion, wenn sie als
+    Funktionsname angegeben wird, immer am aufrufenden Objekt gerufen.
+    Soll die Funktion an einem anderen Objekt gerufen werden, ist eine
+    der beiden alternativen Formen (Closure oder Array) zu verwenden,
+    um den Funktionsnamen anzugeben.
 
 BEMERKUNGEN
 -----------
 ::
 
     Diese Property eignet sich hervorragend dafuer, einige Grundbedingungen
-    fuer das Nutzen der Waffe / Ruestung / Kleidung zu stellen ohne gleich
+    fuer das Nutzen der Waffe / Ruestung / Kleidung zu stellen, ohne gleich
     eine Wield- oder WearFunc setzen und auswerten zu muessen.
 
     Denkbar waere der Einsatz bei hochwertigen Waffen / Ruestungen / Kleidung,
@@ -146,11 +66,12 @@
     SetProp(P_RESTRICTIONS, ([ P_LEVEL: 10, P_DEAF: 1, P_FOOD: 45,
       SR_PROP: ([P_AUSGANG_GEFUNDEN:1]), SR_QUEST:({"Diamond Club"}) ]));
 
+
 SIEHE AUCH
 ----------
 ::
 
-    check_restrictions(L)
+    check_restrictions(L), execute_anything(L)
     WieldFunc(L), WearFunc(L), RemoveFunc(L), UnwieldFunc(L),
     P_WIELD_FUNC, P_WEAR_FUNC, P_REMOVE_FUNC, P_UNWIELD_FUNC
     /std/armour/wear.c, /std/weapon/combat.c, clothing, armours, weapon
@@ -159,5 +80,5 @@
 ----------------
 ::
 
-03. Januar 2014, Arathorn
+    03. Januar 2014, Arathorn