blob: a19ceccb96b195a68e26cadfc1254e5b3c2d2585 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001#pragma strong_types,save_types
2
3#include <properties.h>
4
5object caster;
6string*ids,name;
7int gender,article,plural;
8string lgdesc;
9string min,mout,mmin,mmout;
10mixed hands;
11
12void Initialize(object _caster,
13 string*_ids,
14 string _name,
15 int _gender,
16 int _article,
17 int _plural)
18{ if(!objectp(_caster) ||
19 !interactive(_caster)||
20 !stringp(_name) ||
21 _name=="" ||
22 _gender<0 ||
23 _gender>2)
24 { destruct(this_object());
25 return;
26 }
27 caster=_caster;
28 ids=_ids;
29 name=_name;
30 gender=_gender;
31 article=_article;
32 plural=_plural;
33 lgdesc=0;
34 shadow(caster,1);
35}
36
37void SetLongDesc(string txt)
38{ if(!stringp(txt)||txt=="")
39 return;
40 lgdesc=txt;
41}
42
43string* _query_ids()
44{ return caster->Query(P_IDS)+ids;
45}
46
47// nicht alle Verben mit veraendertem Aussehen
48int special_verb()
49{ string verb;
50 verb=query_verb();
51 if(!stringp(verb)||verb=="")
52 return 0;
53 if(verb[0]=='-')
54 return 1;
55 if(member(({"ruf","rufe","mruf","mrufe",
56 "teil","teile","erzaehl","erzaehle"}),verb)!=-1)
57 return 1;
58 return 0;
59}
60
61string _query_name()
62{ if(!special_verb())
63 return name;
64 return capitalize(caster->Query(P_NAME));
65}
66
67string _query_short()
68{ if(!special_verb())
69 return caster->Name();
70 return caster->Query(P_SHORT);
71}
72
73string _query_long()
74{ if(!special_verb())
75 { string str;
76 if(lgdesc)
77 return lgdesc;
78 str=caster->name();
79 return break_string(capitalize(str)+" ist "+str+" ist "+str+".",78);
80 }
81 return caster->Query(P_LONG);
82}
83
84int _query_gender()
85{ if(!special_verb())
86 return gender;
87 return caster->Query(P_GENDER);
88}
89
90int _query_article()
91{ if(!special_verb())
92 return article;
93 return caster->Query(P_ARTICLE);
94}
95
96int _query_plural()
97{ if(!special_verb())
98 return plural;
99 return caster->Query(P_PLURAL);
100}
101
102string _query_race()
103{ if(!special_verb())
104 return name;
105 return caster->Query(P_RACE);
106}
107
108varargs int remove(int silent) {
109 unshadow();
110 destruct(this_object());
111 return 1;
112}
113
114void stop_shadow()
115{
116 remove();
117}
118
119string _query_presay()
120{ return"";
121}
122
123string _query_title()
124{ return"";
125}
126
127string _set_msgin(string val)
128{ return min=val;
129}
130
131string _query_msgin()
132{ return min;
133}
134
135string _set_msgout(string val)
136{ return mout=val;
137}
138
139string _query_msgout()
140{ return mout;
141}
142
143string _set_mmsgin(string val)
144{ return mmin=val;
145}
146
147string _query_mmsgin()
148{ return mmin;
149}
150
151string _set_mmsgout(string val)
152{ return mmout=val;
153}
154
155string _query_mmsgout()
156{ return mmout;
157}
158
159mixed _set_hands(mixed val)
160{ return hands=val;
161}
162
163mixed _query_hands()
164{ return hands;
165}
166
167varargs int Defend(int dam,mixed dam_type,mixed spell,object enemy)
168{ object ob;
169 if(!enemy || // Silvana 26.1.2002
170 (!query_once_interactive(previous_object())&&
171 !query_once_interactive(enemy)))
172 return caster->Defend(dam,dam_type,spell,enemy);
173 else
174 { enemy->StopHuntFor(caster);
175 caster->StopHuntFor(enemy);
176 }
177 if(objectp(ob=present("zauberer\nshadow",caster)))
178 ob->remove();
179 if(this_object())
180 remove();
181 return 0;
182}
183
184int Kill(object enemy)
185{ object ob;
186 if(!query_once_interactive(enemy))
187 return caster->Kill(enemy);
188 if(objectp(ob=present("zauberer\nshadow",caster)))
189 ob->remove();
190 if(this_object())
191 remove();
192 return 0;
193}
194
195int InsertEnemy(object enemy)
196{ object ob;
197 if(!query_once_interactive(enemy))
198 return caster->InsertEnemy(enemy);
199 else {
200 enemy->StopHuntFor(caster);
201 caster->StopHuntFor(enemy);
202 }
203 if(objectp(ob=present("zauberer\nshadow",caster)))
204 ob->remove();
205 if(this_object())
206 remove();
207 return 0;
208}
209
210string short()
211{ if(load_name(previous_object()) == "/obj/werliste")
212 return capitalize(geteuid(caster))+" verkleidet als "+caster->short();
213 return caster->short();
214}
215
216varargs string long()
217{ if(lgdesc)
218 return lgdesc;
219 return caster->long();
220}