blob: c5682ffa29340d2d16269ebbff418ed5a9c89d3c [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001P_RESTRICTIONS
2==============
3
4NAME
5----
6::
7
8 P_RESTRICTIONS "restrictions"
9
10DEFINIERT IN
11------------
12::
13
14 /sys/combat.h
15 (Die SR_*-Parameter sind in /sys/new_skills.h definiert.)
16
17BESCHREIBUNG
18------------
19::
20
21 Enthaelt ein mapping mit den zu pruefenden Einschraenkungen.
22
23 In dieser Property lassen sich Restriktionen setzen, die vor dem
24 Zuecken einer Waffe / Anziehen einer Ruestung oder Kleidung geprueft
25 werden und dies gegebenfalls verhindern, ohne gleich auf eine evtl.
26 vorhandene WieldFunc / WearFunc zuzugreifen.
27
28 Die Auswertung erfolgt ueber den Aufruf von check_restrictions()
29 in /std/restriction_checker.c
30
31 Folgende Keys werden in dem Mapping ausgewertet:
32
33 P_LEVEL
34 Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
35 auszufuehren.
36 P_GUILD_LEVEL
37 Gildenlevel, das das Lebewesen mindestens erreicht haben muss, um die
38 Aktion auszufuehren.
39 SR_SEER
40 Ist gesetzt, wenn das Lebewesen Seher sein muss.
41 Auswertung nur fuer Interactives, NSC ignorieren das Flag.
42 P_XP
43 Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen muss,
44 um die Aktion auszufuehren.
45 P_QP
46 Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
47 P_ALCOHOL
48 Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen liegen
49 muss, um die Aktion noch ausfuehren zu koennen.
50 P_DRINK
51 Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
52 Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
53 P_FOOD
54 Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel des
55 Spielers liegen muss, um die Aktion noch ausfuehren zu koennen.
56 P_DEAF
57 Ist gesetzt, falls der Spieler nicht taub sein darf.
58 P_FROG
59 Ist gesetzt, falls der Spieler kein Frosch sein darf.
60 P_BLIND
61 Ist gesetzt, falls der Spieler nicht blind sein darf.
62 Achtung: das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
63 nichts mehr sehen kann. Auch andere Gruende (zum Beispiel Dunkelheit)
64 koennen bewirken, dass ein Spieler nichts mehr sieht.
65 A_INT, A_DEX, A_CON, A_STR
66 Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren zu
67 koennen.
68 SR_BAD, SR_GOOD
69 Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein Charakter sein
70 darf, um eine Aktion ausfuehren zu koennen.
71 SR_MIN_SIZE, SR_MAX_SIZE
72 Gibt die minimale, bzw. die maximale Groesse an, die ein Charakter
73 maximal haben darf, um eine Aktion ausfuehren zu koennen.
74 SR_FREE_HANDS
75 Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
76 besitzen muss.
77 SR_EXCLUDE_RACE
78 Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
79 diese Aktion nicht ausfuehren.
80 SR_INCLUDE_RACE
81 Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen koennen
82 diese Aktion nicht ausfuehren.
83 SM_RACE
84 Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese Rasse
85 geltenden Einschraenkungen vorgenommen werden. Als Keys sind die
86 in dieser Manpage beschriebenen Keys erlaubt, wobei SM_RACE nicht
87 rekursiv ausgewertet wird.
88 Der Rassenname ist gross geschrieben und "*" steht fuer alle Rassen.
89 SR_EXCLUDE_GUILD
90 SR_INCLUDE_GUILD
91 Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier Gilden
92 genannt werden.
93 SR_FUN
94 Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
95 Restriktionen angegeben werden, siehe execute_anything().
96 Das kann nuetzlich sein, um andere Restriktionen zu pruefen,
97 wie das Bestehen von Miniquests oder andere Faehigkeiten/Flags.
98 Ist der Test nicht bestanden, gibt die Funktion einen String zurueck.
99 SR_PROP
100 Hier kann ein Mapping mit Properties und zugehoerigen Werten angegeben
101 werden, die jeweils auf Identitaet geprueft werden. Zusaetzlich sollte
102 eine Meldung angegeben werden, die als Fehlermeldung ausgegeben wird,
103 wenn der Spieler die Bedingung nicht erfuellt. Es sollte immer eine
104 passende Meldung fuer den Spieler eingebaut werden. Beispiel:
105 ([ SR_PROP: ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
106 "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn Du "
107 "Dich als wuerdig erwiesen hast!"]) ])
108 Aufgrund der Meldung wird empfohlen, SR_PROP nicht in Restriktionen
109 einzusetzen, die massenweise in Savefiles landen (z.B.
110 Spielersavefiles).
111 SR_QUEST
112 Hier kann ein String-Array mit den Namen (Keys) der Quest(s) angegeben
113 werden, die der Spieler bestanden haben muss, um die Aktion ausfuehren
114 zu koennen.
115 SR_MINIQUEST
116 Hier kann entweder ein String-Array mit den Ladenamen der vergebenden
117 Objekte oder ein Int-Array mit den Index-Nummern (IDs) der
118 Miniquest(s) (empfohlen!) angegeben werden, die der Spieler bestanden
119 haben muss, um die Aktion ausfuehren zu koennen.
120
121BEMERKUNGEN
122-----------
123::
124
125 Diese Property eignet sich hervorragend dafuer, einige Grundbedingungen
126 fuer das Nutzen der Waffe / Ruestung / Kleidung zu stellen ohne gleich
127 eine Wield- oder WearFunc setzen und auswerten zu muessen.
128
129 Denkbar waere der Einsatz bei hochwertigen Waffen / Ruestungen / Kleidung,
130 z.B. aus der Para-Welt oder solchen, die sich nah am Limit der geltenden
131 Grenzwerte fuer P_WC / P_AC bewegen oder sogar (nach Genehmigung durch
132 die Balance) darueber.
133
134BEISPIEL
135--------
136::
137
138 Mindeststufe 25: SetProp(P_RESTRICTIONS,([P_LEVEL:25]));
139 Keine Menschen: SetProp(P_RESTRICTIONS,([SR_EXCLUDE_RACE:({"Mensch"})]));
140 Alignment >499: SetProp(P_RESTRICTIONS,([SR_GOOD:500]));
141
142 Komplexeres Beispiel
143
144 Quest "Diamond Club" bestanden, magiereigene Property P_AUSGANG_GEFUNDEN
145 muss gesetzt sein, Stufe 10, nicht taub, max. 45 Food:
146 SetProp(P_RESTRICTIONS, ([ P_LEVEL: 10, P_DEAF: 1, P_FOOD: 45,
147 SR_PROP: ([P_AUSGANG_GEFUNDEN:1]), SR_QUEST:({"Diamond Club"}) ]));
148
149SIEHE AUCH
150----------
151::
152
153 check_restrictions(L)
154 WieldFunc(L), WearFunc(L), RemoveFunc(L), UnwieldFunc(L),
155 P_WIELD_FUNC, P_WEAR_FUNC, P_REMOVE_FUNC, P_UNWIELD_FUNC
156 /std/armour/wear.c, /std/weapon/combat.c, clothing, armours, weapon
157
158LETZTE AeNDERUNG
159----------------
160::
161
16203. Januar 2014, Arathorn
163