blob: f61a9dddf4298d720636dda339c1cddd647784db [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001//
2// Projecttool
3//
4
5#include "/p/service/mandragon/projektbrett/projectmaster.h"
6#include "/secure/wizlevels.h"
7#include <moving.h>
8
9inherit "/std/thing";
10string hilfe;
11static int changetime;
12static int suppressinfos;
13
14void create()
15{
16 if (!IS_CLONE(TO)) return;
17 ::create();
18 if (!find_object(PROJECTMASTER)) call_other(PROJECTMASTER,"???");
19
20 SetProp(P_NAME,"Schreibfeder");
21 SetProp(P_NODROP,"Du moechtest Deine Feder dann doch lieber behalten.\n");
22 SetProp(P_NEVERDROP,1);
23 SetProp(P_GENDER,FEMALE);
24 SetProp(P_SHORT,"Eine kleine magische Schreibfeder");
25 if (!changetime) changetime=1;
26 hilfe=BS("-----------------------------------------------------------------------------\n"
27 "Diese Feder ermoeglicht es Dir nicht nur, von ueberall her auf die "
28 "allseits beliebten Schwarzen Bretter fuer Projekte zuzugreifen, "
29 "sondern ermoeglicht es Dir auch, selber Projekte dort zu "
30 "veroeffentlichen.\n"
31 "Folgende Kommandos koennen Dir dabei helfen:\n\n"
32 "federhilfe - Diese Uebersicht\n"
33 "federdoku - Dokumentation aller Befehle\n"
34 "projekthilfe - Uebersicht ueber die Brettbefehle\n"
35 "AddProject - Projekt anlegen\n"
36 "RemoveProject <Nummer> - Projekt entfernen\n"
37 "ModifyProject <Nummer> - Projekt aendern\n"
38 "projektinfos ein|an|aus - Aenderungen (nicht mehr) anzeigen\n\n"
39 "Bei Fragen, Bugs und/oder Typos wende Dich bitte vertrauensvoll an den\n"
40 "Mandragon Deiner Wahl.\n"
41 "---------------------------------------------------------------------------");
42 SetProp(P_LONG,
43 BS("Diese kleine, weisse, magisch glaenzende Feder liegt sanft " +
44 "in Deiner Hand. Du spuerst foermlich, wie sie danach dringt, " +
45 "Neues zu schaffen und die Welt zu vergroessern.\n\n")+hilfe);
46 AddId(({"schreibfeder","feder","projekttool"}));
47 AddCmd("federhilfe","hilfe_fun");
48 AddCmd("projekthilfe","board_help");
49 AddCmd("projektliste","board_list");
50 AddCmd("federdoku","doku_fun");
51 AddCmd(({"projektdetail","projektdetails"}),"board_long");
52 AddCmd(({"addproject","AddProject","ap"}),"addproj_fun");
53 AddCmd(({"removeproject","RemoveProject","rp"}),"remproj_fun");
54 AddCmd(({"modifyproject","ModifyProject","mp"}),"modproj_fun");
55 AddCmd("projektinfos","watch_fun");
56 TO->move(TP,M_NOCHECK);
57 return;
58}
59
60void _set_autoloadobj(mixed val)
61{
62 if (intp(val)) changetime=time();
63 else if (pointerp(val)&&sizeof(val)==2)
64 {
65 changetime=val[0];
66 suppressinfos=val[1];
67 }
68 return;
69}
70
71int *_query_autoloadobj() { return ({ changetime, suppressinfos }); }
72
73int doku_fun(string arg)
74{
75 TP->More(PROJECTDOKU,1);
76 return 1;
77}
78
79int board_help(string arg)
80{
81 PROJECTMASTER->BoardHelp();
82 return 1;
83}
84
85int board_list(string arg)
86{
87 arg=TP->_unparsed_args(1);
88 if (!sizeof(arg)) (PROJECTMASTER)->ShowList();
89 else PROJECTMASTER->ParseArgs(arg);
90 changetime=time();
91 return 1;
92}
93
94int board_long(string arg)
95{
96 int number;
97 arg=TP->_unparsed_args(1);
98 notify_fail("Syntax: projektdetail <PROJEKTNUMMER>\n");
99 if (!sizeof(arg)) return 0;
100 if (!(number=to_int(arg))||(arg!=to_string(number))) return 0;
101 notify_fail("Projektnummern koennen nur Zahlen groesser Null sein.\n");
102 if (number<1) return 0;
103 PROJECTMASTER->ShowLong(number);
104 return 1;
105}
106
107int hilfe_fun(string arg)
108{
109 tell_object(TP,hilfe);
110 return 1;
111}
112
113int board_fun(string arg)
114{
115 PROJECTMASTER->ParseArgs(TP->_unparsed_args(1));
116 return 1;
117}
118
119int addproj_fun(string arg)
120{
121 if (!IS_LEARNER(TP))
122 {
123 tell_object(TP,"Wie bist DU denn an die Feder gekommen?\n");
124 TO->remove();
125 return 1;
126 }
127 PROJECTMASTER->ChangeData(0);
128 return 1;
129}
130
131int remproj_fun(string arg)
132{
133 if (!IS_LEARNER(TP))
134 {
135 tell_object(TP,"Wie bist DU denn an die Feder gekommen?\n");
136 TO->remove();
137 return 1;
138 }
139 notify_fail("Syntax: removeproject NUMMER\n");
140 if (!sizeof(arg)||!intp(to_int(arg))||(arg!=to_string(to_int(arg)))) return 0;
141 PROJECTMASTER->DeleteData(to_int(arg));
142 return 1;
143}
144
145int modproj_fun(string arg)
146{
147 if (!IS_LEARNER(TP))
148 {
149 tell_object(TP,"Wie bist DU denn an die Feder gekommen?\n");
150 TO->remove();
151 return 1;
152 }
153 notify_fail("Syntax: modifyproject NUMMER\n");
154 if (!arg||!intp(to_int(arg))||(arg!=to_string(to_int(arg)))) return 0;
155 notify_fail("Es gibt kein Projekt mit der Nummer 0.\n");
156 if (to_int(arg)==0) return 0;
157 PROJECTMASTER->ChangeData(to_int(arg));
158 return 1;
159}
160
161int watch_fun(string arg)
162{
163 if (!IS_LEARNER(TP))
164 {
165 tell_object(TP,"Wie bist DU denn an die Feder gekommen?\n");
166 TO->remove();
167 return 1;
168 }
169 if (!sizeof(arg))
170 {
171 tell_object(TP,BS(sprintf("Du bekommst derzeit %sInformationen "
172 "ueber Aenderungen am Projektbrett.",
173 suppressinfos?"keine ":"")));
174 return 1;
175 }
176 notify_fail("Syntax: projektinfos <ein|an|aus>\n");
177 if (arg!="ein"&&arg!="an"&&arg!="aus") return 0;
178 if (arg=="aus")
179 {
180 suppressinfos=1;
181 tell_object(TP,BS("Du wirst jetzt keine Meldungen mehr ueber "
182 "Aenderungen am Projektbrett erhalten.\n"));
183 return 1;
184 }
185 suppressinfos=0;
186 tell_object(TP,BS("Du bekommst ab sofort Meldungen ueber Aenderungen "
187 "am Projektbrett.\n"));
188 return 1;
189}
190
191void init()
192{
193 if (!IS_LEARNER(TP)) {
194 if (find_call_out("remove") == -1)
195 call_out("remove",0);
196 }
197 else ::init();
198 return;
199}
200
201void reset()
202{
203 if (!environment())
204 {
205 destruct(TO);
206 return;
207 }
208 if (!suppressinfos&&changetime<(PROJECTMASTER->ChangeTime()))
209 tell_object(environment(),"Intuitiv spuerst Du, dass sich "
210 "die Aushaenge am Projektbrett geaendert haben.\n");
211 return;
212}