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 maybe_replace_program() |
| 10 | // dieser Standardraum, darf _nicht_ replaced werden... |
| 11 | { } |
| 12 | |
| 13 | int tuempel_ex(string exit, mapping map_ldfied) |
| 14 | { return map_ldfied[exit]==ROOM("tuempel"); } |
| 15 | |
| 16 | static int plant; |
| 17 | |
| 18 | void 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 | |
| 94 | static 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 | |
| 114 | static 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 | |
| 145 | static 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 | } |