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