Ein komplexer Beispielraum
![]()
// 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; } |
| Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Vorwagen | |
|
| |