blob: 50a36bea3ba3399ee99fd77b4b4d4cbed0bbdf13 [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) {
MG Mud User88f12472016-06-24 23:31:02 +020051 if (!str || !id(str)) return 0;
52 if (!QueryProp(P_SEITE)) write("Es ist schon geschlossen.\n");
53 else {
54 SetProp(P_SEITE, 0);
55 write("Du schliesst das Buch wieder.\n");
56 say(PL->name() + " schliesst ein Buch wieder.\n",PL);
57 }
58 return 1;
59}
60
61int blaettere(string str) {
62 int seite;
63
64 notify_fail("Zu welcher Seite moechtest Du blaettern?\n");
65 if (!str || !(seite = QueryProp(P_SEITE))) return 0;
66 if (sscanf(str,"zu seite %d", seite)<1 &&
67 ((seite < 1) || (seite > sizeof(load(QueryProp(P_BUCH)))))) return 0;
68 write("Du blaetterst zu Seite "+seite+".\n");
69 say(PL->name() + "blaettert in einem Buch.\n");
70 SetProp(P_SEITE, seite);
71 return 1;
72}
73
74int lies(string str)
75{
MG Mud User88f12472016-06-24 23:31:02 +020076 int seite;
77
78 notify_fail("Was willst Du lesen ? Syntax: LIES <ETWAS>.\n");
Arathorn1f5ac9b2021-09-14 14:30:09 +020079 if(!str || !id(str) || sscanf(str,"%~s")!=1) return 0;
MG Mud User88f12472016-06-24 23:31:02 +020080 say(PL->name() + " liest in einem Buch.\n",PL);
81
82 seite = QueryProp(P_SEITE);
83 PL->More(load(QueryProp(P_BUCH))[seite++]);
84 if (!QueryProp(P_SEITE)) return 1;
85 if (seite >= sizeof(load(QueryProp(P_BUCH)))) {
86 SetProp(P_SEITE, 0);
87 write("Du hast das Buch ausgelesen und schliesst es.\n");
88 say(PL->name() + " hat ein Buch ausgelesen und schliesst es.\n",PL);
89 } else {
90 SetProp(P_SEITE, seite);
91 write("Du blaetterst um.\n");
92 say(PL->name() + " blaettert um.\n",PL);
93 }
94 return 1;
95}
96