NAME:
    P_RESTRICTIONS                                "restrictions"

DEFINIERT IN:
    /sys/combat.h
    (Die SR_*-Parameter sind in /sys/new_skills.h definiert.)

BESCHREIBUNG:
    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
    werden und dies gegebenfalls verhindern, ohne gleich auf eine evtl.
    vorhandene WieldFunc / WearFunc zuzugreifen.

    Die Auswertung erfolgt ueber den Aufruf von check_restrictions()
    in /std/restriction_checker.c

    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.



BEMERKUNGEN:
    Diese Property eignet sich hervorragend dafuer, einige Grundbedingungen
    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,
    z.B. aus der Para-Welt oder solchen, die sich nah am Limit der geltenden
    Grenzwerte fuer P_WC / P_AC bewegen oder sogar (nach Genehmigung durch
    die Balance) darueber.

BEISPIEL:
    Mindeststufe 25: SetProp(P_RESTRICTIONS,([P_LEVEL:25]));
    Keine Menschen:  SetProp(P_RESTRICTIONS,([SR_EXCLUDE_RACE:({"Mensch"})]));
    Alignment >499:  SetProp(P_RESTRICTIONS,([SR_GOOD:500]));

    Komplexeres Beispiel

    Quest "Diamond Club" bestanden, magiereigene Property P_AUSGANG_GEFUNDEN
    muss gesetzt sein, Stufe 10, nicht taub, max. 45 Food:
    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)
    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

LETZTE AeNDERUNG:
03. Januar 2014, Arathorn
