MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | |
| 2 | Vererbungsbaeume der Basis-MUDlib |
| 3 | ================================= |
| 4 | |
| 5 | Einfache Gegenstaende |
| 6 | --------------------- |
| 7 | |
| 8 | Die einfachsten Objekte der Basis-MudLib. Die Module, die von thing.c |
| 9 | geerbt werden, enthalten die wichtigsten Funktionen und treten auch in |
| 10 | den anderen Standardobjekten immer wieder auf. |
| 11 | |
| 12 | Da die Ausgabe des Namens eines Objektes (dieser wird in den |
| 13 | description-Modulen definiert) immer mit einer Deklination verbunden ist, |
| 14 | findet man in jedem Objekt, welches ein description.c erbt, auch |
| 15 | thing/language. |
| 16 | |
| 17 | thing |
| 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 | |
| 26 | Ruestungen |
| 27 | ---------- |
| 28 | |
| 29 | Bis auf thing/restrictions.c verfuegt armour.c ueber saemtliche Funktionalitaet |
| 30 | die auch thing.c zur Verfuegung stellt. Zusaetzlich gibt es noch ein Modul, |
| 31 | welches die Ruestung erst zur Ruestung macht: armour/combat.c |
| 32 | |
| 33 | armour | 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 | |
| 43 | Waffen |
| 44 | ------ |
| 45 | |
| 46 | Wie Ruestungen, unterscheiden sich Waffen von einfachen Gegenstaenden im |
| 47 | wesentlichen nur durch die Kampffunktionen. |
| 48 | |
| 49 | weapon | 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 | |
| 56 | Lichtquellen |
| 57 | ------------ |
| 58 | |
| 59 | Lichtquellen sind (im Sinne der MudLib) normale Gegenstaende, die zusaetzlich |
| 60 | die Eigenschaft haben, dass sie leuchten koennen (und auch verbrennen koennen). |
| 61 | |
| 62 | lightsource | Alles, was zum Leuchten noetig ist |
| 63 | `- thing (s.o.) | ansonsten ein ganz normaler Gegenstand |
| 64 | |
| 65 | |
| 66 | unit-Objekte |
| 67 | ------------ |
| 68 | |
| 69 | unit-Objekte sind Gegenstaende, bei denen es sinnvoll ist, dass ein einzelnes |
| 70 | Objekt eine gewisse Anzahl von gleichartigen Objekten repraesentiert. Das |
| 71 | beste Beispiel hierfuer ist das liebe Geld: statt 1000 einzelner Muenzen im |
| 72 | Inventory zu haben, hat man nur ein einziges Geldobjekt, das einer Menge von |
| 73 | 1000 Muenzen entspricht (die bei Kauf-/Verkaufsaktionen um eine entsprechende |
| 74 | Menge erniedrigt oder erhoeht wird). |
| 75 | Hierdurch wird a) die Uebersichtlichkeit erhoeht und b) natuerlich massig |
| 76 | Speicher gespart. |
| 77 | |
| 78 | unit | alle unit-Eigenschaften (Gewicht, Menge, Bewegen, ...) |
| 79 | `- thing (s.o.) | ansonsten sind es normale Gegenstaende |
| 80 | |
| 81 | |
| 82 | Spellbooks |
| 83 | ---------- |
| 84 | |
| 85 | Fuer Gildenprogrammierer ist dies das Grundobjekt fuer das Zauberverzeichnis |
| 86 | der Gilde. |
| 87 | ACHTUNG: 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 |
| 89 | nur das Property- und das Sprachmodul zur Verfuegung! |
| 90 | |
| 91 | spellbook | Allgemeine Funktionen fuer Zaubersprueche |
| 92 | |- thing (s.o.) | hier nur wg. Properties und Deklinationen |
| 93 | `- restriction_checker | fuer Einschraenkungen beim Zaubern |
| 94 | |
| 95 | |
| 96 | Behaelter |
| 97 | --------- |
| 98 | |
| 99 | Die bisher beschriebenen Objekte kann man zwar mit sich herumtragen (ausser |
| 100 | Spellbooks), aber man kann nichts hineinstecken. Hierzu sind einige weitere |
| 101 | Funktionen noetig, die container.c zur Verfuegung stellt. |
| 102 | Im wesentlichen sind das in container/restrictions.c Funktionen zum Aus- |
| 103 | waehlen von Objekten im Behaelter, zum Testen, ob der Behaelter noch weitere |
| 104 | Objekte aufnehmen kann (gewichtsabhaengig) und zur Ermittlung des Gesamt- |
| 105 | gewichts des Behaelters. |
| 106 | In container/description.c wird der Inhalt des Behaelters in eine Beschreibung |
| 107 | umgewandelt. |
| 108 | |
| 109 | container |
| 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 | |
| 119 | Leichen |
| 120 | ------- |
| 121 | |
| 122 | Leichen sind Behaelter mit der zusaetzlichen Eigenschaft, dass sie mit der |
| 123 | Zeit zerfallen. Ausserdem geben sie ggf. noch eine Meldung ueber den |
| 124 | Moerderkanal aus |
| 125 | |
| 126 | corpse | Zerfallen, Moerdermeldung |
| 127 | `- container (s.o.) | sonst normaler Behaelter |
| 128 | |
| 129 | |
| 130 | Raeume und ihre Abkoemmlinge |
| 131 | ---------------------------- |
| 132 | |
| 133 | Raeume sind prinzipiell Behaelter mit Lang- und Kurzbeschreibung von INNEN |
| 134 | und weiteren untersuchbaren Details (auch lesbare Details) sowie |
| 135 | Ausgaengen und der Moeglichkeit vordefinierte Objekte im Raum zu plazieren. |
| 136 | |
| 137 | room |
| 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 | |
| 154 | Die Kneipe erweitert den Standardraum um Funktionen zur Definition der |
| 155 | Speisen und Getraenke sowie um Befehle zum Bestellen und Ausgeben. |
| 156 | |
| 157 | pub |
| 158 | `- room (s.o.) |
| 159 | |
| 160 | |
| 161 | Auch der Laden baut direkt auf dem Standardraum auf. Hier werden noch die |
| 162 | ueblichen Ein- und Verkaufsbefehle zur Verfuegung gestellt. |
| 163 | Jeder Laden benoetigt zusaetzlich einen Speicher, in dem verkaufte Objekte |
| 164 | gelagert werden. Wenn der Laden schon beim ersten Betreten ueber ein |
| 165 | gewisses Warensortiment verfuegen soll, kann man die mit AddItem()-Aufrufen |
| 166 | im Speicher bewerkstelligen. |
| 167 | |
| 168 | laden |
| 169 | `- room (s.o.) |
| 170 | |
| 171 | store |
| 172 | |- thing/properties | noetig fuer room/items.c |
| 173 | `- room/items | vordefinierte Objekte im Speicher |
| 174 | |
| 175 | |
| 176 | Die Post ist von der Programmierung her genau so zu behandeln wie ein |
| 177 | normaler Raum. Die Postkabinen werden automatisch zur Verfuegung gestellt; |
| 178 | man braucht sich in der Hinsicht um nichts zu kuemmern. |
| 179 | |
| 180 | post |
| 181 | `- (...) room |
| 182 | |
| 183 | |
| 184 | Schiffe und aehnliche Transporter werden durch "bewegliche" Raeume realisiert. |
| 185 | So hat man alle Beschreibungsmoeglichkeiten eines Raumes zur Verfuegung und |
| 186 | kann (wie bei der Jolle geschehen) Ausgaenge in weitere Raume des Transporters |
| 187 | legen (diese sind normale Raeume, KEINE Transporter!). |
| 188 | Desweiteren sind Transporter die einzigen (Standard-)Raume, bei denen man |
| 189 | auch die aeussere Lang- und Kurzbeschreibung zu sehen bekommt, weil man |
| 190 | nicht nur in einem Transporter sein kann, sondern auch daneben stehen kann. |
| 191 | |
| 192 | transport | 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 | |
| 197 | Gilden |
| 198 | ------ |
| 199 | |
| 200 | Gilden gibt es in zwei Ausfuehrungen: einmal als einfaches Gildenobjekt, dann |
| 201 | aber auch als Gildenraum (wie zB. die Abenteurergilde). |
| 202 | Waehrend das Gildenobjekt (gilden_ob) Funktionen zum Lernen von Faehigkeiten |
| 203 | und Zauberspruechen, dem Gildenein- und -austritt sowie zum gildeninternen |
| 204 | Aufstieg zur Verfuegung stellt (was zB. auch von einem NPC ausgeuebt werden |
| 205 | koennte), verfuegt der Gildenraum zusaetzlich noch ueber Funktionen zum |
| 206 | normalen Stufenaufstieg aufgrund von Abenteuer- und Erfahrungspunkten, die |
| 207 | Questliste und die Kostenabfrage. |
| 208 | |
| 209 | gilden_ob | Ein-/Austritt, Lernen, Gildenaufstieg |
| 210 | `- restriction_checker | Beschraenkungen bei obigen Aktionen |
| 211 | |
| 212 | gilden_room |
| 213 | |- gilde | Stufenaufstieg, Questliste, Kosten |
| 214 | | `- room (s.o.) | normale Raumfunktionen |
| 215 | `- gilden_ob (s.o.) | Gildenaufstieg etc. |
| 216 | |
| 217 | NPCs |
| 218 | ---- |
| 219 | |
| 220 | Das Opfer. Zumindest meistens... |
| 221 | |
| 222 | npc |
| 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 | |
| 244 | Der intelligente NPC befindet sich noch in der Entwicklung. |
| 245 | |
| 246 | inpc |
| 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 | |
| 254 | Spieler- und Magiershell |
| 255 | ------------------------ |
| 256 | |
| 257 | shells/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 |