// Ein einfacher Raum mit einer ebenso einfachen Aktion
// ----------------------------------------------------
// 05.06.2007 Sunrise@Wunderland
inherit "std/room"; // Standard-Raum erben
#include <properties.h> // wichtige Properties holen
#include <defines.h> // praktische Makros holen, z.B. PL fuer this_player()
// das spart uns spaeter Schreibarbeit
void create()
{
// Der Standard-Raum braucht auch sein create()
// NIEMALS VERGESSEN!
::create();
// Der Raum ist draussen:
SetProp(P_INDOORS, 0);
// Der Raum ist tagsueber hell, nachts benoetigt man eine Lichtquelle
SetProp(P_LIGHT, 1);
// die Kurzbeschreibung des Raumes
SetProp(P_INT_SHORT, "Auf einer Wiese");
// die Langbeschreibung des Raumes, die man auch via "schau" sieht
SetProp(P_INT_LONG, "Eine huebsche bunte Wiese. Die Blumen wiegen "
"sich im lauen Sommerwind und die Voegel zwitschern. Ein Sonnenstrahl "
"kitzelt Dich an der Nase und laedt Dich zum Traeumen ein.");
// ein paar Details
AddDetail(({"boden", "gras"}), // Einen Boden sollte es immer geben
"Dichtes gruenes Gras waechst hier und dazwischen lauter bunte "
"Sommerblumen.");
AddDetail(({"sonnenstrahl"}),
"Er kitzelt Deine Nase.");
AddDetail(({"nase"}),
"Hatschi!");
// und weitere Details nach dem gleichen Schema
// wir wollen traeumen
// Der erste Teil des Kommandos ist quasi das Eingabe-Muster, das
// der Spieler erfuellen muss. In diesem Fall kann er entweder
// 'traeum' oder 'traeume' angeben. Das | steht fuer 'oder'.
// Danach steht die Funktion, die aufgerufen werden soll. Diese
// steht dann ausserhalb des 'create()'
AddCmd("traeum|traeume", "traeum_funktion");
}
// Kommandos, die ueber AddCmd eingebaut werden, erfordern immer eine
// Funktion vom Typ int.
int traeum_funktion()
{
// jetzt geben wir einen Text an den Spieler aus
// da es ein langer Text ist, lassen wir ihn mit break_string
// umbrechen
write(break_string(
"Du schliesst die Augen und legst Dich ins weiche Gras zurueck. "
"Der laue Sommerwind streift ueber Dein Haar und die Hitze flimmert "
"rotbunt vor Deinen geschlossenen Augen. Nach einer Weile stehst "
"Du wieder auf, bereit zu neuen Abenteuern."));
// und jetzt einen Text an die Umstehenden
// PL ist die Abkuerzung fuer this_player(). Das ist in <defines.h>
// definiert. this_player() ist das Objekt des agierenden Spielers
// name() gibt uns den Namen dessen an
// say() hat den Aufbau: say(text, an_wen_soll_der_text_nicht_gehen);
say(break_string(
PL->name(WER, NAME_DEF|NAME_CAP)+" legt sich ins weiche Gras und "
"ruht sich etwas aus."), PL);
// jetzt sind wir fertig, die Funktion wird mit
return 1;
// abgeschlossen
}
|