Beispieldateien

Ein essbarer Apfel

----------



// Ein recht komplexer Beispiel-Apfel zum Essen
// (nach Original "apfel.c" in Kogida)
//
// 05.08.99 Holger@Wunderland


inherit "std/food";            // Wir erben das Standardessen

#include <defines.h>           // ein paar nuetzliches Defines
#include <properties.h>        // die wichtigen Properties
#include <food.h>              // die properties des Essens

// Prototypen
string ess_msg();              // Funktionen, die wir erst benutzen und
string beiss_msg();            // erst danach definieren, brauchen einen
                               // Prototyp, sonst bricht der Compiler ab,
                               // weil er die Funktion noch nicht kennt.
                               // Prototypen bestehen aus der Funktions-
                               // definition, gefolgt durch Semikolon

// Das create() wird immer gleich nach dem Clonen aufgerufen

void create() {

  // Bin ich kein Klon? -> Dann brich das create() gleich ab!
  if (!clonep()) return;

  // auch die Mutterklasse (food) braucht ihre create()
  // NIEMALS VERGESSEN!
  ::create();

  // Langbeschreibung setzen
  SetProp(P_LONG,
    "Ein aussergewoehnlich grosser Apfel. Er ist ganz gelb und hat ein "
    "rotes Baeckchen. Dir laeuft das Wasser im Mund zusammen.");

  // den Singular-Name setzen
  SetProp(P_NAME, "Apfel");

  // den Plural-Name setzen
  SetProp(P_PLURAL, "Aepfel");

  // Das Geschlecht setzen (maennlich)
  SetProp(P_GENDER, MALE);

  // Singular und Plural Id setzen (damit spricht man das Objekt an)
  AddId("apfel","aepfel");

  // einen gewissen Wert setzen
  SetProp(P_VALUE, 20);

  // die 'Sperrigkeit' bzw 'Unhandlichkeit' setzen
  SetProp(P_BULKINESS, 50);

  // das Gewicht setzen in Gramm
  SetProp(P_WEIGHT, 200);

  // jetzt die Werte die Essen-spezifisch sind
  // aus 5 Stuecken besteht der Apfel
  SetProp(P_PIECES, 5);

  // insgesamt heilt der frische Apfel 10 Lebenspunkte
  SetProp(P_HEAL, 10);

  // wie saettigt der Apfel? 
  SetProp(P_FILL, 10);

  // der Apfel vergammelt 14400 Sekunden = 4 Stunden = 1 WL-tag
  SetProp(P_ROTT, 14400);

  // der Geschmack des Apfels (fuers Essen und Kosten)
  SetProp(P_TASTE, "Er schmeckt fruchtig frisch und vitaminreich." );

  // Der Geruch des Apfels
  SetProp(P_SMELL, "Der Apfel duftet ganz wunderbar frisch und fruchtig.");

  // Wir aendern die Meldungen die beim Essen ausgegeben werden und
  // geben dafuer 2 Closures an (siehe Prototypen oberhalb und Funktionen
  // unterhalb von create()
  // Wenn man die Zeile weglaesst werden die Standardmeldungen erzeugt.
  SetProp(P_EAT, ({ #'ess_msg, 0, #'beiss_msg, 0 }) );

  // Wir setzen eigene Meldungen, wenn der Apfel vergammelt.
  // Wenn man die weglaesst, kommen Standardmeldungen.
  SetProp(P_ROTT_MSG, ({
    "Der schoene grosse gelbe Apfel in Deiner Tasche ist mittlerweile "
    "schon ganz fleckig und matschig geworden. Du entschliesst Dich, das "
    "Ding zu entsorgen, ehe er noch anfaengt zu wegzulaufen. Du aergerst "
    "Dich, dass Du den Apfel nicht eher gegessen hast und wirfst ihn weg.",
    "Du siehst, wie &&WER&& einen uralten braunen vergammelten Apfel "
    "aus seiner Tasche zieht und angwidert wegwirft.",
    "Der Apfel verschimmelt und die Ameisen machen sich darueber her. "
    "Nach kurzer Zeit schon ist er verschwunden."}) );

  // Jetzt setzen wir noch ein paar details, die die Spieler am Apfel
  // untersuchen koennen
  AddDetail(({"stiel","apfelstiel"}),
    "Der Apfel hat eine ganz normalen braunen Apfelstiel.");
  AddDetail(({"bluete","apfelbluete"}),
    "Der Apfel hat eine kleine braune vertrocknete Bluete.");
  AddDetail(({"farbe"}),
    "Der Apfel ist ganz gelb und hat auf einer Seite einen roten Fleck.");
  AddDetail(({"fleck","seite","baeckchen"}),
    "Der Apfel hat ein rotes Baeckchen. Du bekommst Lust hineinzubeissen.");

}

// Jetzt kommen noch die beiden Funktionen, die wir bei P_EAT angegeben
// haben. Sie geben den String zurueck der ausgegeben werden soll. Wenn man
// P_EAT nicht setzt, kann man die Funktionen hier und die Prototypen oben
// weglassen

string ess_msg() {
  return "Du beisst hemmungslos in den wunderbaren gelben "
    "saftigen Apfel hinein. Er schmeckt einfach phantastisch. Der suesse "
    "Fruchtsaft laeuft Dir rechts und links am Mundwinkel herunter. Du "
    "kannst Dich einfach nicht zuegeln und innerhalb kuerzester Zeit hast "
    "Du den ganzen Apfel aufgegessen. Den uebrig gebliebenen Stiel "
    "schnippst Du einfach weg.";
}

string beiss_msg() {
  return "Du beisst hemmungslos ein Stueck aus dem wunderbaren "
    "gelben saftigen Apfel. Er schmeckt einfach phantastisch. Der suesse "
    "Fruchtsaft laeuft Dir rechts und links am Mundwinkel herunter.";
}