blob: 2df21cc76b243112cbb4d07c2ecc552c169df1c2 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
2 Vererbungsbaeume der Basis-MUDlib
3 =================================
4
5Einfache Gegenstaende
6---------------------
7
8Die einfachsten Objekte der Basis-MudLib. Die Module, die von thing.c
9geerbt werden, enthalten die wichtigsten Funktionen und treten auch in
10den anderen Standardobjekten immer wieder auf.
11
12Da die Ausgabe des Namens eines Objektes (dieser wird in den
13description-Modulen definiert) immer mit einer Deklination verbunden ist,
14findet man in jedem Objekt, welches ein description.c erbt, auch
15thing/language.
16
17thing
18 |- thing/properties | Verwaltungsfunktionen des Property-Systems
19 |- thing/description | Aussehen, Name, IDs des Objektes
20 |- thing/moving | Bewegen und Zerstoeren des Objektes
21 |- thing/language | Deklination von Namen, Adjektiven etc.; Pronomina
22 |- thing/commands | vom Objekt definierte Kommandos
23 `- thing/restrictions | Gewicht: standardmaessig 1Kg
24
25
26Ruestungen
27----------
28
29Bis auf thing/restrictions.c verfuegt armour.c ueber saemtliche Funktionalitaet
30die auch thing.c zur Verfuegung stellt. Zusaetzlich gibt es noch ein Modul,
31welches die Ruestung erst zur Ruestung macht: armour/combat.c
32
33armour | evtl. ein "(angezogen") an Kurzbeschreibung haengen
34 |- thing/properties | Auch Ruestungen haben Eigenschaften
35 |- thing/description | Aussehen, Name, IDs der Ruestung
36 |- thing/commands | Kommandos sind auch moeglich
37 |- armour/moving | Beim Bewegen/Zerstoeren: Ruestung ausziehen...
38 | `- thing/moving | ...und dann erst Bewegen/Zerstoeren
39 |- armour/combat | Ruestungsklasse/-typ, Kampffunktion
40 `- thing/language | und noch was zum deklinieren.
41
42
43Waffen
44------
45
46Wie Ruestungen, unterscheiden sich Waffen von einfachen Gegenstaenden im
47wesentlichen nur durch die Kampffunktionen.
48
49weapon | evtl. ein "(gezueckt)" an Kurzbeschreibung haengen
50 |- weapon/moving | Waffe beim Bewegen/Zerstoeren erst wegstecken...
51 | `- thing/moving | ...und dann erst bewegen/zerstoeren
52 |- thing (s.o.) | Ansonsten alle thing-Eigenschaften
53 `- weapon/combat | Waffenklasse/-art, Schadenstyp, Kampffunktion
54
55
56Lichtquellen
57------------
58
59Lichtquellen sind (im Sinne der MudLib) normale Gegenstaende, die zusaetzlich
60die Eigenschaft haben, dass sie leuchten koennen (und auch verbrennen koennen).
61
62lightsource | Alles, was zum Leuchten noetig ist
63 `- thing (s.o.) | ansonsten ein ganz normaler Gegenstand
64
65
66unit-Objekte
67------------
68
69unit-Objekte sind Gegenstaende, bei denen es sinnvoll ist, dass ein einzelnes
70Objekt eine gewisse Anzahl von gleichartigen Objekten repraesentiert. Das
71beste Beispiel hierfuer ist das liebe Geld: statt 1000 einzelner Muenzen im
72Inventory zu haben, hat man nur ein einziges Geldobjekt, das einer Menge von
731000 Muenzen entspricht (die bei Kauf-/Verkaufsaktionen um eine entsprechende
74Menge erniedrigt oder erhoeht wird).
75Hierdurch wird a) die Uebersichtlichkeit erhoeht und b) natuerlich massig
76Speicher gespart.
77
78unit | alle unit-Eigenschaften (Gewicht, Menge, Bewegen, ...)
79 `- thing (s.o.) | ansonsten sind es normale Gegenstaende
80
81
82Spellbooks
83----------
84
85Fuer Gildenprogrammierer ist dies das Grundobjekt fuer das Zauberverzeichnis
86der Gilde.
87ACHTUNG: Obwohl thing.c geerbt wird, ist das Spellbook nicht zum clonen und
88"unter den Arm klemmen" gedacht! Vielmehr stellt thing.c hier im wesentlichen
89nur das Property- und das Sprachmodul zur Verfuegung!
90
91spellbook | Allgemeine Funktionen fuer Zaubersprueche
92 |- thing (s.o.) | hier nur wg. Properties und Deklinationen
93 `- restriction_checker | fuer Einschraenkungen beim Zaubern
94
95
96Behaelter
97---------
98
99Die bisher beschriebenen Objekte kann man zwar mit sich herumtragen (ausser
100Spellbooks), aber man kann nichts hineinstecken. Hierzu sind einige weitere
101Funktionen noetig, die container.c zur Verfuegung stellt.
102Im wesentlichen sind das in container/restrictions.c Funktionen zum Aus-
103waehlen von Objekten im Behaelter, zum Testen, ob der Behaelter noch weitere
104Objekte aufnehmen kann (gewichtsabhaengig) und zur Ermittlung des Gesamt-
105gewichts des Behaelters.
106In container/description.c wird der Inhalt des Behaelters in eine Beschreibung
107umgewandelt.
108
109container
110 |- thing/properties | DAS zentrale Modul...
111 |- thing/moving | Bewegen/Zerstoeren des Behaelters
112 |- thing/commands | Kommandos sind moeglich
113 |- container/description | Beschreibung des Inhalts
114 | `- thing/description | Lang- und Kurzbeschreibung
115 |- thing/language | Deklinationsmodul
116 `- container/restrictions | Gesamtgewicht, Objektauswahl
117 `- thing/restrictions | Standardgewicht: 1Kg
118
119Leichen
120-------
121
122Leichen sind Behaelter mit der zusaetzlichen Eigenschaft, dass sie mit der
123Zeit zerfallen. Ausserdem geben sie ggf. noch eine Meldung ueber den
124Moerderkanal aus
125
126corpse | Zerfallen, Moerdermeldung
127 `- container (s.o.) | sonst normaler Behaelter
128
129
130Raeume und ihre Abkoemmlinge
131----------------------------
132
133Raeume sind prinzipiell Behaelter mit Lang- und Kurzbeschreibung von INNEN
134und weiteren untersuchbaren Details (auch lesbare Details) sowie
135Ausgaengen und der Moeglichkeit vordefinierte Objekte im Raum zu plazieren.
136
137room
138 |- thing/properties | Eigenschaften des Raumes
139 |- thing/language | das obligatorische Sprachmodul
140 |- room/moving | nur Zerstoeren; KEIN(!) Bewegen
141 |- room/restrictions | Raeume werden nie voll
142 | `- container/restrictions | sonst die gleiche Funktionalitaet wie
143 | `- thing/restrictions | beim normalen Behaelter
144 |- room/description | Raumbeschreibung, Details, etc.
145 | `- container/description | Beschreibung des Inhalts
146 | `- thing/description | Beschreibung von aussen (selten sichtbar)
147 |- room/exits | Verwaltung der Ausgaenge
148 |- room/commands | notify_fail()s fuer "lies", "suche", "such"
149 | `- thing/commands | sonst normale Kommandobehandlung
150 |- room/items | Verwaltung von Objekten, die im Raum sein sollen
151 `- room/doors | Tueren (besondere Ausgaenge)
152
153
154Die Kneipe erweitert den Standardraum um Funktionen zur Definition der
155Speisen und Getraenke sowie um Befehle zum Bestellen und Ausgeben.
156
157pub
158 `- room (s.o.)
159
160
161Auch der Laden baut direkt auf dem Standardraum auf. Hier werden noch die
162ueblichen Ein- und Verkaufsbefehle zur Verfuegung gestellt.
163Jeder Laden benoetigt zusaetzlich einen Speicher, in dem verkaufte Objekte
164gelagert werden. Wenn der Laden schon beim ersten Betreten ueber ein
165gewisses Warensortiment verfuegen soll, kann man die mit AddItem()-Aufrufen
166im Speicher bewerkstelligen.
167
168laden
169 `- room (s.o.)
170
171store
172 |- thing/properties | noetig fuer room/items.c
173 `- room/items | vordefinierte Objekte im Speicher
174
175
176Die Post ist von der Programmierung her genau so zu behandeln wie ein
177normaler Raum. Die Postkabinen werden automatisch zur Verfuegung gestellt;
178man braucht sich in der Hinsicht um nichts zu kuemmern.
179
180post
181 `- (...) room
182
183
184Schiffe und aehnliche Transporter werden durch "bewegliche" Raeume realisiert.
185So hat man alle Beschreibungsmoeglichkeiten eines Raumes zur Verfuegung und
186kann (wie bei der Jolle geschehen) Ausgaenge in weitere Raume des Transporters
187legen (diese sind normale Raeume, KEINE Transporter!).
188Desweiteren sind Transporter die einzigen (Standard-)Raume, bei denen man
189auch die aeussere Lang- und Kurzbeschreibung zu sehen bekommt, weil man
190nicht nur in einem Transporter sein kann, sondern auch daneben stehen kann.
191
192transport | Funktionen zur Festlegung der Route, An- und Ablegen
193 |- room (s.o.) | die normalen Raumfunktionen
194 `- thing/moving | und hier steckt die Beweglichkeit
195
196
197Gilden
198------
199
200Gilden gibt es in zwei Ausfuehrungen: einmal als einfaches Gildenobjekt, dann
201aber auch als Gildenraum (wie zB. die Abenteurergilde).
202Waehrend das Gildenobjekt (gilden_ob) Funktionen zum Lernen von Faehigkeiten
203und Zauberspruechen, dem Gildenein- und -austritt sowie zum gildeninternen
204Aufstieg zur Verfuegung stellt (was zB. auch von einem NPC ausgeuebt werden
205koennte), verfuegt der Gildenraum zusaetzlich noch ueber Funktionen zum
206normalen Stufenaufstieg aufgrund von Abenteuer- und Erfahrungspunkten, die
207Questliste und die Kostenabfrage.
208
209gilden_ob | Ein-/Austritt, Lernen, Gildenaufstieg
210 `- restriction_checker | Beschraenkungen bei obigen Aktionen
211
212gilden_room
213 |- gilde | Stufenaufstieg, Questliste, Kosten
214 | `- room (s.o.) | normale Raumfunktionen
215 `- gilden_ob (s.o.) | Gildenaufstieg etc.
216
217NPCs
218----
219
220Das Opfer. Zumindest meistens...
221
222npc
223 |- thing/properties | Eigenschaften des NPC
224 |- living/description | Ausgabe des Gesundheitszustandes...
225 | `- container/description | ...zusaetzlich zu seinem Inhalt...
226 | `- thing/description | ...und seiner Beschreibung
227 |- living/life | Die Lebensfunktionen, Essen, Trinken, Gift
228 |- living/attributes | Die Verwaltung der Stats
229 |- living/moving | Bewegen von Lebewesen
230 |- living/skills | Funktionen fuer Faehigkeiten und Sprueche
231 | `- living/std_skills | und einige Standardfaehigkeiten
232 |- npc/combat | NPC-spezifische Kampffunktionen
233 | `- living/combat | der Kampf an sich
234 |- npc/chat | Sprueche a la Andy
235 |- npc/comm | Basiskommunikation: "sag", "echo", "emote"
236 |- container/restrictions | wie bei Behaeltern
237 | `- thing/restrictions
238 |- thing/language | obligatorisch...
239 |- npc/info | Antworten auf Fragen
240 |- npc/put_and_get | Reaktion auf erhaltene Gegenstaende
241 | `- living/put_and_get | Geben und Nehmen von Objekten
242 `- npc/guard | fuer Wach-NPCs
243
244Der intelligente NPC befindet sich noch in der Entwicklung.
245
246inpc
247 |- npc (s.o.) | Erst mal ein ganz normaler NPC...
248 |- inpc/nobank | ...der gegen Bankzweitis vorgehen kann...
249 | `- player/moneyhandler | ...und selbst Geld mitschleppt; ...
250 |- select | ...die beste Ausruestung erkennt und auch benutzt...
251 `- boozing | ...und in der Kneipe die beste Heilmoeglichkeit findet!
252
253
254Spieler- und Magiershell
255------------------------
256
257shells/magier | Hier auch noch Spielershells:
258 |- player/base | Einloggen, Grundfunktionen
259 | |- player/restrictions | Maximale Zuladung (Staerke), InsertHooks
260 | | `- container/restrictions | Maximalgewicht, Zuladungstest
261 | | `- thing/restrictions | Defaultgewicht
262 | |- living/attributes | Stats
263 | |- living/combat | Kampffunktionen
264 | |- living/put_and_get | Nehmen und Geben von Objekten
265 | |- thing/properties | DAS zentrale Modul...
266 | |- thing/language | Deklinationen
267 | |- player/description | Waffe/Ruestungen ausgeben
268 | | `- living/description | Gesundheitszustand anzeigen
269 | | `- container/description | Ermittlung des Inhalts
270 | | `- thing/description | Kurz- und Langbeschreibung; IDs
271 | |- player/moving | Bewegen/Zerstoeren: Zusatzchecks
272 | | `- living/moving | Bewegen/Zerstoeren von Lebewesen
273 | |- player/life | Zusatzchecks bei Lebensfunktionen
274 | | `- living/life | allgemeine Lebensfunktionen
275 | |- player/comm | allgemeine Kommunikation
276 | | `- player/channel | Kommunikation ueber die Kanaele
277 | |- player/moneyhandler | Geldverwaltung (auch fuer NPCs geeignet)
278 | |- player/command | Aliase, History, Parser
279 | |- living/skills | allg. Faehigkeitsfunktionen
280 | | `- living/std_skills | Standardfaehigkeiten
281 | |- player/quests | Verwaltung geloester Abenteuer
282 | |- player/potion | Verwaltung gefundener Zaubertraenke
283 | |- player/soul | Seelenkommandos (hilfe verben ;)
284 | |- player/viewcmd | Untersuchen etc.
285 | |- more | More() fuer lange Texte
286 | `- user_filter | Hilfsmodul fuer "kwer in muenster" etc.
287 | | Ab hier: Magiershell
288 |- shells/filesys/filesys | allgemeines Modul zur Dateibehandlung
289 | |- shells/filesys/manual | der "hilfe"-Befehl der Magier
290 | |- shells/filesys/primitives | low-level-Routinen
291 | |- shells/filesys/asynchron | zur Vermeidung von Lags
292 | `- shells/filesys/make | komfortables updaten von Objekten
293 `- player/objects | Objekte clonen, updaten, zerstoeren