Ein Testraum fuer die Lcontainer
![]()
/* 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; } |
| Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Testraum | |
|
| |