! NPCs in Raumbeschreibungen - Beispiel 2 ! ! Hier werden die Beschreibungen zweier Personen zusammengefasst, wenn ! sie im selben Raum sind, so dass klar erkennbar ist, dass Mutter und ! Kind zusammengehören. Dazu wird 'describe' verwendet (§26 im DM4), ! weil man mit dieser Eigenschaft die Erwähnung eines Objekts in der ! Raumbeschreibung bequem unterdrücken kann, ohne das Attribut ! 'concealed' zu setzen. ! !----------------------------------------------------------------------- Constant Story "Am Strand"; Constant Headline "^Ein Beispiel für NPCs in Raumbeschreibungen^^"; Constant NO_SCORE; Include "Parser"; Include "Verblib"; Global Rufname; Object Duenen "In den Dünen" with name 'duene' 'sand' 'strand' 'meer' 'gras' 'wind', description "Der Wind weht sanft durch die Dünen und bewegt das hohe Gras, das sich weit im Osten, wo der Hauptteil der Insel liegt, erstreckt. Im Westen liegt ein weiter, weißer Strand, dahinter das graue Meer. Ein schmaler Pfad führt zwischen den Dünen nach Südosten, zurück zum Dorf.", w_to Strand, d_to Strand, se_to [; <>; ], out_to [; return self.se_to(); ], cant_go "Dort erstrecken sich die Dünen, du willst nicht dort hingehen. Der Strand ist im Westen.", has light; Object -> Mutter "jung@00 Frau" with name 'frau' 'jung' 'mutter' 'blond', description [; print "Die blonde Frau ist vielleicht Anfang dreißig. "; if (Kind in Strand) "Sie beobachtet ihr Kind, das am Strand spielt."; "Sie zuppelt gerade ihrem Kind den Anorak zurecht."; ], initial [; if (Kind in Strand) "Eine junge Frau steht hier mit verschränkten Armen; ihr Haar weht im Wind. Sie beobachtet ein Mädchen, wahrscheinlich ihr Kind, das am Strand spielt."; "Eine Mutter kniet hier bei ihrer Tochter, die sich nur widerwillig ihren Anorak zurechtmachen lässt."; ], life [; if (Kind notin Strand) "Die Frau scheint gerade mit ihrem Kind beschäftigt zu sein, da willst du nicht stören."; Ask, Tell: "Die Frau hört gar nicht zu, sie wendet nicht einmal den Blick von ihrer Tochter ab."; Give, Show: if (noun ~= Jever) "~Nein, danke~, sagt die Frau."; "~Danke~, sagt die Frau. Sie nimmt die Flasche und nimmt einen Schluck. Dann gibt sie dir die Flasche zurück. Und lächelt dabei."; default: "Deine Anstalten, ihre Aufmerksamkeit zu erringen, lassen die Frau eher kalt."; ], has female animate transparent; Object -> Kind_Deko "klein@00 Mädchen" with parse_name [w n; w = NextWord(); while (w==Rufname || WordInProperty(w, Kind, name)) { n++; w = NextWord(); } return n; ], description [; if (Kind in Strand) "Das Mädchen spielt am Strand."; "Das Mädchen kniet bei seiner Mutter."; ], before [; Examine: ; default: "Das Kind ist zu weit weg."; ], has female scenery concealed; Object Strand "Am Strand" with name 'duene' 'sand' 'strand' 'meer' 'wind' 'muschel' 'stein', description "Schier endlos erstreckt sich weißer, feiner Sand nach Norden und Süden. Im Westen spült das graue, wenig bewegte Meer stetig weiße Wellen an den Strand. Im Osten steigt der Strand an und endet in flachen Dünen.", e_to Duenen, u_to Duenen, cant_go "Dort erstreckt sich der Strand und das Meer, du willst nicht dort hingehen. Die Dünen sind im Osten.", has light; Object -> Kind "klein@00 Mädchen" with name 'maedchen' 'kind', parse_name [w n; w = NextWord(); while (w==Rufname || WordInProperty(w, self, name)) { n++; w = NextWord(); } return n; ], description [; if (Kind in Strand) "Das Mädchen ist ganz in die Muscheln und Steine vertieft, mit denen es Figuren in den feuchten Sand legt."; "Das Mädchen lässt sich gerade von ihrer Mutter den Anorak richten und ist wohl in Gedanken mehr beim Meer und den Muscheln."; ], describe [; if (self in Duenen) rtrue; "^Ein kleines Mädchen spielt am Strand mit Steinen und Muscheln."; ], time_left, time_out [ c; if (self in Strand) { c = 0; move self to Duenen; move Kind_Deko to Strand; StartTimer(self, 2); } else { c = 2; move self to Strand; move Kind_Deko to Duenen; StartTimer(self, random(4) + 1); } if (player in Strand) c++; switch (c) { 0: !Kind war am Strand, Spieler in den Dünen print "^~"; RunCapitalised(Umlautaddress, Rufname); "~, ruft die Mutter zum Strand. Als das Kind zu ihr schaut, winkt sie ihm zu. Pflichtschuldig kommt das Kind zu seiner Mutter. ~Komm mal her~, sagt die, kniet sich zu ihrem Kind und richtet ihm den Anorak."; 1: !Kind war am Strand, Spieler am Strand "^Das Kind schaut von seinen Muscheln auf, als die Mutter etwas ruft. Widerwillig, aber pflichtschuldig rennt es zu seiner Mutter, die sich vor es kniet und seinen Anorak zumacht."; 2: !Kind war bei der Mutter, Spieler in den Dünen "^~So~, sagt die Mutter, offenbar zufrieden mit der Kleiderordnung ihrer Tochter und steht auf. Kaum dass sich der Griff der Mutter gelöst hat, rennt das Mädchen wieder zu seinen Muscheln. Die Mutter schaut ihm lächelnd nach."; 3: !Kind war bei der Mutter, Spieler am Strand "^Freudestrahlend und mit ordentlich geschlossenem Anorak rennt das Kind wieder zu seinen Muscheln. Die Mutter steht mit verschränkten Armen bei den Dünen und sieht ihm nach."; } ], has neuter animate transparent; Object -> Mutter_Deko "jung@00 Frau" with name 'frau' 'jung' 'mutter' 'blond', description [; if (Kind in Strand) "Sie beobachtet ihr Kind, das am Strand spielt."; "Sie kniet gerade bei ihrem Kind."; ], before [; Examine: ; default: "Die Frau ist zu weit weg. Sie steht in den Dünen, im Osten."; ], has female scenery concealed; Object Jever "Flasche Jever" with name 'flasche' 'jever' 'herb' 'pils' 'bier' 'gruen' 'pulle', description "Eine grüne 0,33l-Flasche mit deinem Lieblings-Strandgetränk.", before [; Drink: "Du nimmst einen kleinen Schluck. Aaaah!"; ], has female; [ Initialise; move Jever to player; location = Duenen; StartTimer(Kind, random(3) + 1); Rufname = random('cornelia', 'rebecca', 'alessa', 'nadine', 'sofie', 'lena'); "^^^^^"; ]; Include "GermanG";