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