blob: 180c1c0bd07d22b3f81be341039b295d71e23e14 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001#pragma strong_types,save_types,rtt_checks
2
3inherit "/std/thing";
4
5#include <properties.h>
6#include <language.h>
7#include <defines.h>
8#include <sys_debug.h>
9
10#define P_SEITENZAHL "seitenzahl"
11#define P_SEITE "buchseite"
12#define P_BUCH "buchdir"
13
14string *load(string file) { return explode(read_file(file), "@seite@\n"); }
15
16protected void create()
17{
18 if (!clonep(this_object())) return;
19 ::create();
20 SetProp(P_SHORT, "Ein Buch");
21 SetProp(P_SEITE, 0);
22 SetProp(P_BUCH, "/items/buch/buch.info");
23 SetProp(P_SEITENZAHL, sizeof(load(QueryProp(P_BUCH))));
24 SetProp(P_SHORT, "Wie man ein Buch schreibt!");
25 SetProp(P_LONG,
26 "Du haeltst ein leinengebundenes Buch in Deinen Haenden. Der Titel lautet:\n"
27 +QueryProp(P_SHORT)+"\n");
28 SetProp(P_NAME,"Buch");
29 AddId("buch");
30 SetProp(P_GENDER, NEUTER);
31 SetProp(P_WEIGHT,80);
32 SetProp(P_NOBUY, 1);
33 AddCmd(({"lies","lese"}), "lies");
34 AddCmd("oeffne","oeffne");
35 AddCmd("schliesse","schliesse");
36 AddCmd("blaettere","blaettere");
37}
38
39int oeffne(string str) {
40 if (!str || !id(str)) return 0;
41 if (QueryProp(P_SEITE)) write("Es ist schon geoeffnet.\n");
42 else {
43 SetProp(P_SEITE, 1);
44 write("Du oeffnest das Buch auf Seite 1.\n");
45 say(PL->name() + " oeffnet ein Buch.\n",PL);
46 }
47 return 1;
48}
49
50int schliesse(string str) {
51 string was;
52
53 if (!str || !id(str)) return 0;
54 if (!QueryProp(P_SEITE)) write("Es ist schon geschlossen.\n");
55 else {
56 SetProp(P_SEITE, 0);
57 write("Du schliesst das Buch wieder.\n");
58 say(PL->name() + " schliesst ein Buch wieder.\n",PL);
59 }
60 return 1;
61}
62
63int blaettere(string str) {
64 int seite;
65
66 notify_fail("Zu welcher Seite moechtest Du blaettern?\n");
67 if (!str || !(seite = QueryProp(P_SEITE))) return 0;
68 if (sscanf(str,"zu seite %d", seite)<1 &&
69 ((seite < 1) || (seite > sizeof(load(QueryProp(P_BUCH)))))) return 0;
70 write("Du blaetterst zu Seite "+seite+".\n");
71 say(PL->name() + "blaettert in einem Buch.\n");
72 SetProp(P_SEITE, seite);
73 return 1;
74}
75
76int lies(string str)
77{
78 string was;
79 int seite;
80
81 notify_fail("Was willst Du lesen ? Syntax: LIES <ETWAS>.\n");
82 if(!str || !id(str) || sscanf(str,"%s",was)!=1) return 0;
83 say(PL->name() + " liest in einem Buch.\n",PL);
84
85 seite = QueryProp(P_SEITE);
86 PL->More(load(QueryProp(P_BUCH))[seite++]);
87 if (!QueryProp(P_SEITE)) return 1;
88 if (seite >= sizeof(load(QueryProp(P_BUCH)))) {
89 SetProp(P_SEITE, 0);
90 write("Du hast das Buch ausgelesen und schliesst es.\n");
91 say(PL->name() + " hat ein Buch ausgelesen und schliesst es.\n",PL);
92 } else {
93 SetProp(P_SEITE, seite);
94 write("Du blaetterst um.\n");
95 say(PL->name() + " blaettert um.\n",PL);
96 }
97 return 1;
98}
99