
P_RESTRICTIONS
**************


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 per call_other().

   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
   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), 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


LETZTE AeNDERUNG
================

   03. Januar 2014, Arathorn
