blob: 6f22d860481c6b54b25308a2c40add502911fdd9 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// (c) by Thomas Winheller (Padreic@mg.mud.de)
2
3#include "../files.h"
4#include <moving.h>
5
6inherit ROOM("stdroom");
7inherit "/std/room/kraeuter";
8
9void create()
10{
11 ::create();
12 SetProp(P_LIGHT, 2);
13 SetProp(P_INDOORS, 0);
14 SetProp(P_INT_SHORT, "An einem verwunschenden Weiher");
15 AddSpecialDetail(({"ort", "weiher"}), "_query_int_long");
16 AddDetail(({"seerosen", "farben", "farbenvielfalt"}),
17 "Auf dem Wasser schwimmen zahlreiche Seerosen in allen Farben des Regenbogens\n"
18 +"eine solche Farbenvielfalt wie hier, hast Du bisher noch nirgendwo sonst\n"
19 +"gesehn.\n");
20 AddDetail("regenbogen", "Derzeit steht keiner am Himmel.\n");
21 AddDetail(({"libelle", "libellen", "atmosphaere", "summen"}),
22 "Hier und da schwirren ueber dem Weiher einige Libellen herum. Ihr Summen\n"
23 +"verbreitet eine richtig idyllische Atmosphaere an diesem Ort.\n");
24 AddDetail(({"pixies", "zauberwesen"}),
25 "Pixies sind kleine verspielte Zauberwesen, die hier im Zauberwald wohnen. Um\n"
26 +"einem von ihnen zu begegnen wirst Du hier im Wald sicher nich lange suchen\n"
27 +"muessen, doch vorsicht, sie haben nichts als Unfug im Kopf...\n");
28 AddDetail(({"wald", "zauberwald", "punkt"}),
29 "Der verwunschene Weiher ist mehr oder weniger der zentrale Punkt hier im\n"
30 +"Zauberwald. Er liegt mitten auf einer grossen Lichtung umgeben vom dichten\n"
31 +"Wald der Pixies\n");
32 AddDetail(({"lichtung", "mitte"}),
33 "Der Weiher befindet sich genau in der Mitte der Lichtung, sieh Dich halt\n"
34 +"einfach mal um.\n");
35 AddDetail(({"boden", "ufer"}),
36 "Das Ufer des Weihers besteht aus zahlreichen Steinen die bis in den Weiher\n"
37 +"hineinreichen. Auf und zwischen diesen Steinen sind jedoch ueberall zahlreiche\n"
38 +"kleine und mittlere Pflanzen gewachsen.\n");
39 AddDetail(({"stein", "steine"}), "Ein Stein ist ein Stein ist ein Stein ist ein Stein ist ein Stein.\n");
40 AddDetail("pflanzen",
41 "Die verschiedensten Pflanzen wachsen zwischen den Steinen empor und begruenen\n"
42 +"das Ufer. An einer Stelle kannst Du sogar weissen Wasser-Hahnenfuss wachsen\n"
43 +"sehen.\n");
44 AddDetail(({"wasser", "schimmer", "schimmern"}),
45 "Das Wasser ist irgendwie recht trueb und es geht ein sehr seltsames Schimmern\n"
46 +"von ihm aus. Irgendetwas besonderes hat es mit diesem Wasser auf sich, das\n"
47 +"spuerst Du genau. Du weisst jedoch nicht, ob es etwas gutes oder etwas boeses\n"
48 +"ist.\n");
49 AddDetail(({"himmel", "luft", "sonne", "waerme", "strahlen", "sonnenstrahlen"}),
50 "Die Sonne steht hoch am Himmel und fuellt diesen Ort mit einer herrlichen\n"
51 +"Waerme und ihre Strahlen reflektieren im Wasser in allen erdenklichen Farben.\n");
52 AddExit("norden", ROOM("lichtungn"));
53 AddExit("nordosten", ROOM("lichtungno"));
54 AddExit("nordwesten", ROOM("lichtungnw"));
55 AddExit("osten", ROOM("lichtungo"));
56 AddExit("westen", ROOM("lichtungw"));
57 AddExit("sueden", ROOM("lichtungs"));
58 AddExit("suedwesten", ROOM("lichtungsw"));
59 AddExit("suedosten", ROOM("lichtungso"));
60 AddItem(NPC("ulinia"), REFRESH_REMOVE, 1);
61 AddCmd(({"bad", "bade", "schwimm", "schwimme", "tauch", "tauche"}), "cmd_schwimmen");
62 AddCmd(({"trink", "trinke"}), "cmd_trinken");
63 AddCmd(({"pflueck", "pfluecke"}), "cmd_pfluecken");
64 // Detail per Hand hinzufuegen, da GetPlant anstelle von AddPlant
65 // verwendet wird.
66 AddPlantDetail(OBJ("hahnenfuss"));
67}
68
69static int cmd_trinken(string str)
70{
71 int drink;
72 object ob;
73 if (member(({"wasser", "wasser aus teich", "wasser aus tuempel",
74 "wasser aus see", "aus teich", "aus tuempel", "aus wasser",
75 "aus see"}), str)==-1) {
76 notify_fail("Was moechtest Du trinken?\n");
77 return 0;
78 }
79 if ((ob=present(WALDID("fee"), ME)) && !ob->IsEnemy(PL)) {
80 write(BS("Die Waldfee scheint Deinen Entschluss ein wenig von dem "
81 +"Wasser zu kosten, bemerkt zu haben und straft Dich mit einem "
82 +"mahnenden Blick ab. Du ueberlegst es Dir also noch einmal und "
83 +"laesst von Deinem Vorhaben ab."));
84 return 1;
85 }
86 // das tanken am Wasser ist umsonst, es heilt dabei wie ein
87 // Kneipengetraenk das genau 1 Muenze kostet. Geheilt werden nur SP
88 // Ein Missbrauch ist im Wald ausgeschlossen, bzw. man muesste den
89 // gesamten Wald leermetzeln und kann dann ueben bis zum naechsten
90 // reset. Bei Kosten von einer Muenze pro Heilung ist es sehr fraglich
91 // ob sich das lohnt.... :)
92 drink=(PL->QueryProp(P_MAX_DRINK)) - (PL->QueryProp(P_DRINK));
93 if (drink>10) drink=10; // nie mehr als fuer 10 soak tanken...
94 if (drink <= 0 || !PL->drink_soft(drink, 1)) {
95 write("Du bist so voll, Du kannst leider wirklich nichts mehr trinken...\n");
96 return 1;
97 }
98 write("Du gehst an den Rand des Weihers und nimmst einen kraeftigen Schluck von dem\n"
99 +"Wasser. Sogleich spuerst Du, wie Deine mentalen Kraefte langsam gestaerkt\n"
100 +"werden.\n");
101 if (PL->drink_soft(drink)) { // soak gutschreiben erfolgreich?
102 PL->buffer_sp(drink*6, 5);
103 PL->SetProp(ZAUBERWALD, time()+AGGRESSIVE_TIME);
104 }
105 return 1;
106}
107
108static int cmd_schwimmen(string str)
109{
110 string verb;
111
112 // besondere Eigenschaft der schluesselwoerter ausnutzen... :)
113 verb=(query_verb()||"");
114 if (verb[<1]!='e') verb+="e";
115 if (member(({"in teich", "in weiher", "in tuempel", "in see"}), str)==-1) {
116 notify_fail("Worin willst Du "+verb+"n?\n");
117 return 0;
118 }
119 str=capitalize(str[3..]); // "in " abschneiden...
120 if (present(WALDID("fee"), ME)) {
121 write(BS("Die Waldfee scheint Deinen Entschluss im "+str+" "+verb
122 +"n zu gehn irgendwie bemerkt zu haben und straft Dich mit einem "
123 +"mahnenden Blick ab. Deine Lust zum "+capitalize(verb)
124 +"n sinkt sogleich gegen null, denn Du verspuerst keine grosse "
125 +"Lust Dich mit der Waldfee anzulegen."));
126 return 1;
127 }
128 write(BS("Mutig gehst Du einen Schritt ins Wasser, da ueberkommt Dich auch "
129 +"schon ein seltsames kribbeln am ganzen Koerper. In windeseile "
130 +"hast Du den "+str+" auch schon wieder verlassen."));
131 return 1;
132}
133
134static int cmd_pfluecken(string str)
135{
136 object ob;
137 notify_fail("WAS moechtest Du pfluecken?\n");
138 if (member(({"hahnenfuss",
139 "wasser-hahnenfuss",
140 "weisser hahnenfuss",
141 "weisser wasser-hahnenfuss"}), str)<0) return 0;
142 if ((ob=present(WALDID("fee"), ME)) && !ob->IsEnemy(PL)) {
143 write(BS("Die Waldfee scheint Dein Vorhaben bemerkt zu haben und "
144 +"straft Dich mit einem mahnenden Blick ab. Du ueberlegst es Dir "
145 +"wieder anders und laesst von Deinem Vorhaben ab, solange die "
146 +"Fee hier wacht."));
147 return 1;
148 }
149 ob=GetPlant(OBJ("hahnenfuss"));
150 if (objectp(ob)) {
151 if (ob->move(PL, M_GET)==1)
152 write(BS("Vorsichtig pflueckst Du "+ob->name(WEN, 1)
153 +" und nimmst "+ob->QueryPronoun(WEN)+" an Dich."));
154 else write(BS("Vorsichtig pflueckst Du "+ob->name(WEN, 1)+" kannst "
155 +ob->QueryPronoun(WEN)+" aber nicht nehmen."));
156 }
157 else if (!ob)
158 write(BS("Der Hahnenfuss ist noch nicht wieder weit genug "
159 +"nachgewachsen um ihn pfluecken zu koennen."));
160 return 1;
161}
162
163static string _query_int_long()
164{
165 if (present(WALDID("fee"), ME))
166 return
167 "Du stehst nun an einem kleinen verwunschenen Weiher, inmitten des Zauberwalds.\n"
168 +"Auf dem Wasser schwimmen zahlreiche Seerosen in den verschiedensten Farben\n"
169 +"und hier und dort schwirrt eine Libelle in der Luft. Mitten ueber dem Weiher\n"
170 +"schwebt eine wunderschoene Waldfee in der Luft und scheint den Weiher zu\n"
171 +"bewachen. Irgendetwas geheimnisvolles scheint es mit dem Weiher auf sich\n"
172 +"zu haben, nur was?\n";
173 return
174 "Du stehst nun an einem kleinen verwunschenen Weiher, inmitten des Zauberwalds.\n"
175 +"Auf dem Wasser schwimmen zahlreiche Seerosen in den verschiedensten Farben und\n"
176 +"hier und dort schwirrt eine Libelle in der Luft. Alles scheint hier sehr\n"
177 +"friedlich zu sein, fast ein wenig zu friedlich. Irgendetwas geheimnisvolles\n"
178 +"scheint es mit diesem Weiher auf sich zu haben, nur was?\n";
179}