blob: 341ee6e01f5de9f46eea3b4c37e350ca48f5fb3b [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 maybe_replace_program()
10// dieser Standardraum, darf _nicht_ replaced werden...
11{ }
12
13int tuempel_ex(string exit, mapping map_ldfied)
14{ return map_ldfied[exit]==ROOM("tuempel"); }
15
16static int plant;
17
18void create()
19{
20 int i;
21 string tuempel, dir;
22 mixed tmp;
23
24 if (!clonep(ME)) return;
25 ::create();
26 plant=0;
27 SetProp(P_INDOORS, 0);
28 SetProp(P_LIGHT, 1);
29 SetProp(P_INT_SHORT, "Am Rande der Zauberlichtung");
30 SetProp(EXTRA_LONG, "");
31 if (PO) dir=(PO->CustomizeObject());
32 if (!dir) return;
33 dir=(["o":"ost", "w":"west", "n":"nord", "s":"sued",
34 "no":"nordost", "nw":"nordwest",
35 "so":"suedost", "sw":"suedwest"])[dir[8..]];
36 tuempel=filter(m_indices(QueryProp(P_EXITS)||([])), "tuempel_ex", ME, QueryProp(P_EXITS)||([]))[0][0..<3];
37 dir=capitalize(dir); tuempel=capitalize(tuempel);
38 SetProp(P_INT_LONG, BS(
39 "Du stehst am "+dir+"rand der grossen Lichtung inmitten des Zauberwalds. "
40 +tuempel+"lich von hier, befindet sich genau in der Mitte der "
41 +"Lichtung ein kleiner Tuempel in dessen Wasser sich das Sonnenlicht in "
42 +"allen Farben des Regenbogens spiegelt. Hier und da stehen um den Teich "
43 +"herum vereinzelt einige Eichen die sich irgendwie zu bewegen "
44 +"scheinen und ab und zu siehst Du wie sich einige kleine Pixies aus "
45 +"dem Wald heraus ans Wasser trauen. Die Eichen jedoch, halten immer "
46 +"einen deutlichen Abstand zum Wasser."+QueryProp(EXTRA_LONG)));
47 AddDetail(({"raum", lower_case(dir)+"rand", "zauberwald"}), QueryProp(P_INT_LONG));
48 AddDetail(({"pixies", "zauberwesen", "unfug"}),
49 "Pixies sind kleine verspielte Zauberwesen, die hier im Zauberwald wohnen. Um\n"
50 +"einem von ihnen zu begegnen wirst Du hier im Wald sicher nich lange suchen\n"
51 +"muessen, doch vorsicht, sie haben nichts als Unfug im Kopf...\n");
52 AddDetail(({"farben", "regenbogen", "computer"}),
53 "Noch nie einen Regenbogen gesehn? Hmm.. dann sitzt Du wirklich eindeutig\n"
54 +"zuviel vor Deinem Computer...\n");
55 AddDetail("abstand",
56 "Wieso sie diesen Abstand halten kannst Du nicht nachvollziehn, aber mehr als\n"
57 +"ein paar Meter gehen sie nie an den alten Weiher dran.\n");
58 AddDetail(({"sonne", "sonnenstrahlen", "sonnenlicht", "himmel", "herz"}),
59 "Zahlreiche warme Sonnenstrahlen erwaermen Dein Herz und Du bist richtig\n"
60 +"gluecklich. Solch ein Idyllisches Plaetzchen willst Du am liebsten nie\n"
61 +"wieder verlassen. Fehlt eigentlich nur noch ein Partner, mit dem man\n"
62 +"hier gemeinsam in der Sonne liegen und das rauschen des Wassers geniessen\n"
63 +"kann.\n");
64 AddDetail("partner", "Den musst Du Dir schon selbst mitbringen...\n");
65 AddDetail(({"wald", "zauberwald"}),
66 "Du befindest Dich quasi mittem ihn ihm. Rund herum um die Lichtung schliesst\n"
67 +"sich ein dichter Wald an.\n");
68 AddDetail(({"eiche", "eichen"}),
69 "Hier befindet sich gerade keine, so dass Du sie nich naeher ansehn kannst.\n");
70 AddDetail(({"lichtung", "rand", "plaetzchen"}), QueryProp(P_INT_LONG));
71 AddDetail(({"wasser", "tuempel", "teich", lower_case(tuempel)+"en", "mitte"}),
72 "Wenn Du Dir den Tuempel in der Mitte der Lichtung etwas naeher ansehen\n"
73 +"moechtest, solltest Du vielleicht einfach noch ein bisschen naeher rangehn.\n");
74 AddDetail(({"waldweg", "weg"}),
75 "Ueber den Waldweg kannst Du den Wald wieder verlassen wenn Du moechtest.\n");
76 AddDetail(({"boden"}),
77 "Der Boden ist hier nirgends nackt sichtbar, sondern ist mit einem schoenen\n"
78 +"gruenen Rasenteppich bedeckt. Nicht zu hoch und nicht zu tief, offensichtlich\n"
79 +"bedarf diese Grasart keinerlei Pflege oder aber irgendjemand pflegt diesen\n"
80 +"Rasen hier seeehhhhrrr gruendlich.\n");
81 AddDetail(({"grasart", "rasen", "art", "gras", "rasenteppich", "halme"}),
82 "Du schaust Dir den Rasen noch einmal gruendlich an und streichst mit Deiner\n"
83 +"Hand durch die Halme. Was auch immer das fuer eine Art ist, solch einen Rasen\n"
84 +"hast Du noch nicht gesehn.\n");
85 AddDetail("hand",
86 "Sei lieber vorsichtig, sonst ist die Hand schneller ab als Du denkst...\n");
87 AddDetail("pflege",
88 "Ob jemand diesen Rasen pflegt, bzw. _wer_ kannst Du nicht entdecken...\n");
89 AddSounds(({"rauschen", "wasser"}), "Leise hoerst Du das rauschen des Wassers....\n");
90}
91
92#define VERB (["iss": "essen", "esse": "essen", "pflueck": "pfluecken", "pfluecke": "pfluecken"])
93
94static int cmd_pilze(string str)
95{
96 notify_fail("Was moechtest Du "+VERB[query_verb()]+"?\n");
97 if (str!="pilz" && str!="pilze") return 0;
98 if (plant>time()) {
99 write("Du solltest die Pilze erstmal in Ruhe wieder etwas nachwachsen lassen.\n");
100 return 1;
101 }
102 if (PL->QueryProp(ZAUBERWALD)<=time()) {
103 write("Du bist nur Gast hier und die Bewohner des Zauberwalds, sehen es nicht gerne\n"
104 +"wenn man hier einfach so die Pilze pflueckt.\n");
105 return 1;
106 }
107 plant=time()+300;
108 write("Du pflueckst Dir einige Pilze und isst sie. Anschliessend geht es Dir\n"
109 +"bedeutend besser.\n");
110 PL->reduce_hit_points( negate(100+random(100)) );
111 return 1;
112}
113
114static int cmd_farne(string str)
115{
116 int food;
117 notify_fail("Was moechtest Du "+VERB[query_verb()]+"?\n");
118 if (str!="farn" && str!="farne") return 0;
119 if (PL->QueryProp(ZAUBERWALD)<=time()) {
120 write("Du bist nur Gast hier und die Bewohner des Zauberwalds, sehen es nicht gerne\n"
121 +"wenn man hier einfach so den Farn abreisst.\n");
122 return 1;
123 }
124 // das tanken am Wasser ist umsonst, es heilt dabei wie ein
125 // mittleres Kneipenessen das genau 1 Muenze kostet. Geheilt werden nur HP
126 // Ein Missbrauch ist im Wald ausgeschlossen, bzw. man muesste den
127 // gesamten Wald leermetzeln und kann dann hier tanken bis zum naechsten
128 // reset. Bei Kosten von einer Muenze pro Heilung ist es sehr fraglich
129 // ob sich das lohnt.... :)
130 food=(PL->QueryProp(P_MAX_FOOD)) - (PL->QueryProp(P_FOOD));
131 if (food>10) food=10; // nie mehr als fuer 10 food tanken...
132 if (food <= 0 || !PL->eat_food(food, 1)) {
133 write("Du bist so voll, Du kannst leider wirklich nichts mehr essen...\n");
134 return 1;
135 }
136 write("Du pflueckst ein wenig von dem Farn und isst ihn. Sogleich spuerst Du, wie es\n"
137 +"Dir allmaehlich wieder besser geht...\n");
138 if (PL->eat_food(food)) { // food gutschreiben erfolgreich?
139 PL->buffer_hp(food*6, 8);
140 PL->SetProp(ZAUBERWALD, time()+AGGRESSIVE_TIME);
141 }
142 return 1;
143}
144
145static int cmd_sueden()
146{
147 if (PL->QueryProp(ZAUBERWALD)>time()) {
148 write("Du versuchst in den Wald zu fluechten, doch die Farne und Buesche bilden\n"
149 +"eine pflanzliche Barriere und lassen Dich nicht hindurch.\n");
150 return 1;
151 }
152 write("Du machst einen Schritt hin nach Sueden und sofort biegen sich auf magische\n"
153 +"Weise die Farne und Buesche zur Seite und geben einen Trampelpfad nach Sueden\n"
154 +"frei.\n");
155 PL->move(ROOM("huette"), M_GO, "durch die Buesche nach Sueden", "zwaengt sich");
156 return 1;
157}