blob: 5ffe11706e870248ca531766e1f42965f7185089 [file] [log] [blame]
#pragma strong_types, save_types, rtt_checks, pedantic
inherit "std/npc";
#include <properties.h>
protected string query_kekse();
protected string question_gold();
protected void create() {
if (!clonep(this_object())) return;
::create();
SetProp(P_SHORT, "Ein Monster");
SetProp(P_LONG, break_string(
"Das Monster sieht dich hungrig an. "
"Wahrscheinlich will es Geld oder Kekse.", 78));
SetProp(P_NAME, "Monster");
SetProp(P_GENDER, NEUTER);
AddId("monster");
SetProp(P_RACE, "Monster");
SetProp(P_XP, 0);
SetProp(P_BODY, 50);
SetProp(P_SIZE, random(20)+110);
// Beispiel 1
AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
// Beispiel 2
AddInfo(({"knete","kohle"}),
"sagt: ich habe so etwas nicht.");
AddInfo("geld",
"Ich habe zwar kein Geld, aber [...] blablabla [...] blub muh quak "
"lorem blupsum Umbruch now!",
"sagt: ");
AddInfo("muenzen",
"fluestert: Du willst Geld?",
0,
"fluestert @WEM etwas zu.");
// Beispiel 3
AddInfo(({"keks","kekse"}),
#'query_kekse, // ein Verweis auf die Funktion
"sagt: ");
// Beispiel 5
AddInfo("gold", #'question_gold, "murmelt: ", 1);
}
protected string query_kekse() {
if(present("keks", this_object()))
return("Ich hab noch welche. Aetsch!");
else if(present("keks", environment()))
return("Da liegt einer!");
return("Menno. Keine mehr da!");
}
protected string question_gold() {
// wieviel Kohle hat der Spieler
int money = this_player()->QueryMoney();
string *y = map(deep_inventory(this_player()),
function string(object o) {
if(o->QueryMaterial(MAT_GOLD)>0 &&
strstr(object_name(o),"/items/money")<0 &&
o->QueryProp(P_NAME))
return o->name(WER,1);
})-({0});
// das geht an alle anderen im Raum, silent bietet sich hier
// nicht an, weil es mehrere Moeglichkeiten gibt
send_room(environment(),
(Name(WER,1)+" murmelt "+
this_player()->name(WEM,1)+
" etwas zu"+
((money || sizeof(y))?
" und glotzt "+this_player()->QueryPronoun(WEN)+" gierig an.":
".")),
MT_LOOK|MT_LISTEN,
MA_EMOTE, 0, ({this_player()}));
// und hier die Antwort an den Spieler selbst, mit vielen
// Verzweigungen fuer dessen Besitztum
return("Ich hab kein Gold bei mir."+
((money || sizeof(y))?
" Aber du "+
(money?
"hast ja jede Menge Kohle bei dir, so etwa "+money+
" Muenzen."+
(sizeof(y)?
" Ausserdem "+
((sizeof(y)==1)?"ist":"sind")+
" auch noch "+CountUp(y)+" aus Gold.":
""):
(sizeof(y)?"hast ja ein paar Wertsachen dabei: "+
CountUp(y)+
(sizeof(y)==1?" ist":" sind")+
" aus Gold.":"")):
""));
}