/* Dies ist ein kleiner Raum als Beispiel fuer Lcontainer
**
** Fiona 8/96
*/
inherit "std/room";
#include <properties.h>
#define MYDIR "/doc/beispiele/lcontainer/"
int inh_becken, inh_wanne;
string wanne();
string becken();
string saft();
string oel();
void create()
{
::create();
SetProp(P_INT_SHORT, "Im Panschraum");
SetProp(P_INT_LONG,
"Du stehst in Fionas Panschraum. Hier kann man nach Herzenslust "
"mit Fluessigkeiten umherpuetschern und neue Gefaesse ausprobieren. "
"Ein roter Knopf grinst Dich an.\n"
"Du siehst ein kleines Becken und einen Wasserhahn sowie eine "
"Wanne.");
SetProp(P_INDOORS, 1);
SetProp(P_LIGHT, 2);
AddDetail("becken", #'becken);
AddDetail("wanne", #'wanne);
AddDetail(({"saft","kirschsaft"}), #'saft);
AddDetail("oel", #'oel);
AddDetail(({"wasserhahn","hahn"}),
"Hier bekommt man wohl Wasser.");
AddDetail(({"knopf","resetknopf"}), "Er loest einen reset() aus.");
AddItem(MYDIR+"glas", REFRESH_DESTRUCT);
AddItem(MYDIR+"flasche", REFRESH_DESTRUCT);
AddItem(MYDIR+"eimer", REFRESH_DESTRUCT);
AddItem(MYDIR+"kanister", REFRESH_DESTRUCT);
AddItem(MYDIR+"fass", REFRESH_DESTRUCT);
AddExit("gilde","/room/gilde");
AddCmd(({"druecke","drueck"}), "drueck");
inh_becken=3000;
inh_wanne=1500;
}
string becken()
{
return "In dem Becken ist "+to_string(inh_becken)+"ml Oel.";
}
string wanne()
{
if (inh_wanne)
return "Sie ist mit "+to_string(inh_wanne)+"ml Kirschsaft gefuellt.";
return "Sie ist leider schon leer...";
}
string saft()
{
if (inh_wanne)
return "Leckerster Kirschsaft sage ich nur!";
return "Sowas kannst Du hier nicht finden.";
}
string oel()
{
if (inh_becken) return "Ekeliges Oel, untrinkbar.";
return "Sowas kannst Du hier nicht finden.";
}
int GiveLiquid(string id, int am, object ob)
{
int given;
given = 0;
switch (id)
{
case "wanne": case "saft": case "kirschsaft":
if (!inh_wanne)
{
write("Die Wanne ist schon leer.\n");
return -2;
}
if (am > inh_wanne) am = inh_wanne;
given = ob->AddLiquid(am, ({"kirschsaft","saft"}),
"leckerem Kirschsaft", am/10, am/120, 0, am/200);
if (given > 0)
{
inh_wanne -= given;
write("Du schoepfst Dir Saft ab.\n");
say(this_player()->name(WER, NAME_DEF|NAME_CAP)+" schoepft Saft ab.\n");
}
break;
case "wasser": case "wasserhahn": case "hahn":
given = ob->AddLiquid(am, "wasser", "Wasser", am/10, 0, 0, am/300);
break;
case "becken": case "oel":
if (!inh_becken)
{
write("Das Becken ist schon leer.\n");
return -2;
}
if (am > inh_becken) am = inh_becken;
given = ob->AddLiquid(am, "oel", "stinkendem Oel", am*2, 0, 0, 0, (int)(0.8*am), 1);
if (given > 0)
{
inh_becken -= given;
write("Du schoepfst etwas Oel ab.\n");
say(this_player()->name(WER, NAME_DEF|NAME_CAP)+" schoepft etwas Oel ab.\n");
}
break;
}
return given;
}
void reset()
{
object ob;
if (inh_becken < 3000)
{
inh_becken = 3000;
tell_room(this_object(), "Das Becken fuellt sich auf...\n");
}
if (inh_wanne < 1500) {
inh_wanne = 1500;
tell_room(this_object(), "Die Wanne fuellt sich auf...\n");
}
if (ob = present("fass")) ob->reset();
return ::reset();
}
int drueck(string str)
{
notify_fail("Was willst Du druecken?\n");
if (str != "knopf" && str != "resetknopf") return 0;
if (!random(2))
{
write("Hmm, der Knopf klemmt irgendwie.\n");
return 1;
}
write("Es klickt...\n");
reset();
return 1;
}
|