blob: 5ffe11706e870248ca531766e1f42965f7185089 [file] [log] [blame]
Christian Georg Beckera38b32f2017-03-07 23:12:05 +01001#pragma strong_types, save_types, rtt_checks, pedantic
2inherit "std/npc";
3
4#include <properties.h>
5
6protected string query_kekse();
7protected string question_gold();
8
9protected void create() {
10 if (!clonep(this_object())) return;
11 ::create();
12
13 SetProp(P_SHORT, "Ein Monster");
14 SetProp(P_LONG, break_string(
15 "Das Monster sieht dich hungrig an. "
16 "Wahrscheinlich will es Geld oder Kekse.", 78));
17 SetProp(P_NAME, "Monster");
18 SetProp(P_GENDER, NEUTER);
19 AddId("monster");
20
21 SetProp(P_RACE, "Monster");
22 SetProp(P_XP, 0);
23 SetProp(P_BODY, 50);
24 SetProp(P_SIZE, random(20)+110);
25
26 // Beispiel 1
27 AddInfo(DEFAULT_INFO, "starrt Dir boese in die Augen.\n");
28
29 // Beispiel 2
30 AddInfo(({"knete","kohle"}),
31 "sagt: ich habe so etwas nicht.");
32 AddInfo("geld",
33 "Ich habe zwar kein Geld, aber [...] blablabla [...] blub muh quak "
34 "lorem blupsum Umbruch now!",
35 "sagt: ");
36 AddInfo("muenzen",
37 "fluestert: Du willst Geld?",
38 0,
39 "fluestert @WEM etwas zu.");
40
41 // Beispiel 3
42 AddInfo(({"keks","kekse"}),
43 #'query_kekse, // ein Verweis auf die Funktion
44 "sagt: ");
45
46 // Beispiel 5
47 AddInfo("gold", #'question_gold, "murmelt: ", 1);
48}
49
50protected string query_kekse() {
51 if(present("keks", this_object()))
52 return("Ich hab noch welche. Aetsch!");
53 else if(present("keks", environment()))
54 return("Da liegt einer!");
55 return("Menno. Keine mehr da!");
56}
57
58protected string question_gold() {
59 // wieviel Kohle hat der Spieler
60 int money = this_player()->QueryMoney();
61 string *y = map(deep_inventory(this_player()),
62 function string(object o) {
63 if(o->QueryMaterial(MAT_GOLD)>0 &&
64 strstr(object_name(o),"/items/money")<0 &&
65 o->QueryProp(P_NAME))
66 return o->name(WER,1);
67 })-({0});
68
69 // das geht an alle anderen im Raum, silent bietet sich hier
70 // nicht an, weil es mehrere Moeglichkeiten gibt
71 send_room(environment(),
72 (Name(WER,1)+" murmelt "+
73 this_player()->name(WEM,1)+
74 " etwas zu"+
75 ((money || sizeof(y))?
76 " und glotzt "+this_player()->QueryPronoun(WEN)+" gierig an.":
77 ".")),
78 MT_LOOK|MT_LISTEN,
79 MA_EMOTE, 0, ({this_player()}));
80
81 // und hier die Antwort an den Spieler selbst, mit vielen
82 // Verzweigungen fuer dessen Besitztum
83 return("Ich hab kein Gold bei mir."+
84 ((money || sizeof(y))?
85 " Aber du "+
86 (money?
87 "hast ja jede Menge Kohle bei dir, so etwa "+money+
88 " Muenzen."+
89 (sizeof(y)?
90 " Ausserdem "+
91 ((sizeof(y)==1)?"ist":"sind")+
92 " auch noch "+CountUp(y)+" aus Gold.":
93 ""):
94 (sizeof(y)?"hast ja ein paar Wertsachen dabei: "+
95 CountUp(y)+
96 (sizeof(y)==1?" ist":" sind")+
97 " aus Gold.":"")):
98 ""));
99}