// Ein komplexer Beispielraum (nach dem Original-Vorwagen in Kogida)
//
// ******************************* ACHTUNG ****************************
// * Bitte unbedingt erst raum1.c bis raum4.c ansehen und durchlesen, *
// * sonst koennte es hier Verstaendnisprobleme geben :-) Hier ist *
// * nichts kommentiert. Holger *
// ********************************************************************
//
// 05.08.99 Holger@Wunderland
//
inherit "std/room";
#include <properties.h>
private mapping apples;
void create() {
::create();
SetProp(P_INDOORS, 0);
SetProp(P_LIGHT, 2);
SetProp(P_INT_SHORT, "Vor dem Wohnwagen");
SetProp(P_INT_LONG,
"Du stehst auf einer schoenen grossen Wiese. Ueberall wachsen "
"wunderbare bunte Blumen. Insekten fliegen von Bluete zu Bluete "
"und laben sich an dem Nektar. Hier und da stehen gepflegte kleine "
"Obstbaeume, auf denen saftige Fruechte wachsen. Ein kleiner Huegel "
"verdeckt im Sueden die Sicht auf die Berge. Im Norden stehen mehrere "
"kleine gepflegte Haeuser. Eine kleine Treppe fuehrt in den Wohnwagen "
"im Westen. Im Osten kannst Du das Beispielgebiet betreten.\n"
"Ein Obstbaum.");
SetProp(P_INT_LONG_NIGHT,
"Der Mond und das von den Haeusern herueberscheinende Licht "
"erhellen die Wiese. Schemenhaft erkennst Du im Westen einen Wohnwagen "
"und im Sueden einen Huegel. Im Osten scheint ein breiterer Weg zu "
"liegen, der ins Beispielgebiet fuehrt.\n"
"Ein Obstbaum.");
SetProp(P_SMELL, "Hmmm. Es duftet nach verschiedensten Blumen hier!");
AddDetail(({"baeume","obstbaeume"}),
"Du siehst in der Naehe einige kleine Obstbaeume. Ein kleiner Apfelbaum faellt "
"Dir besonders auf.");
AddDetail(({"baum","obstbaum","silhouette","apfelbaum"}),
"Das ist ein Apfelbaum. Er hat einen kurzen dicken Stamm und eine "
"gut verschnittene runde Krone. Auf ihm wachsen grosse gelbe saftige "
"Aepfel.",
"In der Nacht wirkt die Silhouette des Baumes unheimlich.");
AddDetail(({"krone"}),
"Die Krone ist kreisrund. Du erkennst, dass der Baum sehr gut gepflegt "
"wird. Die duennen Aeste bewegen sich leicht im Wind. Immer, wenn ein "
"etwas staerkerer Windzug kommt, geht ein leichtes Rauschen durch die "
"Blaetter.",
"Unheimlich wirkt die Krone des Baumes bei Nacht. Wie Die dicken Aeste "
"scheinen sich wie riesige Arme im Wind zu bewegen.");
AddDetail(({"staemme","obstbaumstaemme","baumstaemme"}),
"Die Baeume haben kurze gerade Baumstaemme.");
AddDetail(({"stamm","obstbaumstamm","baumstamm"}),
"Ein gesunder, gerade gewachsener, kurzer Obstbaumstamm.",
"Ein kurzer Stamm. Viel kannst Du nicht erkennen.");
AddDetail(({"aepfel","fruechte","obst","frucht"}),
"Die Aepfel sehen einfach lecker aus. Ein besonders schoener faellt "
"Dir besonders auf.",
"In der Dunkelheit kannst Du nur einen einzigen Apfel entdecken.");
AddDetail(({"apfel"}),
"Der grosse leckere Apfel haengt ein ganzes Stueck ueber Dir. "
"Vielleicht faellt er herunter, wenn Du den Baum schuettelst.");
AddDetail(({"blatt","blaetter"}),
"Die gruenen Blaetter rauschen hin und wieder.",
"Das Rauschen der Blaetter durchbricht hin und wieder die Stille "
"der Nacht.");
AddDetail(({"ast","aeste","zweig","zweige","gabel","astgabel","arme","arm"}),
"Die dickeren Aeste gabeln sich in kleinere Zweige.",
"Der Baum wirkt gespenstig bei Nacht.");
AddDetail(({"rauschen"}),
"Lausche ihm doch mal...");
AddDetail(({"wind","windzug","boehe","boeh","windboehen","windboehe"}),
"Sanfte Windboehen bringen die Blaetter der Baeume zum rauschen. "
"Das Gras der Wiese neigt sich leicht.");
AddDetail(({"boden","wiese","naturwiese","pflanzen","pflanze"}),
"Saftige gruene Graeser bedecken den Boden. Ueberall stehen wunderbare "
"Blumen und seltene Kraeuter.",
"Ohne Licht wirst Du nicht viel erkennen koennen.");
AddDetail(({"blumen","blume"}),
"Du erkennst auf Anhieb Glockenblumen, Margeriten, Loewenzahn, Veilchen "
"Vergissmeinicht und wilde Orchideen sowie viele andere, deren Namen "
"Du nicht kennst.",
"Es ist viel zu dunkel, um die Blumen unterscheiden zu koennen.");
AddDetail(({"kraeuter","kraut"}),
"Du findest hier Sauerampfer, Rosmarin, Bassilikum, Kerbel, Pimpinelle "
"und viele andere...",
"Es ist viel zu dunkel, um die Kraeuter unterscheiden zu koennen.");
AddDetail(({"graeser","gras"}),
"Alle moeglichen Arten von Graesern wachsen auf der Wiese. Da stehen zum "
"Beispiel Simse, Wollgras, Zypergras und Canabis...",
"Es ist viel zu dunkel, um die Graeser unterscheiden zu koennen.");
AddDetail(({"namen","anhieb","arten","art"}),
"Mehr fallen Dir einfach nicht ein.");
AddDetail(({"glockenblumen","margeriten","loewenzahn","veilchen","vergissmeinicht",
"orchideen","glockenblume","margerite","orchidee"}),
"Auch diese Blume waechst hier auf der Wiese.",
"Die Blumen haben ihre Blueten alle geschlossen.");
AddDetail(({"sauerampfer","rosmarin","bassilikum","kerbel","pimpinelle","menge"}),
"Jede Menge Kraeuter kannst Du hier finden.",
"In der Nacht sieht ein Kraut aus, wie das andere.");
AddDetail(({"simse","wollgras","zypergras","canabis"}),
"Eine richtige Naturwiese besteht aus vielen Graesern...",
"Es ist zu dunkel, um etwas zu erkennen.");
AddDetail(({"blueten","bluetenvielfalt","vielfalt","bluete"}),
"Die bunten Blueten der Pflanzen sind reich an Nektar, der zahlreichen "
"Insekten als Nahrung dient.",
"Man kann die Bluetenvielfalt bei der Dunkelheit nur erahnen.");
AddDetail(({"nektar","nahrung","festmahl"}),
"Suesser gelber Nektar. Ein Festmahl fuer Insekten.",
"Die Blueten sind nachts alle geschlossen.");
AddDetail(({"insekten","insekt"}),
"Du siehst Schmetterlinge, Fliegen, Bienen, Wespen, Libellen usw...",
"Nur ein paar Muecken und Nachtfalter erkennst Du im Lichtschein des Mondes.");
AddDetail(({"schmetterlinge","schmetterling","fliegen","fliege","bienen","biene",
"wespen","wespe","libelle","libellen"}),
"Viele verschiedene Arten, die Du nicht kennst...",
"Nachts schlafen auch die meisten Insekten...");
AddDetail(({"muecken","muecke","nachtfalter","falter"}),
"Solche Insekten gibts hier wohl nur nachts...",
"Nur wenige schwirren durch die laue Nacht.");
AddDetail(({"wohnwagen","wagen","westen"}),
"Der Wohnwagen sieht aus, als haette er schon bessere Zeiten gesehen. An einigen "
"Stellen blaettert die Farbe ab. Die Reifen haben keine Luft mehr. Die Fenster "
"sind stark verstaubt. Die Tuer sieht nicht so aus, als sei sie noch zu "
"schliessen. Ueber eine kleine Holztreppe im Westen kannst Du ihn betreten. "
"Schau ihn Dir doch mal von innen an.",
"Der Wohnwagen wirkt gespenstisch in der Nacht. Du kannst ihn ueber eine "
"Holztreppe im Westen betreten.");
AddDetail(({"reifen","gummireifen","raeder","rad"}),
"Die alten Gummireifen auf den Raedern sind ueber die Jahre warscheinlich "
"poroes geworden und konnten die Luft nicht mehr halten.");
AddDetail(({"farbe","stellen"}),
"Die braune Farbe ist an etlichen Stellen abgeblaettert.");
AddDetail(({"fenster","staubschicht","staub","schicht"}),
"Die Fenster sind so verstaubt, dass man nicht mehr nach drinnen schauen "
"kann.",
"Ein schwacher Lichtschimmer dringt durch die verstaubten Scheiben von drinnen "
"heraus. Geh doch mal hinein.");
AddDetail(({"tuer"}),
"Die Tuer scheint ziemlich gelitten zu haben. Du kannst Dir nicht vorstellen, "
"dass man sie noch benutzen kann.",
"Die offne Tuer scheint nicht zu schliessen zu sein. Ein Lichtschimmer ist "
"drinnen zu sehen.");
AddDetail(({"treppe","holztreppe","stufen"}),
"Eine kleine dreistufige Treppe. Du kannst nichts besonderes daran entdecken.");
AddDetail(({"sueden","huegel","schemen"}),
"Ein kleiner gruener Huegel erhebt sich suedlich von Dir.",
"Nur schemenhaft erkennst Du im Sueden einen Huegel.");
AddDetail(({"haeuser","norden","haus","siedlung","ortschaft"}),
"Kleine blaue Haeuser kannst Du im Norden sehen. Da scheint eine kleine "
"Siedlung zu sein.",
"Schwaches Licht dringt von den Haeusern herueber. Mehr kannst Du bei der "
"Dunkelheit nicht erkennen.");
AddDetail(({"beispielgebiet", "weg","osten"}),
"Im Osten kannst Du das Beispielgebiet betreten. Dort findest Du Raeume, "
"Waffen, Ruestungen und andere Sachen, die Du Dir ansehen solltest, wenn "
"Du selbst soetwas erschaffen moechtest.");
AddDetail(({"beispiel", "beispiele", "waffen", "ruestungen", "raeume"}),
"Das Beispielgebiet liegt im Osten!");
AddDetail(({"sicht","Berge","aussicht"}),
"Der Huegel im Sueden versperrt die Aussicht auf die Berge.");
AddDetail(({"holz"}),
"Hier ist vieles aus Holz, was meinst Du?");
AddDetail(({"sonnenstrahlen","strahlen","sonnenstrahl","strahl"}),
"Die Sonnenstrahlen kitzeln Dich auf der Nase...");
AddDetail(({"lichtschimmer","schimmer"}),
"Es ist taghell, was meinst Du?",
"Schwaches Licht ist im Innern des Wohnwagens zu sehen.");
AddDetail(({"licht"}),
"Es ist taghell. Die Sonne scheint.",
"Es ist Nacht. Ein schwacher Lichtschimmer dringt aus dem Wohnwagen und von "
"den Haeusern herueber.");
AddDetail(({"nacht","stille","dunkelheit"}),
"Was meinst Du?",
"Es ist Nacht. Dunkelheit und Stille haben sich ueber die Wiese "
"gelegt. Nur das Rauschen des Obstbaumes durchbricht die Stille "
"hin und wieder.");
AddSoundDetail(({"baum","rauschen","blaetter","wind"}),
"Du bleibst mucksmaeuschenstill stehen und lauschst angestrengt dem "
"leisen Rauschen der Baeume. Doch so sehr Du Dich auch anstrengst, "
"Du kannst nichts besonderes hoeren.");
AddSmellDetail(({"blueten","bluete","blumen","blume"}),
"Hmmmmm. Wunderbare Sommerfrische. 8-)");
AddItem("/obj/zeitungsautomat", REFRESH_REMOVE);
AddExit("osten", "/doc/beispiele/raum1");
AddExit("westen", "/room/wohnwagen", "in den Wohnwagen");
AddCmd("schuettel|schuettle&apfelbaum|baum|obstbaum", "schuettel",
"Was willst Du denn schuetteln?");
AddCmd("kletter|klettre&apfelbaum|baum|obstbaum", "klettern",
"Wohin willst Du klettern?");
AddCmd("pfluecke|pflueck|ernte", "pflueck");
apples = ([ ]); // ein Mapping
}
int schuettel(string str) {
object f;
if( ( time() - apples[ this_player() ] ) < 600 ) {
write(break_string("Da Du erst vor kurzem einen Apfel gepflueckt hast, "
"beschliesst Du doch noch eine Weile zu warten. Du willst ja den "
"anderen auch noch was lassen, oder?"));
return 1;
}
if(deep_present("apfel", this_player())) {
write("Na, Du hast doch noch einen Apfel...\n");
return 1;
}
write(break_string(
"Du schuettelst kraeftig an dem Baum und der leckere Apfel loest sich. "
"Geschickt springst Du zurueck und faengst den Apfel auf, damit er "
"nicht zu Boden faellt und Flecke bekommt. Du steckst den Apfel erstmal "
"ein."));
say(break_string(
this_player()->name(WER, NAME_DEF|NAME_CAP)+" schuettelt den armen "
"kleinen Apfelbaum bis ein grosser gelber Apfel herunterfaellt."),
this_player());
if((f = clone_object("/doc/beispiele/apfel"))->move(this_player())<1) {
write(break_string(
"Du kannst den Apfel nicht mehr tragen. Er rutscht Dir aus der "
"Hand, rollt ins tiefe Gras und ist nicht mehr zu sehen."));
say(break_string(
this_player()->name(WER, NAME_DEF|NAME_CAP)+" versucht den Apfel "
"aufzufangen, doch der Apfel rollt ins tiefe Gras und ist "
"verschwunden."), this_player());
return f->remove(1);
}
apples = apples + ([ this_player() : time() ]);
return 1;
}
int pflueck(string str) {
string *blumen,*kraeuter,*graeser,*aepfel;
// Was kann man alles pfluecken?
// Welche Blumen
blumen = ({"blume","blumen","glockenblumen","margeriten","loewenzahn",
"veilchen","vergissmeinicht","orchideen","glockenblume",
"margerite","orchidee"});
// Welche Graeser
graeser = ({"gras","graeser","simse","wollgras","zypergras","canabis"});
// Aepfel
aepfel = ({"apfel","aepfel"});
// und Kraeuter
kraeuter = ({"kraut","kraeuter","sauerampfer","rosmarin","bassilikum",
"kerbel","pimpinelle"});
notify_fail("Was willst Du denn pfluecken?\n");
if (!str) return 0;
str = lower_case(str);
if (member(blumen, str) + member(graeser, str) +
member(aepfel, str) + member(kraeuter, str) < -3) return 0;
if (member(aepfel, str) > - 1) {
write(break_string("Du reckst Dich und streckst Dich, doch Du bist viel zu "
"klein, um den Apfel einfach so pfluecken zu koennen."));
say(break_string(this_player()->name(WER, NAME_CAP)+
" reckt sich und streckt sich, doch "+this_player()->QueryPronoun()+
" ist viel zu klein, um den Apfel einfach so pfluecken zu koennen."));
return 1;
}
if (member(blumen, str) > - 1) {
write(break_string("Du solltest die schoenen Blumen lieber in Ruhe wachsen lassen. "
"Stell Dir mal vor, jeder wuerde hier ein paar Blumen pfluecken..."));
return 1;
}
if (member(krauter, str) > - 1) {
write(break_string("Was willst DU denn mit Kraeutern???"));
return 1;
}
if (member(graeser, str) > - 1) {
write(break_string("Dir nutzen die Graeser ja gar nichts!"));
return 1;
}
return 0;
}
int klettern() {
write("Nein nein. Du wuerdest nur Zweige abbrechen!\n");
return 1;
}
int PreventInsert(object ob) {
if (ob && !living(ob) && ob->id("apfel")) {
tell_room(this_object(),
"Der Apfel rollt ins tiefe Gras und ist nicht mehr zu sehen.\n");
ob->remove(1);
return 1;
}
return 0;
}
|