Dokumentation zu: vererbungsbaeume(STD)

HR Image


Vererbungsbaeume der Wunderland-Mudlib
======================================

 07.05.1996: ueberarbeitet von Yantro@Wunderland
 18.01.1999: aktualisiert von Holger@Wunderland

Einfache Gegenstaende
---------------------

Die einfachsten Objekte der Basis-MudLib. Die Module, die von thing.c
geerbt werden, enthalten die wichtigsten Funktionen und treten auch in
den anderen Standardobjekten immer wieder auf.

Da die Ausgabe des Namens eines Objektes (dieser wird in den
description-Modulen definiert) immer mit einer Deklination verbunden ist,
findet man in jedem Objekt, welches ein description.c erbt, auch
thing/language.

std/thing
 |- std/thing/properties    | Verwaltungsfunktionen des Property-Systems
 |- std/thing/description   | Aussehen, Name, IDs des Objektes
 |   `- std/thing/details   | Details, (Smell/Sound/Special/Read/etc)
 |- std/thing/moving        | Bewegen und Zerstoeren des Objektes
 |- std/thing/language      | Deklination von Namen, Adjektiven etc.
 |- std/thing/commands      | vom Objekt definierte Kommandos
 `- std/thing/restrictions  | Gewicht: standardmaessig 1Kg


Ruestungen
----------

Bis auf thing/restrictions.c verfuegt armour.c ueber saemtliche Funktionalitaet
die auch thing.c zur Verfuegung stellt. Zusaetzlich gibt es noch ein Modul,
welches die Ruestung erst zur Ruestung macht: armour/combat.c

std/armour                     | Lebenszeit, Flueche, usw.
 |- std/thing                  | wie oben
 |- std/armour/combat          | Ruestungsklasse/-typ, Kampffunktion
 `- std/armour/description     | Auch Ruestungen haben Eigenschaften
     `- std/thing/description  | wie oben

Waffen
------

Wie Ruestungen, unterscheiden sich Waffen von einfachen Gegenstaenden im
wesentlichen nur durch die Kampffunktionen.

std/weapon                    | Lebenszeit, Abnutzung, etc.
 |- std/thing                 | wie oben
 |- std/weapon/combat         | Waffenklasse/-art,Schadenstyp,Funktionen
 `- std/weapon/description    | Auch Waffen haben Eigenschaften
     `- std/thing/description | wie oben 

Lichtquellen
------------

Lichtquellen sind (im Sinne der MudLib) normale Gegenstaende, die zusaetzlich
die Eigenschaft haben, dass sie leuchten koennen (und auch verbrennen koennen).

std/lightsource       | Alles, was zum Leuchten noetig ist
 `- std/thing         | wie oben


Unit-Objekte
------------

Unit-Objekte sind Gegenstaende, bei denen es sinnvoll ist, dass ein einzelnes
Objekt eine gewisse Anzahl von gleichartigen Objekten repraesentiert. Das
beste Beispiel hierfuer ist das liebe Geld: statt 1000 einzelner Opale im
Inventory zu haben, hat man nur ein einziges Geldobjekt, das einer Menge von
1000 Opalen entspricht (die bei Kauf-/Verkaufsaktionen um eine entsprechende
Menge erniedrigt oder erhoeht wird). Hierdurch wird a) die Uebersichtlichkeit
erhoeht und b) natuerlich massig Speicher gespart.

std/unit        | unit-Eigenschaften (Gewicht, Menge, Bewegen...)
 `- std/thing   | wie oben

Container
---------

Die bisher beschriebenen Objekte kann man zwar mit sich herumtragen aber
man kann nichts hineinstecken. Hierzu sind einige weitere Funktionen 
noetig, die container.c zur Verfuegung stellt. Im wesentlichen sind das in
container/restrictions.c Funktionen zum Auswaehlen von Objekten im Container,
zum Testen, ob der Behaelter noch weitere Objekte aufnehmen kann
(gewichtsabhaengig) und zur Ermittlung des Gesamtgewichts des Behaelters.
In container/description.c wird der Inhalt des Behaelters in eine
Beschreibung umgewandelt.

std/container                  | Actions setzen usw.
 |- std/thing/properties       | wie oben
 |- std/container/moving       | Bewegen/Zerstoeren des Behaelters
 |   `- std/thing/moving       | wie oben
 |- std/thing/commands         | wie oben
 |- std/container/description  | Beschreibung des Inhalts
 |   `- thing/description      | wie oben
 |- std/thing/language         | wie oben
 `- std/container/restrictions | Gesamtgewicht, Objektauswahl
     `- std/thing/restrictions | wie oben

Behaelter
---------

Behaelter sind im Prinzip nur komfortable Container und bringen Funktionen
zum oeffnen und schliessen und dergleichen mit. Will man verschliessbare
Truhen/Saecke/Beutel proggrammieren, ist man mit Behaelter besser bedient.

std/behaelter       | Zusatzfunktionen (Oeffnen/Schliessen)
 `- std/container   | wie oben

Leichen
-------

Leichen sind Container mit der zusaetzlichen Eigenschaft, dass sie mit der
Zeit zerfallen. Ausserdem geben sie ggf. noch eine Meldung ueber den
Moerderkanal aus

std/corpse         | Zerfallen, Moerdermeldung
 `- std/container  | sonst normaler Behaelter


Raeume und ihre Abkoemmlinge
----------------------------

Raeume sind prinzipiell Container mit Lang- und Kurzbeschreibung von INNEN
und mit Ausgaengen und der Moeglichkeit vordefinierte Objekte im Raum zu 
plazieren.

std/room
 |- std/thing/properties           | wie oben
 |- std/thing/language             | wie oben
 |- std/room/moving                | nur Zerstoeren; KEIN(!) Bewegen
 |- std/room/restrictions          | Raeume werden nie voll
 |   `- std/container/restrictions | wie oben
 |- std/room/description           | Raumbeschreibungen etc.
 |    `- std/container/description | wie oben
 |- std/room/exits                 | Verwaltung der Ausgaenge
 |- std/room/commands              | notify_fail()s fuer "suche", "such"
 |   `- std/thing/commands         | wie oben
 |- std/room/items                 | Verwaltung von Objekten im Raum
 `- std/room/doors                 | Tueren (besondere Ausgaenge)


Die Kneipe erweitert den Standardraum um Funktionen zur Definition der
Speisen und Getraenke sowie um Befehle zum Bestellen und Ausgeben.

std/pub
  `- std/room    | wie oben


Auch der Laden baut direkt auf dem Standardraum auf. Hier werden noch die
ueblichen Ein- und Verkaufsbefehle zur Verfuegung gestellt.
Jeder Laden benoetigt zusaetzlich einen Speicher, in dem verkaufte Objekte
gelagert werden. Wenn der Laden schon beim ersten Betreten ueber ein
gewisses Warensortiment verfuegen soll, kann man die mit AddItem()-Aufrufen
im Speicher bewerkstelligen.

std/laden
 `- std/room    | wie oben

std/store       | modifiziertes Cleanup etc.
 `- std/room    | wie oben

Die Post ist von der Programmierung her genau so zu behandeln wie ein
normaler Raum. Die Postkabinen werden automatisch zur Verfuegung gestellt;
man braucht sich in der Hinsicht um nichts zu kuemmern.

std/post        | Post-Funktionen
 `- std/room    | wie oben


Schiffe und aehnliche Transporter werden durch "bewegliche" Raeume realisiert.
So hat man alle Beschreibungsmoeglichkeiten eines Raumes zur Verfuegung und
kann (wie bei der Jolle geschehen) Ausgaenge in weitere Raume des Transporters
legen (diese sind normale Raeume, KEINE Transporter!).
Desweiteren sind Transporter die einzigen (Standard-)Raume, bei denen man
auch die aeussere Lang- und Kurzbeschreibung zu sehen bekommt, weil man
nicht nur in einem Transporter sein kann, sondern auch daneben stehen kann.

transport         | Funktionen zur Festlegung der Route, An- und Ablegen
  |- room (s.o.)  | die normalen Raumfunktionen
  `- thing/moving | und hier steckt die Beweglichkeit



NPCs
----

Das Opfer. Zumindest meistens...

npc
  |- thing/properties            | Eigenschaften des NPC
  |- living/description          | Ausgabe des Gesundheitszustandes...
  |    `- container/description  | ...zusaetzlich zu seinem Inhalt...
  |	    `- thing/description | ...und seiner Beschreibung
  |- living/life                 | Die Lebensfunktionen, Essen, Trinken, Gift
  |- living/attributes           | Die Verwaltung der Stats
  |- living/moving               | Bewegen von Lebewesen
  |- living/skills               | Funktionen fuer Faehigkeiten und Sprueche
  |    `- living/std_skills      | und einige Standardfaehigkeiten
  |- npc/combat                  | NPC-spezifische Kampffunktionen
  |    `- living/combat          | der Kampf an sich
  |- npc/chat                    | Sprueche a la Andy
  |- npc/comm                    | Basiskommunikation: "sag", "echo", "emote"
  |- container/restrictions      | wie bei Behaeltern
  |    `- thing/restrictions
  |- thing/language              | obligatorisch...
  |- npc/info                    | Antworten auf Fragen
  |- npc/put_and_get             | Reaktion auf erhaltene Gegenstaende
  |    `- living/put_and_get     | Geben und Nehmen von Objekten
  `- npc/guard                   | fuer Wach-NPCs



Spieler- und Magiershell
------------------------

shells/magier                  | Hier auch noch Spielershells:
  |- player/base               | Einloggen, Grundfunktionen
  |    |- player/restrictions  | Maximale Zuladung (Staerke), InsertHooks
  |    |    `- container/restrictions   | Maximalgewicht, Zuladungstest
  |    |	 `- thing/restrictions  | Defaultgewicht
  |    |- living/attributes    | Stats
  |    |- living/combat        | Kampffunktionen
  |    |- living/put_and_get   | Nehmen und Geben von Objekten
  |    |- thing/properties     | DAS zentrale Modul...
  |    |- thing/language       | Deklinationen
  |    |- player/description   | Waffe/Ruestungen ausgeben
  |    |    `- living/description           | Gesundheitszustand anzeigen
  |    |	 `- container/description   | Ermittlung des Inhalts
  |    |	      `- thing/description  | Kurz- und Langbeschreibung; IDs
  |    |- player/moving        | Bewegen/Zerstoeren: Zusatzchecks
  |    |    `- living/moving   | Bewegen/Zerstoeren von Lebewesen
  |    |- player/life          | Zusatzchecks bei Lebensfunktionen
  |    |    `- living/life     | allgemeine Lebensfunktionen
  |    |- player/comm          | allgemeine Kommunikation
  |    |    `- player/channel  | Kommunikation ueber die Kanaele
  |    |- player/moneyhandler  | Geldverwaltung (auch fuer NPCs geeignet)
  |    |- player/command       | Aliase, History, Parser
  |    |- living/skills        | allg. Faehigkeitsfunktionen
  |    |    `- living/std_skills | Standardfaehigkeiten
  |    |- player/quests        | Verwaltung geloester Abenteuer
  |    |- player/potion        | Verwaltung gefundener Zaubertraenke
  |    |- player/soul          | Seelenkommandos (hilfe verben ;)
  |    |- player/viewcmd       | Untersuchen etc.
  |    |- more                 | More() fuer lange Texte
  |    `- user_filter          | Hilfsmodul fuer "kwer in muenster" etc.
  |                               | Ab hier: Magiershell
  |- shells/filesys/filesys         | allgemeines Modul zur Dateibehandlung
  |    |- shells/filesys/manual     | der "hilfe"-Befehl der Magier
  |    |- shells/filesys/primitives | low-level-Routinen
  |    |- shells/filesys/asynchron  | zur Vermeidung von Lags
  |    `- shells/filesys/make       | komfortables updaten von Objekten
  `- player/objects                 | Objekte clonen, updaten, zerstoeren


Start » Magierhandbuch » Docu » Std » Vererbungsbaeume Letzte Generierung: 01.05.2021, 16:59
Valid HTML 4.01!