MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // Einiger Code wurde aus dem Questtagebuch des Tempels uebernommen. |
| 2 | // Da man das Buch, sobald es im aufgestellten Lesepult des Spielers |
| 3 | // abgelegt wurde, auch lesen koennen muss, sind die Funktionen und |
| 4 | // Details auch weiterhin sinnvoll. Kaufen kann es jeder Seher, aber |
| 5 | // nutzen kann man es nur mit dem von Hels Avatar ueberreichten Buch. |
| 6 | |
| 7 | #include <properties.h> |
| 8 | #include <moving.h> |
| 9 | #include <language.h> |
| 10 | #include <wizlevels.h> |
| 11 | #include "/d/seher/haeuser/moebel/moebel.h" |
| 12 | #include "/d/seher/haeuser/haus.h" |
| 13 | #include "/d/anfaenger/ark/knochentempel/files.h" |
| 14 | #pragma strong_types,rtt_checks |
| 15 | |
| 16 | inherit LADEN("swift_std_container"); |
| 17 | |
| 18 | static string owner; |
| 19 | string le(string key); |
| 20 | string in(string key); |
| 21 | int cmd_eintragen(string str); |
| 22 | int cmd_lesen(string str); |
| 23 | int take_page(string str); |
| 24 | int drop_book(string str); |
| 25 | int cmd_blaettern(string str); |
| 26 | int cmd_oeffnen(string str); |
| 27 | int cmd_schliessen(string str); |
| 28 | void AddTheOldDetails(); |
| 29 | |
| 30 | protected void create() |
| 31 | { |
| 32 | if(!clonep(this_object())) |
| 33 | { |
| 34 | set_next_reset(-1); |
| 35 | return; |
| 36 | } |
| 37 | |
| 38 | ::create(); |
| 39 | |
| 40 | owner="Anonymus"; |
| 41 | |
| 42 | AddDetail("finger",BS( |
| 43 | "Deine Finger sollten schon vorsichtig sein, wenn sie das Zeder"+ |
| 44 | "nholz beruehren. Einerseits, damit Du Dich nicht verletzt, and"+ |
| 45 | "ererseits, damit Du nichts beschmutzt.",78)); |
| 46 | AddDetail(({"holz","zedernholz","zeder"}),BS( |
| 47 | "Aus einem einzigen starken Stamm einer Zeder bearbeitet, ist d"+ |
| 48 | "ieses edle Lesepult schon etwas sehr Feines und Dekoratives.",78)); |
| 49 | AddDetail(({"stamm","zedernstamm","holzstamm"}),BS( |
| 50 | "Der Zedernstamm ist wahrlich kunstvoll veredelt worden, sein k"+ |
| 51 | "raeftiges Braun wurde hervorragend zur Geltung gebracht.",78)); |
| 52 | AddDetail(({"braun","dunkelbraun"}),BS( |
| 53 | "Der dunkelbraune Stamm glaenzt wunderschoen, wenn Licht auf ih"+ |
| 54 | "n faellt. Ein sehr angenehmes Holz, das fuer das Lesepult verw"+ |
| 55 | "endet wurde.",78)); |
| 56 | AddDetail("geltung",BS( |
| 57 | "Ja, dieses Holz gefaellt Dir sehr, das ganze Pult ist ein beme"+ |
| 58 | "rkenswertes Kunstwerk.",78)); |
| 59 | AddDetail(({"kunst","werk","kunstwerk"}),BS( |
| 60 | "Immer wieder faellt Dein bewundernder Blick auf das Lesepult.",78)); |
| 61 | AddDetail("blick",BS( |
| 62 | "Wachsam und flink wie immer, hat er jedoch ein wenig pausiert,"+ |
| 63 | " indem er muessig auf dem Lesepult ruht.",78)); |
| 64 | AddDetail(({"feines","dekoratives"}),BS( |
| 65 | "Das teilweise eckige und dann wieder sanft geschwungene, runde"+ |
| 66 | " Lesepult sieht schon ziemlich repraesentativ aus.",78)); |
| 67 | AddDetail("zeder",BS( |
| 68 | "Von ihr ist nurmehr das Pult geblieben, allerdings findest Du,"+ |
| 69 | " dass es nicht der schlechteste Teil ist.",78)); |
| 70 | AddDetail("teil",BS( |
| 71 | "Du siehst nur den bearbeiteten Teil der Zeder vor Dir.",78)); |
| 72 | AddDetail("exemplar",BS( |
| 73 | "Es ist ganz klar zu sehen, dass es sich nur um eine Zeder hand"+ |
| 74 | "elt, aus der dieses Pult entstand.",78)); |
| 75 | AddDetail(({"handwerk","kunst"}),BS( |
| 76 | "Tatsaechlich ist dieses Lesepult ein sehr schoenes Beispiel ho"+ |
| 77 | "echster handwerklicher Kunst.",78)); |
| 78 | AddDetail("beispiel",BS( |
| 79 | "Ein weiteres steht hier dummerweise nicht herum.",78)); |
| 80 | |
| 81 | SetProp("cnt_version_obj","1"); |
| 82 | SetProp(P_NAME,"Lesepult"); |
| 83 | SetProp(P_GENDER,NEUTER); |
| 84 | SetProp(P_NEVERDROP,1); |
| 85 | SetProp(P_VALUE,10); |
| 86 | SetProp(P_WEIGHT,500000); |
| 87 | SetProp(P_NOGET,"Das Lesepult ist Dir viel zu schwer.\n"); |
| 88 | SetProp(P_NOSELL,"Du behaeltst das Lesepult lieber.\n"); |
| 89 | SetProp(P_MATERIAL,([MAT_CEDAR:100])); |
| 90 | SetProp(H_FURNITURE,1); |
| 91 | SetProp(P_INFO,BS( |
| 92 | "Auf dieses Lesepult kann man ein ganz bestimmtes schwarzes Bu"+ |
| 93 | "ch legen. Dort liegt es perfekt, um darin zu blaettern und zu"+ |
| 94 | " lesen. Ausserdem birgt es sicher noch Geheimnisse.",78)); |
| 95 | |
| 96 | AddId(({"pult","lesepult","\nlesepult_ark"})); |
| 97 | |
| 98 | AddCmd("eintragen&quest|aufgabe|loesung|erlebnis|abenteuer", |
| 99 | #'cmd_eintragen,"Was willst Du hier denn eintragen ?\n"); |
| 100 | AddCmd(({"lies","lese","les"}),#'cmd_lesen); |
| 101 | AddCmd("nimm",#'take_page); |
| 102 | AddCmd(({"lege","leg"}),#'drop_book); |
| 103 | AddCmd("blaetter|blaettre|blaettere&in&buch|tagebuch|" |
| 104 | "tempeltagebuch",#'cmd_blaettern,"Worin willst Du blaettern ?|" |
| 105 | "Willst Du im Tagebuch blaettern ?"); |
| 106 | AddCmd("oeffne&@ID|buch|tagebuch|tempeltagebuch",#'cmd_oeffnen, |
| 107 | "Was willst Du oeffnen?\n"); |
| 108 | AddCmd("schliesse|schliess&@ID|buch|tagebuch|tempeltagebuch", |
| 109 | #'cmd_schliessen,"Was willst Du schliessen?\n"); |
| 110 | |
| 111 | if (MQTBMASTER->QueryTagebuchAufPult(this_player())) |
| 112 | AddTheOldDetails(); |
| 113 | } |
| 114 | |
| 115 | void SetOwner(string str) |
| 116 | { |
| 117 | owner=str; |
| 118 | } |
| 119 | |
| 120 | string QueryOwner() |
| 121 | { |
| 122 | return owner; |
| 123 | } |
| 124 | |
| 125 | string _query_short() |
| 126 | { |
| 127 | if ((owner=="Anonymus")|| |
| 128 | !this_player()|| |
| 129 | !(MQTBMASTER->QueryTagebuchAufPult(this_player()))) |
| 130 | return "Ein wunderschoenes Lesepult aus dunkelbraunem Zedernholz"; |
| 131 | if (getuid(this_player())==owner) |
| 132 | return |
| 133 | "Ein wunderschoenes Lesepult, auf dem Dein Tagebuch des Tempels ruht"; |
| 134 | else return |
| 135 | "Ein wunderschoenes Lesepult, das ein gueldenes Buch traegt"; |
| 136 | } |
| 137 | |
| 138 | string _query_long() |
| 139 | { |
| 140 | if ((owner=="Anonymus")|| |
| 141 | !this_player()|| |
| 142 | !(MQTBMASTER->QueryTagebuchAufPult(this_player()))) |
| 143 | return BS( |
| 144 | "Vorsichtig faehrst Du mit den Fingern ueber das dunkelbraune Holz."+ |
| 145 | " Was Du spuerst, fuehlt sich kuehl und angenehm an, die Zeder, die"+ |
| 146 | " fuer dieses bestaunenswerte Lesepult herhalten musste, wurde vors"+ |
| 147 | "ichtig und aeusserst kunstfertig bearbeitet. Ein wirklich schoenes"+ |
| 148 | " Exemplar holzhandwerklicher Kunst.",78); |
| 149 | if (getuid(this_player())==owner) |
| 150 | { |
| 151 | if (MQTBMASTER->QueryTagebuchAufPult(this_player())) |
| 152 | return BS( |
| 153 | "Vorsichtig faehrst Du mit den Fingern ueber das dunkelbraune Holz"+ |
| 154 | ". Was Du spuerst, fuehlt sich kuehl und angenehm an, die Zeder, d"+ |
| 155 | "ie fuer dieses bestaunenswerte Lesepult herhalten musste, wurde v"+ |
| 156 | "orsichtig und aeusserst kunstfertig bearbeitet. Ein wirklich scho"+ |
| 157 | "enes Exemplar holzhandwerklicher Kunst, Du bist froh, dieses Lese"+ |
| 158 | "pult erstanden zu haben. Auf dem Lesepult siehst Du Dein schwarze"+ |
| 159 | "s Tagebuch des Knochentempels, in dem Du nun nur noch lesen kanns"+ |
| 160 | "t, denn Deine Abenteuer dort sind vollstaendig zu Papier gebracht"+ |
| 161 | ". Allerdings kannst Du auch noch ein wenig weiter drin herumblaet"+ |
| 162 | "tern, wenn Du magst.",78); |
| 163 | return BS( |
| 164 | "Vorsichtig faehrst Du mit den Fingern ueber das dunkelbraune Holz"+ |
| 165 | ". Was Du spuerst, fuehlt sich kuehl und angenehm an, die Zeder, d"+ |
| 166 | "ie fuer dieses bestaunenswerte Lesepult herhalten musste, wurde v"+ |
| 167 | "orsichtig und aeusserst kunstfertig bearbeitet. Ein wirklich scho"+ |
| 168 | "enes Exemplar holzhandwerklicher Kunst, Du bist froh, dieses Lese"+ |
| 169 | "pult erstanden zu haben. Ein wenig gruebeln laesst Dich die Tatsa"+ |
| 170 | "che, dass das Lesepult leer ist. Was man dort wohl platzieren kan"+ |
| 171 | "n ?",78); |
| 172 | } |
| 173 | return BS( |
| 174 | "Vorsichtig faehrst Du mit den Fingern ueber das dunkelbraune Holz."+ |
| 175 | ". Was Du spuerst, fuehlt sich kuehl und angenehm an, die Zeder, di"+ |
| 176 | "e fuer dieses bestaunenswerte Lesepult herhalten musste, wurde vor"+ |
| 177 | "sichtig und aeusserst kunstfertig bearbeitet. Ein wirklich schoene"+ |
| 178 | "s Exemplar holzhandwerklicher Kunst, Du bist ein wenig neidisch."+ |
| 179 | ""+(MQTBMASTER->QueryTagebuchAufPult(this_player())?" Auf dem Lesep"+ |
| 180 | "ult wurde ein schwarzes Buch abgelegt, das sehr wertvoll aussieht.": |
| 181 | " Das Lesepult sieht ohne dazugehoeriges Buch ein wenig einsam aus.")+".",78); |
| 182 | } |
| 183 | |
| 184 | void AddTheOldDetails() |
| 185 | { |
| 186 | AddDetail(({"buch","buechlein","tagebuch"}),BS( |
| 187 | "Dies ist ein kleines Buechlein aus Gold, auf dem ein Name in "+ |
| 188 | "schwarzen Lettern steht. Ansonsten ist der Einband schlicht, "+ |
| 189 | "das Papier schon ausfuehrlich beschrieben und vom vielen Blae"+ |
| 190 | "ttern hier und da auch schon ein wenig geknickt.",78)); |
| 191 | AddDetail("blaettern",BS( |
| 192 | "Ja, das schoene Buechlein ist von haeufigem Blaettern nicht s"+ |
| 193 | "choener geworden, aber irgendetwas Magisches hat es schon an "+ |
| 194 | "sich. Ab und an magst Du immer wieder einmal herumblaettern.",78)); |
| 195 | AddDetail("magisches",BS( |
| 196 | "Es ist nicht so einfach zu ergruenden, indem man einmal genau"+ |
| 197 | "er hinsieht.",78)); |
| 198 | AddDetail("leder",BS( |
| 199 | "Das Leder ist glatt und vollkommen guelden. Nur die schwarzen"+ |
| 200 | " Lettern geben einen angenehmen Kontrast ab. Irgendwie seltsa"+ |
| 201 | "m, denn Du findest, dass Schwarz und Gold eigentlich umgekehr"+ |
| 202 | "t mehr Sinn machen.",78)); |
| 203 | AddDetail("sinn",BS( |
| 204 | "Vielleicht ist aber auch alles bestens, und nur Dein Verstand"+ |
| 205 | " will das nicht nachvollziehen.",78)); |
| 206 | AddDetail("verstand",BS( |
| 207 | "Ja, auch Du kannst ihm nicht immer folgen, also wundere Dich "+ |
| 208 | "nicht, warum dieses Leder hier golden verfaerbt ist und die B"+ |
| 209 | "uchstaben darauf schwarz.",78)); |
| 210 | AddDetail(({"lettern","buchstaben"}),BS( |
| 211 | "Du kannst sie lesen.",78)); |
| 212 | AddDetail(({"name","namen"}),BS( |
| 213 | "Man kann ihn genauso lesen wie die Buchstaben.",78)); |
| 214 | AddDetail("kontrast",BS( |
| 215 | "Die Buchstaben heben sich wirklich deutlich vom gueldenen Led"+ |
| 216 | "er des Einbands ab.",78)); |
| 217 | AddDetail("einband",BS( |
| 218 | "Es ist kein aufwaendiger Einband, fuerwahr. Dennoch faszinier"+ |
| 219 | "t die Pracht, die mit den schwarzen Lettern kontrastiert.",78)); |
| 220 | AddDetail("pracht",BS( |
| 221 | "So muss man den goldenen Einband wohl nennen.",78)); |
| 222 | AddDetail(({"papier","seiten","buchseiten","seite","buchseite"}),BS( |
| 223 | "Das Papier ist von guter Qualitaet, die Buchseiten lassen sic"+ |
| 224 | "h sicher einfach beschreiben.",78)); |
| 225 | AddDetail(({"schwarze buchseiten","schwarze buchseite", |
| 226 | "schwarze buchseite"}),BS( |
| 227 | "Tatsaechlich, beim Blaettern siehst Du einige schwarze Buchse"+ |
| 228 | "iten, die unbeschrieben sind. Was hat dies zu bedeuten ?",78)); |
| 229 | AddDetail("qualitaet",BS( |
| 230 | "Du siehst, dass das Papier fest und bluetenweiss ist.",78)); |
| 231 | AddReadDetail(({"buch","buechlein","tagebuch"}),BS( |
| 232 | "Das Buch hat ein Inhaltsverzeichnis. Wenn dort etwas steht, k"+ |
| 233 | "annst Du das oder die Kapitel sicher lesen.",78)); |
| 234 | AddDetail("kapitel",BS( |
| 235 | "Lies nur im Inhaltsverzeichnis nach, vielleicht hat das Buch "+ |
| 236 | "bereits ein oder mehrere Kapitel.",78)); |
| 237 | AddReadDetail("kapitel",BS( |
| 238 | "Welches Kapitel willst Du denn lesen ? Sie sind sicher durchn"+ |
| 239 | "ummeriert, wenn man schon etwas im Buch niedergeschrieben hat.",78)); |
| 240 | AddReadDetail(({"name","namen","buchstaben","lettern"}),#'le); |
| 241 | AddReadDetail(({"inhalt","inhaltsverzeichnis"}),#'in); |
| 242 | SetProp(P_MATERIAL,([MAT_LEATHER:10,MAT_PAPER:15,MAT_CEDAR:75])); |
| 243 | } |
| 244 | |
| 245 | int drop_book(string str) |
| 246 | { |
| 247 | if (!stringp(str)) |
| 248 | return 0; |
| 249 | if (strstr(lower_case(str),"pult",0)==-1) |
| 250 | return 0; |
| 251 | notify_fail(BS( |
| 252 | "Willst Du etwas auf das Pult legen ? Ein Buch waere passend, "+ |
| 253 | "aber es sollte schon etwas Besonderes sein.",78)); |
| 254 | if (strstr(lower_case(str),"buch",0)==-1&& |
| 255 | strstr(lower_case(str),"buechlein",0)==-1) |
| 256 | return 0; |
| 257 | notify_fail(BS( |
| 258 | "Das ist nicht Dein Lesepult, Du laesst es besser in Ruhe.",78)); |
| 259 | if (getuid(this_player())!=owner) |
| 260 | return 0; |
| 261 | notify_fail(BS( |
| 262 | "Auf dem Pult liegt schon ein goldenes Buch.",78)); |
| 263 | if (MQTBMASTER->QueryTagebuchAufPult(this_player())) |
| 264 | return 0; |
| 265 | notify_fail(BS( |
| 266 | "Entweder hast Du Dich noch nicht als wuerdig erwiesen, indem "+ |
| 267 | "Du alle Aufgaben im Knochentempel erfuellt hast oder Du hast "+ |
| 268 | "dem Avatar des Waechters der Nacht, Mhun'dae Hel, noch nicht "+ |
| 269 | "Deine Aufwartung gemacht und ihm gezeigt, dass Du wuerdig bis"+ |
| 270 | "t, ein geeignetes Buch zu empfangen. Auf alle Faelle kannst D"+ |
| 271 | "u hier noch nichts auf das Pult legen.",78)); |
| 272 | if (!present_clone(OBJ("buechlein_invers"),this_player())) |
| 273 | return 0; |
| 274 | MQTBMASTER->AddBuchAufPult(this_player()); |
| 275 | this_player()->ReceiveMsg(BS( |
| 276 | "Vorsichtig schlaegst Du Dein gueldenes Tagebuch auf, das Dir "+ |
| 277 | "Mhun'dae Hel, das Avatar des Waechters der Nacht, ueberreicht"+ |
| 278 | " hat. Du legst es sachte auf das Pult und merkst, dass es sof"+ |
| 279 | "ort eine magische Verbindung mit dem Lesepult eingeht. Es ist"+ |
| 280 | " nun untrennbar mit diesem verbunden.",78),MT_MAGIC,MA_USE); |
| 281 | tell_room(environment(),BS( |
| 282 | this_player()->Name(WER)+" legt vorsichtig ein gueldenes Buch "+ |
| 283 | "mit schwarzen Lettern aufgeschlagen auf dem Lesepult ab und b"+ |
| 284 | "etrachtet dieses dann ehrfuerchtig und zutiefst zufrieden.",78), |
| 285 | ({this_player()})); |
| 286 | return 1; |
| 287 | } |
| 288 | |
| 289 | int cmd_blaettern(string str) |
| 290 | { |
| 291 | notify_fail(BS( |
| 292 | "Auf dem Lesepult liegt doch gar kein Tagebuch.",78)); |
| 293 | if (!(MQTBMASTER->QueryTagebuchAufPult(find_player(owner)))) |
| 294 | return 0; |
| 295 | notify_fail(BS( |
| 296 | "Das ist nicht Dein Tagebuch, Du laesst es lieber in Frieden.",78)); |
| 297 | if (getuid(this_player())!=owner) |
| 298 | return 0; |
| 299 | this_player()->ReceiveMsg(BS( |
| 300 | "Du blaetterst ein wenig durch Dein Tagebuch und stoesst auf e"+ |
| 301 | "inige raetselhafte schwarze Seiten. Was mag es damit auf sich"+ |
| 302 | " haben ? Ob Du sie herausnehmen kannst ?",78),MT_LOOK,MA_LOOK); |
| 303 | return 1; |
| 304 | } |
| 305 | |
| 306 | int take_page(string str) |
| 307 | { |
| 308 | if (!stringp(str)) |
| 309 | return 0; |
| 310 | if (present(str,environment())) |
| 311 | return 0; |
| 312 | notify_fail(BS( |
| 313 | "Wo siehst Du denn hier ein Buch ?",78)); |
| 314 | if (!(MQTBMASTER->QueryTagebuchAufPult(this_player()))&& |
| 315 | strstr(lower_case(str),"buch")!=-1) |
| 316 | return 0; |
| 317 | if ((owner!=getuid(this_player()))&& |
| 318 | strstr(lower_case(str),"buch")!=-1) |
| 319 | notify_fail(BS( |
| 320 | "Dies ist nicht Dein Lesepult oder Dein Buch darauf, deshalb l"+ |
| 321 | "aesst Du es vorsichtshalber liegen.",78)); |
| 322 | return 0; |
| 323 | if ((owner!=getuid(this_player()))&& |
| 324 | strstr(lower_case(str),"seite")!=-1) |
| 325 | notify_fail(BS( |
| 326 | "Die Eigentuemerin oder der Eigentuemer des Lesepults haette s"+ |
| 327 | "icher etwas dagegen, wenn Du das Buch zerstoerst, also laesst"+ |
| 328 | " Du es lieber.",78)); |
| 329 | return 0; |
| 330 | // Heilung 1x alle 6 Stunden. |
| 331 | if (this_player()->check_and_update_timed_key(21600,"Ark_Hels_Schwarzes_Buch")==-1) |
| 332 | { |
| 333 | object o; |
| 334 | this_player()->ReceiveMsg(BS( |
| 335 | "Du reisst erst vorsichtig eine schwarze Seite und dann eine"+ |
| 336 | " weitere aus dem goldenen Buch. Dann ueberfaellt Dich eine "+ |
| 337 | "kleine Schwaeche, die Dich vor weiterem Zerstoeren innehalt"+ |
| 338 | "en laesst. Du solltest Hels Grosszuegigkeit nicht ueberscha"+ |
| 339 | "etzen.",78),MT_FEEL,MA_TAKE); |
| 340 | tell_room(environment(),BS( |
| 341 | this_player()->Name(WER)+" reisst zwei Seiten aus dem Buch, "+ |
| 342 | "das auf dem Pult liegt. Dann haelt "+this_player()->QueryPronoun(WER)+""+ |
| 343 | " inne, wahrscheinlich folgt "+this_player()->QueryPronoun(WER)+""+ |
| 344 | " einer klugen Eingebung.",78)); |
| 345 | o=clone_object(OBJ("reg_seite")); |
| 346 | if (o->move(this_player())!=MOVE_OK) |
| 347 | { |
| 348 | o->remove(1); |
| 349 | this_player()->ReceiveMsg(BS( |
| 350 | "Du kannst die erste Seite nicht mehr tragen, sie loest sic"+ |
| 351 | "h einfach auf.",78),MT_MAGIC,MA_REMOVE); |
| 352 | } |
| 353 | // Die erste Seite behandelt, hier, falls man auch die zweite |
| 354 | // Seite nicht tragen kann oder mit der ersten am Limit ist. |
| 355 | o=clone_object(OBJ("reg_seite")); |
| 356 | if (o->move(this_player())!=MOVE_OK) |
| 357 | { |
| 358 | o->remove(1); |
| 359 | this_player()->ReceiveMsg(BS( |
| 360 | "Du kannst die zweite Seite nicht mehr tragen, sie loest si"+ |
| 361 | "ch einfach auf.",78),MT_MAGIC,MA_REMOVE); |
| 362 | } |
| 363 | return 1; |
| 364 | } |
| 365 | this_player()->ReceiveMsg(BS( |
| 366 | "Vergeblich reisst Du mehr oder weniger vorsichtig an einigen"+ |
| 367 | " schwarzen Seiten im Buch herum, doch sie bleiben stoerrisch"+ |
| 368 | ". Es wird wohl ein wenig dauern, bis Du das wieder versuchen"+ |
| 369 | " kannst.",78),MT_MAGIC,MA_USE); |
| 370 | tell_room(environment(),BS( |
| 371 | this_player()->Name(WER)+" reisst im Buch auf dem Lesepult he"+ |
| 372 | "rum.",78),({this_player()})); |
| 373 | return 1; |
| 374 | } |
| 375 | |
| 376 | int cmd_lesen(string str) |
| 377 | { |
| 378 | int k; |
| 379 | if(!str) return 0; |
| 380 | if (owner=="Anonymus") |
| 381 | { |
| 382 | write (BS( |
| 383 | "Dieses Lesepult scheint niemandem zu gehoeren ... es loest s"+ |
| 384 | "ich daher einfach auf, als Du darauf etwas lesen willst.",78)); |
| 385 | remove(1); |
| 386 | return 1; |
| 387 | } |
| 388 | if (getuid(this_player())!=owner) |
| 389 | { |
| 390 | notify_fail(BS( |
| 391 | "Dieses Tagebuch gehoert "+capitalize(owner)+", nicht Dir, Du"+ |
| 392 | " bist eigentlich nicht so recht an dem interessiert, was man"+ |
| 393 | " in dem Buch niedergeschrieben hat. Sicher ist es uebertrieb"+ |
| 394 | "en langatmig formuliert und stimmt nicht genau mit dem ueber"+ |
| 395 | "ein, was wirklich geschah. Man kennt das ja.",78)); |
| 396 | return 0; |
| 397 | } |
| 398 | if (strstr(lower_case(str),"kapitel",0)!=-1&& |
| 399 | sscanf(lower_case(str),"kapitel %d",k)!=1) |
| 400 | { |
| 401 | write (BS( |
| 402 | "Willst Du ein Kapitel aus dem Buch lesen ? Dann gib bitte ei"+ |
| 403 | "ne Ziffer an.",78)); |
| 404 | return 1; |
| 405 | } |
| 406 | if (k>0) |
| 407 | { |
| 408 | MQTBMASTER->LiesQuest(k,this_player()); |
| 409 | return 1; |
| 410 | } |
| 411 | return 0; |
| 412 | } |
| 413 | |
| 414 | int cmd_eintragen(string str) |
| 415 | { |
| 416 | int i; |
| 417 | if (!(MQTBMASTER->QueryTagebuchAufPult(this_player()))) |
| 418 | { |
| 419 | notify_fail(BS( |
| 420 | "Du findest hier nichts, worin Du etwas eintragen koenntest.",78)); |
| 421 | return 0; |
| 422 | } |
| 423 | if (getuid(this_player())!=owner) |
| 424 | { |
| 425 | notify_fail(BS( |
| 426 | "Dieses Tagebuch gehoert "+capitalize(owner)+", nicht Dir, Du"+ |
| 427 | " kannst darin nichts eintragen.",78)); |
| 428 | return 0; |
| 429 | } |
| 430 | notify_fail(BS( |
| 431 | "Deine Missionen im Knochentempel ... besser gesagt, dem Wyrmt"+ |
| 432 | "empel, sie sind allesamt tapfer von Dir erfuellt worden. Du k"+ |
| 433 | "annst hier nichts weiter mehr eintragen, sicher aber von der "+ |
| 434 | "arkanen Macht des Buches profitieren, wenn Du es einmal durch"+ |
| 435 | "blaetterst.",78)); |
| 436 | return 0; |
| 437 | } |
| 438 | |
| 439 | string calc_name() |
| 440 | { |
| 441 | string *nam; |
| 442 | string res; |
| 443 | int i,j; |
| 444 | res=""; |
| 445 | if (owner=="") |
| 446 | return ""; |
| 447 | nam=explode(upperstring(owner),""); |
| 448 | if (j=sizeof(nam)) |
| 449 | { |
| 450 | switch(j) |
| 451 | { |
| 452 | case 3..4: |
| 453 | res=" "; |
| 454 | break; |
| 455 | case 5: |
| 456 | res=" "; |
| 457 | break; |
| 458 | case 7: |
| 459 | res=" "; |
| 460 | break; |
| 461 | case 9: |
| 462 | res=" "; |
| 463 | break; |
| 464 | default: |
| 465 | res=" "; |
| 466 | } |
| 467 | for (i=0;i<j;i++) |
| 468 | { |
| 469 | res+=nam[i]+" "; |
| 470 | } |
| 471 | } |
| 472 | return res; |
| 473 | } |
| 474 | |
| 475 | string le(string key) |
| 476 | { |
| 477 | return "\n"+ |
| 478 | " De Templum Os Hel\n\n"+ |
| 479 | calc_name()+"\n\n"; |
| 480 | } |
| 481 | |
| 482 | string in(string key) |
| 483 | { |
| 484 | if (owner!=getuid(this_player())) |
| 485 | return "Dort steht allerdings nichts. Seltsam.\n"; |
| 486 | return MQTBMASTER->LiesInhalt(find_player(owner)); |
| 487 | } |
| 488 | |
| 489 | // Das hier bezeichnet den Urheber des Moebelstuecks. |
| 490 | // Nicht meine Idee! |
| 491 | string GetOwner() { return "Ark"; } |
| 492 | |
| 493 | int cmd_oeffnen(string str) |
| 494 | { |
| 495 | if (strstr(lower_case(str),"pult")!=-1) |
| 496 | { |
| 497 | this_player()->ReceiveMsg( |
| 498 | "Du kannst das Pult nicht oeffnen, nur etwas zum Lesen darauflegen.", |
| 499 | MT_LOOK,MA_FEEL); |
| 500 | return 1; |
| 501 | } |
| 502 | if (strstr(lower_case(str),"buch")!=-1) |
| 503 | { |
| 504 | if (!(MQTBMASTER->QueryTagebuchAufPult(this_player()))) |
| 505 | return 0; |
| 506 | this_player()->ReceiveMsg( |
| 507 | "Das schwarze Buch ist doch schon geoeffnet.",MT_LOOK,MA_FEEL); |
| 508 | return 1; |
| 509 | } |
| 510 | // Alles andere per Default. |
| 511 | return 0; |
| 512 | } |
| 513 | |
| 514 | int cmd_schliessen(string str) |
| 515 | { |
| 516 | if (strstr(lower_case(str),"pult")!=-1) |
| 517 | { |
| 518 | this_player()->ReceiveMsg( |
| 519 | "Du kannst das Pult nicht schliessen.",MT_LOOK,MA_FEEL); |
| 520 | return 1; |
| 521 | } |
| 522 | if (strstr(lower_case(str),"buch")!=-1) |
| 523 | { |
| 524 | if (!(MQTBMASTER->QueryTagebuchAufPult(this_player()))) |
| 525 | return 0; |
| 526 | this_player()->ReceiveMsg( |
| 527 | "Das Buch bleibt trotz Deiner Bemuehungen einfach offen.",MT_LOOK,MA_FEEL); |
| 528 | return 1; |
| 529 | } |
| 530 | else return 0; |
| 531 | } |
| 532 | |
| 533 | mixed _query_noget() |
| 534 | { |
| 535 | if (getuid(this_player())!=owner) |
| 536 | return BS( |
| 537 | "Dies ist offensichtlich nicht Dein Pult, deshalb laesst "+ |
| 538 | "Du es auch besser liegen.",78); |
| 539 | return 0; |
| 540 | } |
| 541 | |
| 542 | string _query_autoloadobj() |
| 543 | { |
| 544 | return QueryOwner(); |
| 545 | } |
| 546 | |
| 547 | string _set_autoloadobj(string s) |
| 548 | { |
| 549 | return QueryOwner(); |
| 550 | } |
| 551 | |
| 552 | // Beim Kauf setzen wir erstmal nur den Eigentuemer. |
| 553 | // Ist aus Swifts Container, der diese Funktion im |
| 554 | // NotifyMove() aufruft. |
| 555 | protected void SetBesitzer(string uid, string uuid) |
| 556 | { |
| 557 | SetOwner(uid); |
| 558 | MQTBMASTER->AddLesepult(find_player(uid)||find_netdead(uid)); |
| 559 | } |