Beispieldateien

Eine Kneipe

----------



// Beispiel-Kneipe

// überarbeitet 06.06.2007 by Largo@Wunderland

inherit "pub";    // wir erben vom std-pub

#include <coineage.h> // hierher kommt das Makro CT_WUNDERLAND
#include <defines.h>  // hier sind Makros wie PL (als this_player()) definiert
#include <properties.h>

void create() 
{
  ::create();         // auch das create vom std-pub aufrufen!

  SetProp(P_CURRENCY, CT_WUNDERLAND); // in welcher waehrung kassieren wir?

  SetProp(P_INDOORS, 1);
  SetProp(P_INT_SHORT, "Eine Bar");
  SetProp(P_INT_LONG,
    "Du befindest Dich in einer Beispielbar. Der Barkeeper ist nur in der "
    "Beschreibung vorhanden. Mit dem Kommando 'menue' bekommst Du eine "
    "Uebersicht ueber das Speisen- und Getraenkeangebot.");

  AddDetail(({"menue","getraenk","getraenke", "speisen"}),
    "Tipp einfach 'menue' ein.");
  AddDetail("boden",
    "Ein ganz normaler Boden.");
  AddDetail(({"decke","dach","kopf"}),
    "Sei froh, dass Du hier ein Dach ueber dem Kopf hast.");
  AddDetail(({"wand","waende"}),
    "An den Waenden kannst Du nichts besonderes sehen.");
  AddDetail(({"barkeeper"}),
    "Der Barkeeper ist nur als Detail hier.");

  // Speisen und Getraenke werden mittels AddFoodOrDrink eingebunden
  // Dazu geben wir die Rohwerte der Speisen und Getraenke an (siehe dazu
  // die Hilfe von AddFoodOrDrink)
  // (ml bzw. g des Essens/Getraenks, Alkohol in %, Heilfaktoren fuer 
  // LP und MP dienen als Grundlage fuer die Berechnung des endgueltigen
  // Heilwertes.)
  // Beim whiskey und beim brot geben wir texte aus, die der Spieler beim
  // bestellen bekommt. Beim Wasser soll kein Text ausgegeben werden.
  // Dazu benennen wir jeweils den Namen einer Funktion, die vorm Verzehr
  // ausgefuehrt werden soll 
  // Wir geben keinen Festpreis an, der Preis wird automatisch berechnet.

  // Ein alkoholisches Getraenk
  AddFoodOrDrink("Whiskey", ({"whiskey"}), 40, 0, 10, 1.0,
    1.0, 0, "whiskey", 0, 0);
  // Ein antialkoholisches Getraenk
  AddFoodOrDrink("Wasser", ({"wasser"}), 200, 0, 0, 1.0,
    1.0);
  // Eine Speise
  AddFoodOrDrink("Brot", ({"brot"}), 0, 30, 0, 1.0,
    1.0, 0, "brot", 0, 0);    
  // noch ein Getraenk - hier geben wir die Meldungen gleich mit an
  AddFoodOrDrink("Drachenblut",({"drachenblut","blut"}), 600, 0, 3, 1.1, 0.9, 0,
    ({"Der Barkeeper stellt Dir ein Glas Drachenblut hin.",
      "Der Barkeeper stellt &&WEM&& ein Glas Drachenblut hin."}), 0, 0);

}


void brot(string Name, int ok) 
{
  switch (ok) 
  {
    // Das Essen/Trinken hat geklappt, der Spieler lebt noch ;-)
    case  1:  
      write(break_string("Der Barkeeper knallt Dir eine trockene Scheibe "
        "Brot hin, die Du sofort isst."));
      say(break_string("Der Barkeeper knallt "+
        PL->name(WEM, NAME_DEF)+" eine trockene Scheibe Brot hin, "
        "die "+this_player()->QueryPronoun(WER)+" sofort isst."));
      break;
    // Der Spieler konnte nix essen/trinken aus irgendeinem Grund
    case  0:
      write("Oh, Du magst nicht? Das Brot wird wieder weggeraeumt.\n");
      break;
    // Das Essen/Trinken hat geklappt, der Spieler ist daran gestorben
    case -1: 
      say("Das ist "+PL->name(WEM, NAME_DEF)+" wohl nicht gut bekommen.\n", PL);
      if (PL)
        write("Du hoerst den Barkeeper in der Ferne lachen.\n");
      break;
    default:
      break;
  }  
}


void whiskey(string Name, int ok) 
{
  switch (ok) 
  {
    case  1:  
      write(break_string("Der Barkeeper stellt Dir ein kleines Glas billigen "
        "Whiskey hin. Du trinkst ihn, obwohl er nicht schmeckt."));
      say(break_string("Der Barkeeper stellt "+
        PL->name(WEM, NAME_DEF)+" ein Glas billigen Whiskey hin."));
     break;
   case  0:
     write("Oh, Du magst nicht? Der Whiskey wird wieder weggeraeumt.\n");
     break;
   case -1: 
     say("Das ist "+PL->name(WEM, NAME_DEF)+" wohl nicht gut bekommen.\n", PL);
     if (PL)
       write("Du hoerst den Barkeeper in der Ferne lachen.\n");
     break;
   default:
     break;
  }  
}


Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Kneipe
Valid HTML 4.01!