blob: e173e8f98fbec3baef186fe2f3fb538f41c83e4f [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2check_restrictions()
3********************
4
5
6FUNKTION
7========
8
9 string check_restrictions(object pl, mapping restr)
10
11
12DEFINIERT IN
13============
14
15 /std/restriction_checker.c
16
17
18ARGUMENTE
19=========
20
21 object pl geprueftes Lebewesen
22 mapping restr Mapping mit Restriktionen, s.u.
23
24
25BESCHREIBUNG
26============
27
28 Die Methode wird verwendet, um Restriktionen (zum Beispiel fuer das
29 Casten eines Spells) zu pruefen. Sie wird von Spellbook und
30 Gildenobjekt direkt genutzt.
31
32 Ihr wird dabei ein Spielerobjekt sowie ein Mapping mit den jeweiligen
33 Restriktionen uebergeben. Die aktuell moeglichen Keys des Mappings sind
34 weiter unten gelistet.
35
36
37BEMERKUNGEN
38===========
39
40 Es wird bei der Rasse P_REAL_RACE geprueft. Der Tarnhelm funktioniert
41 also nicht.
42
43 Bei Erweiterungsvorschlaegen wendet euch bitte an einen EM oder
44 inheritet im Zweifelsfall nach Absprache.
45 NIEMALS solchen Code einfach KOPIEREN. Spaeter muss nur irgendwer
46 eurem alten Code hinterherraeumen.
47
48Aktuelle Liste der pruefbaren Parameter:
49 P_LEVEL
50 Mindeststufe, die das Lebewesen besitzen muss, um die Aktion
51 auszufuehren.
52
53 P_GUILD_LEVEL
54 Gildenlevel, das das Lebewesen mindestens erreicht haben muss,
55 um die Aktion auszufuehren.
56
57 SR_SEER
58 Ist gesetzt, wenn das Lebewesen Seher sein muss. Auswertung nur
59 fuer Interactives, NSC ignorieren das Flag.
60
61 P_XP
62 Mindestmenge an Erfahrungspunkten, die ein Lebewesen besitzen
63 muss, um die Aktion auszufuehren.
64
65 P_QP
66 Mindestmenge an Abenteuerpunkten, die das Lebewesen haben muss.
67
68 P_ALCOHOL
69 Menge an Alkohol, unter der der Alkoholspiegel des Lebewesen
70 liegen muss, um die Aktion noch ausfuehren zu koennen.
71
72 P_DRINK
73 Menge an Fluessigkeit, unter der der Fluessigkeitsspiegel des
74 Lebewesen liegen muss, um die Aktion noch ausfuehren zu koennen.
75
76 P_FOOD
77 Beinhaltet die Menge an Nahrung, unter der der Nahrungsspiegel
78 des Spielers liegen muss, um die Aktion noch ausfuehren zu
79 koennen.
80
81 P_DEAF
82 Ist gesetzt, falls der Spieler nicht taub sein darf.
83
84 P_FROG
85 Ist gesetzt, falls der Spieler kein Frosch sein darf.
86
87 P_BLIND
88 Ist gesetzt, falls der Spieler nicht blind sein darf. Achtung:
89 das ist nicht gleichbedeutend mit dem Umstand, dass er evtl.
90 nichts mehr sehen kann. Auch andere Gruende (zum Beispiel
91 Dunkelheit) koennen bewirken, dass ein Spieler nichts mehr
92 sieht.
93
94 A_INT, A_DEX, A_CON, A_STR
95 Jeweilige Mindesthoehe eines Attribut, um eine Aktion ausfuehren
96 zu koennen.
97
98 SR_BAD, SR_GOOD
99 Gibt an, wie [minimal] boese bzw. wie [maximal] gut ein
100 Charakter sein darf, um eine Aktion ausfuehren zu koennen.
101
102 SR_MIN_SIZE, SR_MAX_SIZE
103 Gibt die minimale, bzw. die maximale Groesse an, die ein
104 Charakter maximal haben darf, um eine Aktion ausfuehren zu
105 koennen.
106
107 SR_FREE_HANDS
108 Gibt an, wieviele freie Haende ein Charakter fuer diese Aktion
109 besitzen muss.
110
111 SR_EXCLUDE_RACE
112 Mitglieder aller in dieser Liste aufgefuehrten Rassen koennen
113 diese Aktion nicht ausfuehren.
114
115 SR_INCLUDE_RACE
116 Mitglieder aller NICHT in dieser Liste aufgefuehrten Rassen
117 koennen diese Aktion nicht ausfuehren.
118
119 SM_RACE
120 Hier kann pro Rasse ein Mapping mit besonderen (nur) fuer diese
121 Rasse geltenden Einschraenkungen vorgenommen werden. Als Keys
122 sind die in dieser Manpage beschriebenen Keys erlaubt, wobei
123 SM_RACE nicht rekursiv ausgewertet wird. Der Rassenname ist
124 gross geschrieben und "*" steht fuer alle Rassen.
125
126 SR_EXCLUDE_GUILD SR_INCLUDE_GUILD
127
128 Diese beiden Keys verhalten sich wie SR_*_RACE, nur dass hier
129 Gilden genannt werden.
130
131 SR_FUN
132 Hier kann eine Funktion in verschiedenen Formen zum Pruefen der
133 Restriktionen angegeben werden, siehe execute_anything(). Das
134 kann nuetzlich sein, um andere Restriktionen zu pruefen, wie das
135 Bestehen von Miniquests oder andere Faehigkeiten/Flags. Ist der
136 Test nicht bestanden, gibt die Funktion einen String zurueck.
137
138 SR_PROP
139 Hier kann ein Mapping mit Properties und zugehoerigen Werten
140 angegeben werden, die jeweils auf Identitaet geprueft werden.
141 Zusaetzlich sollte eine Meldung angegeben werden, die als
142 Fehlermeldung ausgegeben wird, wenn der Spieler die Bedingung
143 nicht erfuellt. Es sollte immer eine passende Meldung fuer den
144 Spieler eingebaut werden. Beispiel: ([ SR_PROP:
145 ([P_AUSGANG_ENTDECKT: 1; "Dein Schwert fluestert "
146
147 "veraergert: Ich werde Dir erst dann zu Diensten sein, wenn
148 Du " "Dich als wuerdig erwiesen hast!"]) ])
149
150 Aufgrund der Meldung wird empfohlen, SR_PROP nicht in
151 Restriktionen einzusetzen, die massenweise in Savefiles landen
152 (z.B. Spielersavefiles).
153
154 SR_QUEST
155 Hier kann ein String-Array mit den Namen (Keys) der Quest(s)
156 angegeben werden, die der Spieler bestanden haben muss, um die
157 Aktion ausfuehren zu koennen.
158
159 SQ_MINIQUEST
160 Hier kann entweder ein String-Array mit den Ladenamen der
161 vergebenden Objekte oder ein Int-Array mit den Index-Nummern
162 (IDs) der Miniquest(s) (empfohlen!) angegeben werden, die der
163 Spieler bestanden haben muss, um die Aktion ausfuehren zu
164 koennen.
165
166
167BEISPIELE
168=========
169
170 // #1 Levelbeschraenkung in der Abenteurergilde
171 AddSpell("feuerball",20,
172 ([SI_SKILLRESTR_LEARN:([P_LEVEL:15]), ...
173
174 // #2 Glaubenstest im Klerus
175 AddSpell("bete",
176 ([SI_SKILLRESTR_LEARN: ([P_GUILD_LEVEL : LVL_NOVIZE,
177 SR_FUN : #'glaubensTest ]), ...
178 // mit
179 static string glaubensTest(object pl) {
180 if (pl->QueryProp(K_STRENGTH) < 8000)
181 return ("Deine Glaubensstaerke laesst zu wuenschen uebrig!\n");
182 return 0;
183 }
184
185 // #3 SM_RACE-Modifikation der Restriktionen:
186 // haertere Restriktionen fuer Zwerge
187 // - hoeheres Level
188 // - zusaetzlich A_STR pruefen
189 ([P_LEVEL:15,
190 A_INT:10,
191 SM_RACE: (["Zwerg": ([P_LEVEL:17, A_STR:20])])])
192 // ist identisch zu
193 ([SM_RACE: (["*": ([P_LEVEL:15, A_INT:10]),
194 "Zwerg": ([P_LEVEL:17, A_INT:10, A_STR:20])])])
195
196
197SIEHE AUCH
198==========
199
200 execute_anything(L), AddSpell (Gilde), P_RESTRICTIONS
201
2023. Januar 2014, Arathorn