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