MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // (c) by Thomas Winheller (Padreic@mg.mud.de) |
| 2 | |
| 3 | #include "../files.h" |
| 4 | #include <moving.h> |
| 5 | |
| 6 | inherit ROOM("stdroom"); |
| 7 | inherit "/std/room/kraeuter"; |
| 8 | |
| 9 | void 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 | |
| 69 | static 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 | |
| 108 | static 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 | |
| 134 | static 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 | |
| 163 | static 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 | } |