// 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;
}
}
|