blob: 438f2c6780584fcbda888a19307b2b3df52c78fa [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// MorgenGrauen MUDlib
2//
3// player/soul.c -- Die Seele des Spielers
4//
5// $Id: soul.c 9527 2016-03-12 11:37:54Z Arathorn $
6
7// Letzte Aenderung vom 08.09.95 Wargon
8
9// Set TabStop to 2 characters
10
11/* Version 1.41 MG, September 95
12 - Bei "frage" und "antworte" Test auf P_PERM_STRING fuer Sprachflueche.
13 - bugfix bei "schweige" (nahm keine Adverbien an)
14 */
15
16/* Version 1.4 MG, August 95
17 - Hilfefunktion eingebaut, siehe auch soulhelp.c
18 - einige kleinere Aenderungen erst jetzt durch eine neue Version gewuerdigt
19 - neue Verben, wie eigentlich fast immer :>
20 - typos und bugs gefixed (und neue eingebaut...)
21 - Funktion zur Abfrage von Adverbien von aussen eingebaut (Hallo, Anthea :>)
22 - so schlimm kann das doch nicht sein, einen TabStop von 2 zu nehmen, fuer
23 dieses eine file, alles andere zerlegt meine Formatierung immer so :<
24 - koenntet ihr bitte mal oben das "Letzte Aenderung" aendern, wenn ihr
25 irgendwo was aendert?
26 */
27
28/* Version 1.35 MG, Dezember 94
29 - Verben
30 - Aenderung des Parsings der quoted adverbs
31 - rknuddel ignorieren wird vom normalen ignore uebernommen
32 */
33
34/* Version 1.32 MG, Juli 94
35 - einige Verben
36 - ignorieren des rknuddel
37 */
38
39/* Version 1.31 MG, Mai 94
40 - einige Verben
41 */
42
43/* Version 1.3 MG, Mai 94
44 - quoted adverbs GEHEN jetzt
45 - ParseRest / ParseRemote neu geschrieben
46 */
47
48/* Version 1.21 MG, April 94
49 - quoted adverbs
50 */
51
52/* Danke an Angus fuer den Text von "liebe" */
53
54/* Version 1.2 MG, Januar 94
55 - Umstellung der Feelings von vielen kleinen Funktionen auf eine grosse,
56 damit der Funktionsoverhead wegfaellt.
57 - neue Ausgabe der Adverbien, mit more und nur noch eines pro Zeile
58 - mal wieder neue Verben.
59 - und das neue Standardadverb "jofi" :)
60 */
61
62/* Version 1.1 MG, November 93
63 Aenderungen:
64 - Ich habe "alle(n)" eingebaut. Die Verwaltung steht, man kann jetzt
65 Verben die Moeglichkeit "alle" geben (Bsp. "wink alle").
66 - inzwischen wieder einige Verben mehr, aber muss ich das noch
67 erwaehnen?
68 - (HASS) Rumata hat mein schoenes System fuer die Ausgabestrings
69 verkompliziert. Statt &a steht da jetzt z.B. @@adverb@@, was in
70 einer weiteren unnoetigen Funktion resultierte. Naja.
71 Highlander ryn Tahar
72 */
73
74/*
75 Ha! Ich nehme jetzt die erste ganze Versionsnummer fuer mich in Anspruch :)
76 So, heute ist's geschafft (Ich auch...). Ich bin fertig - ich mach nur
77 noch neue Verben rein, wenn Ideen kommen.
78 Gegeben an Dienstag, dem 22. Juni 1993 im heimatlichen Horst.
79 Highlander ryn Tahar.
80 P.S.: Kopiere sich das Ding, wer will - unter folgenden Bedingungen:
81 - Den Goettern von MorgenGrauen und
82 - Highlander@TAPPMud Bescheid sagen und ausserdem
83 *seufz* nehmt Highlander hier in MorgenGrauen!! -HrT
84 Ha! Ihr koennt wieder TAPPMud nehmen :> Aber sagt's ruhig in MG. -HrT
85 - entweder den ganzen Schwall hier drinlassen oder mich mit einem
86 neuen Text erwaehnen.
87 Das Ganze unter der Voraussetzung, dass ueberhaupt mal jemand eine deutsche
88 Seele braucht und sie nicht selber schreiben will :-) (ersparts euch lieber)
89 Highlander ryn Tahar.
90
91 **Arbeit:
92 Einbau von Adverbien, andere Reaktionen bei Geistern als "Wie bitte?",
93 einige neue Verben, einige alte Verben rausgeschmissen.
94 Weil es Probleme mit dem autoloading der playeradverbs gab, wurde
95 ausserdem die soul vom Objekt zum inheritfile fuer die playershell.
96
97 **Ideen zum Weitermachen:
98 - (verb) alle, z.B. tritt alle -- Moeglichkeit eingebaut
99 - Geisterverben mit Adverb
100
101 Version 1.0 fuer MorgenGrauen Highlander Mai/Juni 93
102 */
103
104
105/* Hier ist sie nun, die DEUTSCHE version der soul,
106 viel Spass damit.
107 Poietix Mai 1992
108 Vers.: 0.4 fuer JRMud
109 P.S. bitte meckert nicht dran rum , sondern verbessert und
110 erweitert sie.
111
112 Olpp November 1992
113 Vers.: 0.5 fuer MorgenGrauen
114
115 He, Olpp, schreibt man nicht die neueste Aenderung UEBER die alten?
116 *grins*, Highlander
117 */
118#pragma strong_types
119#pragma save_types
120//#pragma range_check
121#pragma no_clone
122#pragma pedantic
123
124#define SOULHELP "/std/player/soulhelp"
125#define LF "\n"
126#define NOT_SELF 1
127#define NOT_DEAD 1
128
129#define QPP QueryPossPronoun
130#define RETURN return _notify_fail
131#define Return return 0||_notify_fail // netter Trick, muss ich mir merken -HrT
132#define GHOSTCHECK(sel,oth,vic) if (ghost()) { write(sel); say(oth,who||ME);\
133 if (vic) who->Message(vic); return 1; }
134#define HELPCHECK(x) if (str && (str=="-h" || str=="-?" || str=="/h" \
135 || str=="/?" || str=="hilfe"))\
136 { More(SOULHELP->Help(x)); return 1; }
137
138// "schau an" als nicht-Untersuchung. Klappt aber anscheinend nicht, weil
139// ich nicht gegen den GD ankomme. Also besser auskommentiert lassen.
140#ifdef SCHAU_AN
141#undef SCHAU_AN
142#endif
143
144// Anpiepsen mit Text. Im Moment erlaubt, bei Missfallen auskommentieren und
145// in der Hilfe auskommentieren.
146#ifdef WECKE
147#undef WECKE
148#endif
149
150#define WECKE
151
152#define NEED_PROTOTYPES
153#include <thing/description.h>
154#include <thing/properties.h>
155#include <player.h>
156#include <player/comm.h>
157#include <language.h>
158#undef NEED_PROTOTYPES
159
160#include <properties.h>
161
162#include <defines.h>
163#include <moving.h>
164#include <wizlevels.h>
165#include <class.h>
166
167static object who, ofoo;
168static int for_all, flag, ifoo;
169mapping plr_adverbs;
170static string out_sel, out_vic, out_oth, adverb, sfoo;
171
172private void ParseAdverb(string *words);
173private string convert_string(string str);
174varargs mixed More(string str, int fflag, string returnto);
175string MatchAdverb(string str);
176
177mapping
178QueryStdAdverbs() {
179 return ([
180 "unve" : "unverschaemt",
181 "gutg" : "gutgelaunt",
182 "gutm" : "gutmuetig",
183 "froh" : "froh",
184 "glue" : "gluecklich",
185 "wuet" : "wuetend",
186 "frec" : "frech",
187 "daem" : "daemonisch",
188 "boes" : "boese",
189 "ungl" : "ungluecklich",
190 "lang" : "langsam",
191 "schn" : "schnell",
192 "jamm" : "jammernd",
193 "freu" : "freundlich",
194 "shue" : "schuechtern",
195 "amue" : "amuesiert",
196 "aerg" : "aergerlich",
197 "aner" : "anerkennend",
198 "erst" : "erstaunt",
199 "bitt" : "bitter",
200 "brei" : "breit",
201 "vors" : "vorsichtig",
202 "char" : "charmant",
203 "kalt" : "kalt",
204 "verf" : "verfuehrerisch",
205 "zufr" : "zufrieden",
206 "tief" : "tief",
207 "verz" : "verzweifelt",
208 "drec" : "dreckig",
209 "vert" : "vertraeumt",
210 "uebe" : "ueberzeugt",
211 "frus" : "frustriert",
212 "stra" : "strahlend",
213 "hoff" : "hoffnungsvoll",
214 "unge" : "ungeduldig",
215 "unsi" : "unsinnigerweise",
216 "unsc" : "unschuldig",
217 "unwi" : "unwissend",
218 "iron" : "ironisch",
219 "wiss" : "wissend",
220 "gema" : "gemaechlich",
221 "sehn" : "sehnsuechtig",
222 "laut" : "laut",
223 "lieb" : "liebevoll",
224 "froe" : "froehlich",
225 "dank" : "dankbar",
226 "natu" : "natuerlich",
227 "gedu" : "geduldig",
228 "perf" : "perfekt",
229 "vers" : "verspielt",
230 "hoef" : "hoeflich",
231 "stol" : "stolz",
232 "frag" : "fragend",
233 "rupp" : "ruppig",
234 "trau" : "traurig",
235 "vera" : "veraechtlich",
236 "scha" : "schamlos",
237 "erns" : "ernst",
238 "schu" : "schuechtern",
239 "zaer" : "zaertlich",
240 "sanf" : "sanft",
241 "entg" : "entgeistert",
242 "heim" : "heimtueckisch",
243 "gela" : "gelangweilt",
244 "wild" : "wild",
245 "jofi" : "wie Jof, wenn er mal nicht idlet",
246 ]);
247}
248
249mapping
250QueryAdverbs() {
251 if (extern_call())
252 return deep_copy(plr_adverbs);
253 return plr_adverbs;
254}
255
256string
257MatchAdverb(string a) {
258 ParseAdverb(explode(a," "));
259 return adverb;
260}
261
262// Verwaltungsroutinen
263
264static void
265add_soul_commands() {
266 if (!plr_adverbs)
267 plr_adverbs=([]);
268 add_action("SoulComm", "", 1);
269}
270
271static int
272verben_liste() {
273 More(SOULHELP->Help());
274 return 1;
275}
276
277#define ghost() QueryProp(P_GHOST)
278#define frog() QueryProp(P_FROG)
279#define capname() capitalize(name())
280#define gname() (ghost()?(frog()?"Der Geist eines Frosches"\
281 :"Der Geist von "+capname())\
282 :capname())
283
284varargs private void
285ParseRest(string arg, mixed extra) {
286 string wer,wie,*words,quotea;
287 int num,bis;
288 who = for_all = adverb = 0;
289 if (!arg) return;
290 if (extra)
291 if (!pointerp(extra)) {
292 if (sscanf(arg, extra+" %s", wie)==1)
293 arg=wie;
294 }
295 else
296 for (bis=sizeof(extra),num=0; num<bis; num++)
297 if (sscanf(arg, extra[num]+" %s", wie)==1)
298 arg=wie;
299
300 if ((bis=strstr(arg, "/"))>=0)
301 quotea=arg[bis..],arg=arg[0..bis-1];
302 quotea=quotea||"",arg=arg||"";
303
304 words=explode(implode(explode(arg, ","), " und"), " ");
305 if (!sizeof(words)) return;
306 if (sizeof(words) && (words[0]=="alle" || words[0]=="allen"))
307 for_all=1,wer=words[0],words=words[1..];
308 if (!for_all) { /* noch kein Opfer */
309 wer=match_living(lower_case(words[0]));
310 if (stringp(wer)) who=present(wer, environment(ME));
311 if (!who) who=present(words[0], environment(ME));
312 if (who && who->QueryProp(P_INVIS)) who=0;
313 }
314 if (who && sizeof(words))
315 words=words[1..]; /* Opfer gefunden - wenn's eines gibt */
316 words+=explode(quotea, " ");
317 words-=({""});
318 if (sizeof(words)) ParseAdverb(words);
319}
320
321private int
322ParseRemote(string arg) {
323 string wer,*words;
324
325 adverb = 0; // Adverb vom letzten Mal keinesfalls wiederverwenden. ;-)
326
327 if (!stringp(arg) || !sizeof(arg)) return 0;
328
329 words=explode(arg," ");
330
331 mixed liv = match_living(lower_case(words[0]));
332 if (stringp(liv))
333 who=find_player(liv);
334
335 if (who) {
336 // Ziel ist ein Spieler.
337 if (!who->QueryProp(P_INVIS) || IS_WIZARD(ME))
338 {
339 // Spieler ist nicht Invis oder ich bin Magier.
340 string nam = (query_once_interactive(ME) ? getuid() :
341 lower_case(name(RAW)));
342 if (query_verb()[0..5]=="rknudd" &&
343 who->TestIgnore(nam+".rknuddel") )
344 {
345 // ich oder das Kommando werde ignoriert.
346 write(who->Name(WER)+" ignoriert Deinen Knuddelversuch.\n");
347 return 1;
348 }
349 }
350 else
351 // Spieler ist invis und ich bin kein Magier.
352 who = 0;
353 }
354 // kein eingeloggter und sichtbarer Spieler. Vielleicht ein NPC? (BTW: kein
355 // else if, weil im if fuer Spieler oben who genullt werden kann und dann
356 // nochmal nach nem NPC gesucht werden soll.)
357 if (!who) {
358 wer = match_living(lower_case(words[0]));
359 if(stringp(wer))
360 who=present(wer,environment(ME));
361 if (!who) who=present(words[0], environment(ME));
362 if (who && who->QueryProp(P_INVIS)) who=0;
363 }
364
365 if (!who || sizeof(words)==1) return 0;
366 words=words[1..];
367 ParseAdverb(words);
368 return(0);
369}
370
371/**
372 Gibt den passenden Adverb-Text zu einem key zurueck
373 \param s Danach wird in der Adverbien-Liste gesucht
374 \param fuzzy
375 \return Der gefundene Adverbientext oder 0
376 */
377varargs string GetPlayerAdverb( string s, int fuzzy ) {
378 int i, j;
379 string *search_pattern,
380 *search_result,
381 result;
382
383 // Erstmal gucken, ob der String direkt gefunden werden kann
384 // das geht am schnellsten
385 result = QueryStdAdverbs()[s] || plr_adverbs[s];
386
387 // Wenn noch kein Ergebnis gefunden, und man unscharf suchen will
388 if ( fuzzy && !result) {
389
390 // Suchmuster fuer das Intersect erzeugen
391 search_pattern=({s});
392
393 j = sizeof(s)-1;
394 for ( i=2; i < j ;i++) {
395 search_pattern += ({s[0..<i]});
396 }
397
398 // Intersect zwischen allen bekannten Abkuerzungen und Search-Pattern
399 // erzeugen. Dieses wird dann gleichzeitig nach Laenge sortiert
400 // genauester Treffer = String mit groesster Laenge
401 search_result = sort_array(
402 (m_indices(QueryStdAdverbs()) | m_indices(plr_adverbs))&search_pattern,
403 #'>);
404
405 // Adverb zum genauesten Treffer zurueckgeben
406 if (sizeof(search_result))
407 result = QueryStdAdverbs()[search_result[0]] ||
408 plr_adverbs[search_result[0]];
409 }
410
411 return result;
412}
413
414/**
415 Parst die Adverbienparameter fuer Verben und speichert die
416 passende Textausgabe in der globalen Variable "adverb"
417 \param words Array mit den zu parsenden Adverbien-Strings
418*/
419private void
420ParseAdverb(string *words) {
421 int num,andsign,bis;
422 string qadv,*adv,cnt;
423
424 adv=({});
425 qadv=0;
426
427 bis=sizeof(words);
428 // Sonderfall Gequotetes Adverb (alles nach dem Quote) speichern und aus
429 // Words rausschneiden.
430 for (num=0; num<bis; num++)
431 if (words[num][0..0]=="/") {
432 words[num]=words[num][1..];
433 qadv=implode(words[num..], " ");
434 words=words[0..num-1];
435 break;
436 }
437
438 // Es kann sein, dass vor dem Quote noch eine und steht. Das wird jetzt auch
439 // noch entfernt, muss aber spaeter wieder eingefuegt werden.
440 if (sizeof(words) && words[<1]=="und") {
441 words=words[0..<2];
442 andsign=1;
443 }
444
445 // Weitersuchen?
446 if (bis=sizeof(words))
447 for (num=0; num<bis; num+=2)
448 adv+=({GetPlayerAdverb(words[num], 1)});
449 cnt=CountUp(adv-({0}));
450
451 // Ausgabe zusammenbauen
452 if (andsign)
453 adverb=CountUp((sizeof(adv) ? adv : ({}))+(qadv ? ({qadv}) : ({})));
454 else if (sizeof(cnt) && sizeof(qadv))
455 adverb = cnt + " " + qadv;
456 else if (sizeof(qadv))
457 adverb = qadv;
458 else if (sizeof(cnt))
459 adverb = cnt;
460 if (adverb=="") adverb=0;
461}
462
463private mixed MixedOut(int casus) {
464 object *envs,*vics;
465 string *names,out,aufz;
466 int count,msg;
467
468 for_all=0;
469 vics=({});
470 names=({});
471 envs=all_inventory(environment())-({this_player()});
472 if (!(count=sizeof(envs)))
473 RETURN("Nichts und niemand da. Schau Dich naechstes Mal besser um.\n");
474 for ( ; count--; )
475 if (living(envs[count]) && !envs[count]->QueryProp(P_INVIS)) {
476 vics+=({envs[count]});
477 names+=({envs[count]->name(casus)});
478 }
479 if (!sizeof(vics))
480 RETURN("Keiner da. Schau Dich naechstes Mal besser um.\n");
481 aufz=CountUp(names);
482 for (count=sizeof(vics); count--;)
483 {
484 out=implode(explode(out_vic, "@@alle@@"),aufz);
485 out = regreplace( out, "\\<"+vics[count]->name(casus)+"\\>",
486 capitalize(vics[count]->QueryDu(casus)), 0 );
487
488 msg=vics[count]->ReceiveMsg(convert_string(out),MT_COMM,MA_EMOTE,
489 0,this_object());
490 switch(msg)
491 {
492 case MSG_DELIVERED:
493 case MSG_BUFFERED:
494 break;
495 case MSG_IGNORED:
496 case MSG_VERB_IGN:
497 case MSG_MUD_IGN:
498 write(vics[count]->Name()+" ignoriert Dich oder diesen Befehl.\n");
499 break;
500 default:
501 write(vics[count]->Name()+" konnte Dich gerade nicht lesen.\n");
502 }
503 }
504 write(break_string(convert_string(implode(explode(out_sel,"@@alle@@"),aufz)
505 +LF), 78));
506 return 1;
507}
508
509varargs private int
510CheckLife(int no_self,int no_dead, string no_self_text, string no_dead_text) {
511 if (who && living(who) && who!=this_player()) return 0;
512 if (no_self && who && who==this_player()) {
513 if (no_self_text)
514 write(no_self_text+LF);
515 else
516 write("Mach das mit anderen, nicht mit Dir selber.\n");
517 return 1;
518 }
519 if (who && !living(who) && no_dead) {
520 if (no_dead_text)
521 write(no_dead_text+LF);
522 else
523 write("Das darfst Du nur mit Lebewesen.\n");
524 return 2;
525 }
526 if (!who) {
527 write("Schau Dich erst mal um - das angegebene Objekt ist nicht da.\n");
528 return 3;
529 }
530 return(0); //non-void. Fall-through, alles OK.
531}
532
533private string
534convert_string(string str) {
535 /* Ich bin unschuldig, ich hatte das viel einfacher und schoener :)
536 Rumata wollte das so ;) -HrT */
537 str = implode( explode( str, "@@name@@" ), capname() );
538 str = implode( explode( str, "@@gname@@" ), gname() );
539 str = implode( explode( str, "@@wer@@" ),
540 (who?capitalize(who->name(WER,2)||""):"" ));
541 str = implode( explode( str, "@@ wen@@" ),
542 (who?" "+who->name(WEN,2):""));
543 str = implode( explode( str, "@@ wem@@" ),
544 (who?" "+who->name(WEM,2):""));
545 str = implode( explode( str, "@@wen@@" ),
546 (who?who->name(WEN,2):""));
547 str = implode( explode( str, "@@wem@@" ),
548 (who?who->name(WEM,2):""));
549 str = implode( explode( str, "@@wessen@@" ),
550 (who?who->name(WESSEN,2):""));
551 str = implode( explode( str, "@@adverb@@" ),
552 (adverb?" "+adverb:"") );
553 return str;
554}
555
556private int
557FeelIt() {
558 int msg, flg;
559
560 flg = MSGFLAG_SOUL;
561 if (query_verb() && (query_verb()[0..3]=="frag" || query_verb()[0..3]=="antw"))
562 flg |= MSGFLAG_SAY;
563 if (query_verb() && (query_verb()[0..5]=="rknudd" || query_verb()=="rwink"))
564 flg |= MSGFLAG_REMOTE;
565
566 // NPC haben keine TM-Hist (comm.c). Leider erben aber div. Magier die Soul
567 // (trotzdem sie in /std/player/ liegt) in ihren NPC... *fluch*
568 if (query_once_interactive(ME))
569 _recv(who, break_string(convert_string(out_sel),78), flg);
570 else
571 tell_object(ME, break_string(convert_string(out_sel),78));
572
573 if (out_vic && who) {
574 if (query_once_interactive(who)) {
575 msg=who->Message( break_string(convert_string( out_vic ),78), flg);
576 if (msg==-1)
577 write(who->name()+" ignoriert Dich oder diesen Befehl.\n");
578 } else
579 tell_object(who,break_string(convert_string( out_vic ),78));
580 }
581 if (out_oth)
582 say( break_string(convert_string( out_oth ),78), ({who,this_player()}) );
583 out_sel=out_vic=out_oth=0;
584 return 1;
585}
586
587/**
588 Die Funktion stellt einen Hilfetext zur Verfuegung und listet die
589 definierten Adverbien auf.
590 \param mine 0 = alle Adverbien,
591 1=nur selbst definierte Adverbien
592 2=nur die vom System bereitgestellten
593 */
594private int zeige_adverbs(int mine) {
595 mapping adverb_list;
596 string out,s;
597
598 // Parameter auswerten
599 switch (mine){
600 case 1:
601 adverb_list=plr_adverbs;
602 out = "Du hast folgende Adverbien definiert:\n";
603 break;
604 case 2:
605 adverb_list=QueryStdAdverbs();
606 out = "Systemseitig sind folgende Adverbien definiert:\n";
607 break;
608 default:
609 adverb_list=QueryStdAdverbs()+plr_adverbs;
610 out = "Folgende Adverbien stehen Dir zur Verfuegung:\n";
611 }
612
613 out +=" Abk. Adverb\n ====== ======\n";
614
615 if ( sizeof(adverb_list) == 0)
616 out += " keine.\n";
617 else
618 // Ueber alle Elemente der indizies der Adverbienliste gehen
619 foreach ( s : sort_array(m_indices(adverb_list), #'> ) ) {
620 out += break_string(adverb_list[s],78,
621 sprintf(" %-6s ",s),BS_INDENT_ONCE);
622 }
623
624 More(out+"\nWie diese Adverbien benutzt werden ist in <hilfe adverb> "
625 "beschrieben.\n");
626
627 return 1;
628}
629
630varargs static int
631SoulComm(string str, string _verb) {
632 int t_g,t_n,flag;
633 string str1,str2,str3,*taenze,vb;
634 out_sel=out_vic=out_oth=who=0;
635// if (this_interactive()!=ME) return 0;
636 if (interactive(ME)) str=_unparsed_args(); // NPCs haben das nicht :(
637 if (str=="") str=0;
638 vb=_verb||query_verb();
639 if (sizeof(vb)>1 && vb[<1]=='e' && vb!="noe") vb=vb[0..<2];
640 sfoo = 0;
641 switch (vb) {
642 /**************** Aechzen ***************/
643 case "aechz":
644 HELPCHECK("aechz");
645 ParseRest(str);
646 if (str && !adverb)
647 Return("Aechze wie?\n");
648 out_sel="Du aechzt@@adverb@@.";
649 out_oth="@@gname@@ aechzt@@adverb@@.";
650 return FeelIt();
651
652 /**************** Anschmiegen ***************/
653 case "schmieg":
654 HELPCHECK("schmieg");
655 ParseRest(str);
656 if (!who)
657 Return("An wen willst Du Dich anschmiegen?\n");
658 if (CheckLife(NOT_SELF,NOT_DEAD,
659 "Das geht doch nicht.",
660 "Nein, das macht keinen Spass. Lebt ja nicht mal."))
661 return 1;
662 out_sel="Du schmiegst Dich@@adverb@@ an@@ wen@@ an.";
663 out_vic="@@gname@@ schmiegt sich@@adverb@@ an Dich.";
664 out_oth="@@gname@@ schmiegt sich@@adverb@@ an@@ wen@@ an.";
665 return FeelIt();
666
667 /**************** Antworten ***************/
668 case "antwort":
669 HELPCHECK("antwort");
670 if (!str)
671 Return("Antworte [WEM] WAS?\n");
672 ParseRest(str);
673 if (!who)
674 str1=capitalize(str);
675 else
676 if (sscanf(str,"%s %s",str1,str1)!=2)
677 Return("Antworte was?\n");
678 else
679 str1=capitalize(str1);
680 out_sel="Du antwortest@@ wem@@: "+str1;
681 /* Sprachflueche beruecksichtigen -Wargon, 8. 9. 95 */
682 if (QueryProp(P_PERM_STRING))
683 str1 = call_other(QueryProp(P_PERM_STRING),"permutate_string",str1)||"";
684 if (who) out_vic="@@gname@@ antwortet Dir: "+str1;
685 out_oth="@@gname@@ antwortet@@ wem@@: "+str1;
686 return FeelIt();
687
688 /**************** Applaudieren ***************/
689 case "applaudier":
690 HELPCHECK("applaudier");
691 GHOSTCHECK("Deine Haende fahren durcheinander durch - war wohl nix.\n",
692 gname()+" will applaudieren, aber "+QPP(FEMALE,WER,PLURAL)
693 +" Haende sausen\ndurcheinander durch.\n", 0);
694 if (!str) {
695 out_sel="Du applaudierst von ganzem Herzen.";
696 out_oth="@@name@@ gibt eine Runde Applaus.";
697 }
698 else {
699 ParseRest(str);
700 if (for_all) {
701 out_sel="Du applaudierst @@alle@@@@adverb@@.";
702 out_vic="@@name@@ applaudiert @@alle@@@@adverb@@.";
703 return MixedOut(WEM);
704 }
705 if (!who && !adverb)
706 Return("Applaudiere wem oder wie oder so aehnlich.\n");
707 if (who && CheckLife(NOT_SELF,NOT_DEAD,
708 "Nein, das gehoert sich nicht.",
709 "Sachen wird hier nicht applaudiert, OK?"))
710 return 1;
711 out_sel="Du applaudierst@@ wem@@@@adverb@@.";
712 if (who) out_vic="@@name@@ applaudiert Dir@@adverb@@.";
713 out_oth="@@name@@ applaudiert@@ wem@@@@adverb@@.";
714 }
715 return FeelIt();
716
717 /**************** Argln ***************/
718 case "argl":
719 HELPCHECK("argl");
720 ParseRest(str);
721 if (str && !adverb)
722 Return("Argle wie?\n");
723 out_sel="Du arglst"+(adverb ? "@@adverb@@." : " ein wenig vor Dich hin.");
724 out_oth="@@gname@@ arglt"
725 +(adverb ? "@@adverb@@." : " ein wenig vor sich hin.");
726 return FeelIt();
727
728 /**************** Aufatmen ***************/
729 case "atm":
730 HELPCHECK("atm");
731 if (!str || sscanf(str,"%sauf",str1)!=1)
732 Return("Atme wie auf?\n");
733 ParseRest(str1);
734 out_sel="Du atmest"+(adverb ? "@@adverb@@" : " erleichtert")+" auf.";
735 out_oth="@@gname@@ atmet"+(adverb ? "@@adverb@@" : " erleichtert")+" auf.";
736 return FeelIt();
737
738 /**************** Begruessen ***************/
739 case "hallo":
740 case "hi":
741 case "begruess":
742 HELPCHECK("begruess");
743 ParseRemote(str);
744 if (!who)
745 Return("Wen willst Du begruessen?\n");
746 if (present(who, environment())) {
747 out_sel="Du heisst @@wen@@@@adverb@@ willkommen.";
748 out_vic="@@gname@@ heisst Dich@@adverb@@ willkommen.";
749 out_oth="@@gname@@ heisst @@wen@@@@adverb@@ willkommen.";
750 }
751 else {
752 out_sel="Du heisst @@wen@@@@adverb@@ aus der Ferne willkommen.";
753 out_vic="@@gname@@ heisst Dich@@adverb@@ aus der Ferne willkommen.";
754 }
755 return FeelIt();
756
757 /**************** Betasten ***************/
758 case "betast":
759 HELPCHECK("betast");
760 ParseRest(str);
761 if (!who)
762 Return("Begrabsche wen?\n");
763 out_sel="Du grabbelst@@adverb@@ an "+who->name(WEM)+" herum.";
764 out_vic="@@gname@@ grabbelt@@adverb@@ an Dir herum.";
765 out_oth="@@gname@@ grabbelt@@adverb@@ an "+who->name(WEM)+" herum.";
766 return FeelIt();
767
768 /**************** Bewundern ***************/
769 case "bewunder":
770 HELPCHECK("bewunder");
771 ParseRest(str);
772 if (!who)
773 Return("Bewundere wen?\n");
774 out_sel="Du bewunderst @@wen@@@@adverb@@.";
775 out_vic="@@gname@@ bewundert Dich@@adverb@@.";
776 out_oth="@@gname@@ bewundert @@wen@@@@adverb@@.";
777 return FeelIt();
778
779 /**************** Bibbern ***************/
780 case "bibber":
781 HELPCHECK("bibber");
782 if (ghost())
783 Return("Als Geist fuehlst Du keine Kaelte.\n");
784 ParseRest(str);
785 if (str && !adverb)
786 Return("Bibbere wie?\n");
787 out_sel="Du bibberst@@adverb@@ vor Kaelte.";
788 out_oth="@@name@@ bibbert@@adverb@@ vor Kaelte.";
789 return FeelIt();
790
791 /**************** Bohre Nase ***************/
792 case "bohr":
793 HELPCHECK("bohr");
794 ParseRest(str, ({"nase","in der nase","in nase"}));
795 if (str && str!="nase" && str!="in nase" && str!="in der nase" && !adverb)
796 Return("Bohre wie Nase?\n");
797 out_sel="Du bohrst@@adverb@@ in Deiner Nase.";
798 out_oth="@@gname@@ bohrt@@adverb@@ in der Nase. Igitt! :)";
799 return FeelIt();
800
801 /**************** Brummeln ***************/
802 case "brummel":
803 HELPCHECK("brummel");
804 ParseRest(str);
805 out_sel="Du brummelst"
806 +(adverb ? "@@adverb@@." : (str ? " kaum verstaendlich: "+str+"." : "."));
807 out_oth="@@gname@@ brummelt"
808 +(adverb ? "@@adverb@@." : (str ? " kaum verstaendlich: "+str+"." : "."));
809 return FeelIt();
810
811 /**************** cls ***************/
812 case "cls":
813 HELPCHECK("cls");
814 write("");
815 return 1;
816
817 /**************** Daeumchendrehen ***************/
818 case "dreh":
819 HELPCHECK("dreh");
820 if (!str)
821 Return("Drehe was?\n");
822 if(strstr(str,"daeumchen")<0 && strstr(str,"daumen")<0)
823 Return("Drehe was?\n");
824 ParseRest(str,({"daeumchen","daumen"}));
825 out_sel="Du drehst@@adverb@@ Daeumchen.";
826 out_oth="@@gname@@ dreht@@adverb@@ Daeumchen.";
827 return FeelIt();
828
829 /**************** Danken ***************/
830 case "dank":
831 HELPCHECK("dank");
832 ParseRest(str);
833 if (!who)
834 Return("Bei wem willst Du Dich bedanken?\n");
835 if (CheckLife(NOT_SELF, NOT_DEAD,
836 "Leidest Du jetzt schon an Persoenlickeitsspaltung? Ne, ne...",
837 "Keine Reaktion. Ist wohl befriedigender, sich bei Lebewesen zu "
838 +"bedanken."))
839 return 1;
840 out_sel="Du bedankst Dich@@adverb@@ bei@@ wem@@.";
841 out_vic="@@gname@@ bedankt sich@@adverb@@ bei Dir.";
842 out_oth="@@gname@@ bedankt sich@@adverb@@ bei@@ wem@@.";
843 return FeelIt();
844
845 /**************** Denken ***************/
846 case "denk":
847 HELPCHECK("denk");
848 if (ghost())
849 Return("Womit willst Du denn denken? Du hast keine grauen Zellen...\n");
850// ParseRest(str);
851 str2=old_explode(str||""," ")[0];
852 if (str
853 && (!adverb||((QueryStdAdverbs()[str2]||plr_adverbs[str2]))!=adverb)) {
854 out_sel="Du denkst . o O ("+str+")";
855 out_oth="@@name@@ denkt . o O ("+str+")";
856 out_vic="@@name@@ denkt . o O ("+str+")";
857 }
858 else {
859 out_sel="Du faengst@@adverb@@ an zu denken.\nKleine "
860 +"Rauchwoelkchen steigen auf...";
861 out_oth="@@name@@ faengt@@adverb@@ an zu denken.\nKleine "
862 +"Rauchwoelkchen steigen auf...";
863 }
864 return FeelIt();
865
866 /**************** Deuten ***************/
867 case "deut":
868 HELPCHECK("deut");
869 ParseRest(str,"auf");
870 if (for_all) {
871 out_sel="Du deutest@@adverb@@ auf @@alle@@.";
872 out_vic="@@gname@@ deutet@@adverb@@ auf @@alle@@.";
873 return MixedOut(WEN);
874 }
875 if (!who)
876 Return("Auf wen oder was willst Du deuten?\n");
877 out_sel="Du deutest@@adverb@@ auf"
878 +(who==this_object()?" Dich." : "@@ wen@@.");
879 if (who != this_object()) out_vic="@@gname@@ deutet@@adverb@@ auf Dich.";
880 out_oth="@@gname@@ deutet@@adverb@@ auf"
881 +(who==this_object() ? " sich selber.": "@@ wen@@.");
882 return FeelIt();
883
884 /**************** Druecken ***************/
885 case "drueck":
886 HELPCHECK("drueck");
887 ParseRest(str);
888 if (for_all) {
889 out_sel="Du drueckst @@alle@@"+(adverb ? "@@adverb@@" : " zaertlich")
890 +" an Dich.";
891 out_vic="@@gname@@ drueckt @@alle@@"+
892 (adverb ? "@@adverb@@" : " zaertlich")+" an sich.";
893 return MixedOut(WEN);
894 }
895 if (!who)
896 Return("Wen willst Du denn druecken?\n");
897 if (CheckLife(NOT_SELF,NOT_DEAD,
898 "Das macht doch keinen Spass.",
899 "Ich druecke nur jemanden, nicht etwas."))
900 return 1;
901 GHOSTCHECK("Du willst "+who->name(WEN)+" an Dich druecken - nur hast Du "
902 +"schon\nwieder nicht daran gedacht, dass so was als Geist nicht "
903 +"geht.\n",
904 gname()+" will "+who->name(WEN)+" an sich druecken - hat aber\n"
905 +"mal wieder nicht an die Nachteile des Geisterdaseins gedacht.\n",
906 gname()+" will Dich an sich druecken - hat aber mal wieder\n"
907 +"nicht an die Nachteile des Geisterdaseins gedacht.\n");
908 out_sel="Du drueckst @@wen@@"+(adverb ? "@@adverb@@" : " zaertlich")
909 +" an Dich.";
910 out_vic="@@name@@ drueckt Dich"+(adverb ? "@@adverb@@" : " zaertlich")
911 +" an sich.";
912 out_oth="@@name@@ drueckt @@wen@@"+(adverb ? "@@adverb@@" : " zaertlich")
913 +" an sich.";
914 return FeelIt();
915
916 /**************** Entschuldige ***************/
917 case "entschuldig":
918 HELPCHECK("entschuldig");
919 ParseRest(str);
920 if (str && !who && !adverb)
921 Return("Entschuldige Dich wie oder bei wem?\n");
922 out_sel="Du bittest"+(who ? " @@wen@@" : "")
923 +"@@adverb@@ um Entschuldigung.";
924 if (who) out_vic="@@gname@@ bittet Dich@@adverb@@ um Entschuldigung.";
925 out_oth="@@gname@@ bittet"+(who ? " @@wen@@" : "")
926 +"@@adverb@@ um Entschuldigung.";
927 return FeelIt();
928
929 /**************** Erbleichen ***************/
930 case "erbleich":
931 HELPCHECK("erbleich");
932 GHOSTCHECK("Ich weiss zwar nicht, wie Du das schaffst, aber Du wirst "
933 +"noch bleicher.\n",
934 break_string("Wie unwahrscheinlich das auch ist, aber "+gname()
935 +" schafft es tatsaechlich, noch bleicher zu werden.",78), 0 );
936 ParseRest(str);
937 if (str && !adverb)
938 Return("Wie willst Du erbleichen?\n");
939 out_sel="Du erbleichst@@adverb@@.";
940 out_oth="@@name@@ erbleicht@@adverb@@.";
941 return FeelIt();
942
943 /**************** Erroeten ***************/
944 case "erroet":
945 HELPCHECK("erroet");
946 GHOSTCHECK("Du schaffst es nur bis zu einem blassen Rosa, aber immerhin.\n",
947 "Die Wangen des Geistes von "+capname()+" werden leicht rosa.\n", 0);
948 ParseRest(str);
949 if (!adverb && str)
950 Return("Erroete wie?\n");
951 out_sel="Deine Wangen gluehen@@adverb@@.";
952 out_oth="@@name@@ erroetet@@adverb@@.";
953 return FeelIt();
954
955 /**************** Erschrecken ***************/
956 case "erschreck":
957 case "erschrick":
958 if (!ghost())
959 Return("Du bist zu harmlos, Geist muesste man sein...\n");
960 HELPCHECK("erschreck");
961 ParseRest(str);
962 if (!who)
963 Return("Wen willst Du denn erschrecken?\n");
964 out_sel="Mit einem lauten BUH! erschreckst Du @@wen@@"
965 +(adverb ? "@@adverb@@." : " fuerchterlich.");
966 out_vic="BUH! Du zuckst vor Schreck zusammen. Muss dieser Geist von "
967 +"@@gname@@ Dich auch@@adverb@@ erschrecken.";
968 out_oth="BUH! @@gname@@ erschreckt @@wen@@"
969 +(adverb ? "@@adverb@@." : " fuerchterlich.");
970 return FeelIt();
971
972 /**************** Flippen ***************/
973 case "flipp":
974 HELPCHECK("flipp");
975 ParseRest(str);
976 if (str && !adverb)
977 Return("Ausflippen wollen wir also, so so. Und wie, wenn ich "
978 +"fragen darf?\n");
979 out_sel="Du flippst"+(adverb ? "@@adverb@@ aus." : " total aus.");
980 out_oth="@@gname@@ flippt"+(adverb ? "@@adverb@@ aus." : " total aus.");
981 return FeelIt();
982
983 /**************** Fluchen ***************/
984 case "fluch":
985 HELPCHECK("fluch");
986 GHOSTCHECK("Du faengst mangels Resonanzkoerper leise an zu fluchen.\n",
987 gname()+" faengt leise an zu fluchen. Laut kann er nicht,\n"
988 +"mangels Luft und Resonanzkoerper.\n", 0);
989 if (!str) {
990 out_sel="Du fluchst lautstark.";
991 out_oth="@@name@@ faengt an, fuerchterlich zu fluchen.";
992 }
993 else {
994 ParseRest(str);
995 if (!adverb)
996 Return("Wie willst Du fluchen?\n");
997 out_sel="Du fluchst@@adverb@@.";
998 out_oth="@@name@@ flucht auf einmal@@adverb@@.";
999 }
1000 return FeelIt();
1001
1002 /**************** Fragen ***************/
1003 case "frag":
1004 HELPCHECK("frag");
1005 if (!str)
1006 Return("Frage wen was?\n");
1007 ParseRest(str);
1008 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1009 "Du faengst zu gruebeln an...",
1010 "Frage jemand, der lebt."))
1011 return 1;
1012 if (who)
1013 sscanf(str,"%s %s", str1,str1);
1014 else
1015 str1=str;
1016 if (!str1)
1017 Return("Frage "+who->name(WEN)+" WAS?\n");
1018 str1=capitalize(str1);
1019 if (str1[<1] != '?')
1020 str1 += "?";
1021 out_sel="Du fragst@@ wen@@: "+str1;
1022 /* Sprachfluch beruecksichtigen -Wargon, 8. 9. 95 */
1023 if (objectp(QueryProp(P_PERM_STRING)))
1024 str1 = call_other(QueryProp(P_PERM_STRING), "permutate_string", str1)||"";
1025 if (who) out_vic=(ghost() ? "Der Geist von " : /* IS_LEARNER(ME) ?
1026 QueryProp(P_PRESAY)||"" : */ "")+capname()+" fragt Dich: "+str1;
1027 out_oth=(ghost() ? "Der Geist von " : /* IS_LEARNER(ME) ?
1028 QueryProp(P_PRESAY)||"" : */ "")+capname()+" fragt@@ wen@@: "+str1;
1029 return FeelIt();
1030
1031 /**************** Freuen ***************/
1032 case "freu":
1033 HELPCHECK("freu");
1034 ParseRest(str);
1035 if (str && !who && !adverb)
1036 Return("Freue Dich wie?\n");
1037 out_sel="Du "+(who ? "grinst @@wen@@ an und " : "")
1038 +"freust Dich@@adverb@@.";
1039 if (who) out_vic="@@gname@@ grinst Dich an und freut sich@@adverb@@.";
1040 out_oth="@@gname@@ "+(who ? "grinst @@wen@@ an und " : "")
1041 +"freut sich@@adverb@@.";
1042 return FeelIt();
1043
1044 /**************** Furzen ***************/
1045 case "furz":
1046 HELPCHECK("furz");
1047 GHOSTCHECK("Du laesst einen fahren - aber er riecht nach gar nix.\n",
1048 gname()+" laesst einen fahren. Man riecht aber nix.\n", 0);
1049 ParseRest(str);
1050 if (str && !adverb)
1051 Return("Furze wie?\n");
1052 out_sel="Du furzt"+(adverb ? "@@adverb@@." : " hemmungslos.");
1053 out_oth="@@name@@ laesst@@adverb@@ einen Stinkefurz fahren.";
1054 ofoo=clone_object("/items/furz");
1055 ofoo->set_furzer(this_player());
1056 ofoo->move(environment(this_player()));
1057 return FeelIt();
1058// DEBUG Furz testen!
1059
1060 /**************** Gaehnen ***************/
1061 case "gaehn":
1062 HELPCHECK("gaehn");
1063 if (ghost())
1064 Return("Als Geist wirst Du nicht muede - also nicht gaehnen.\n");
1065 ParseRest(str);
1066 if (str && !adverb)
1067 Return("Wie willst Du gaehnen?\n");
1068 if (!adverb)
1069 out_sel="Kannst Du aber Dein(en) Mund/Maul/Schnabel weit aufreissen!";
1070 else
1071 out_sel="Du gaehnst@@adverb@@.";
1072 out_oth="@@gname@@ gaehnt@@adverb@@.";
1073 return FeelIt();
1074
1075 /**************** Glucksen ***************/
1076 case "glucks":
1077 HELPCHECK("glucks");
1078 ParseRest(str);
1079 if (str && !adverb)
1080 Return("Gluckse wie?\n");
1081 out_sel="Du gluckst"+(adverb ? "@@adverb@@." : " wie ein Huhn.");
1082 out_oth="@@gname@@ gluckst"+(adverb ? "@@adverb@@." : " wie ein Huhn.");
1083 return FeelIt();
1084
1085 /**************** Gratulieren ***************/
1086 case "gratulier":
1087 case "beglueckwuensch":
1088 HELPCHECK("gratulier");
1089 ParseRest(str);
1090 if (!who)
1091 Return("Wem willst Du gratulieren?\n");
1092 if (CheckLife(NOT_SELF, NOT_DEAD,
1093 "Na, meinst Du nicht, dass Eigenlob stinkt?",
1094 "Soll ich dem Ding vielleicht zum Totsein gratulieren? Nee nee."))
1095 return 1;
1096 out_sel="Du gratulierst @@wem@@@@adverb@@.";
1097 out_vic="@@gname@@ gratuliert Dir@@adverb@@.";
1098 out_oth="@@gname@@ gratuliert @@wem@@@@adverb@@.";
1099 return FeelIt();
1100
1101 /**************** Grinsen ***************/
1102 case "grins":
1103 HELPCHECK("grins");
1104 GHOSTCHECK("Als Du grinst, siehst Du regelrecht, wie die anderen eine "
1105 +"Gaensehaut bekommen.\n",
1106 "Du bekommst eine Gaensehaut, als der Geist von "+capname()
1107 +" zu grinsen anfaengt.\n", 0);
1108 ParseRest(str);
1109 if (for_all) {
1110 out_sel="Du grinst @@alle@@@@adverb@@ an.";
1111 out_vic="@@name@@ grinst @@alle@@@@adverb@@ an.";
1112 return MixedOut(WEN);
1113 }
1114 if (!who && !adverb && str)
1115 Return("Grinsen - schoen und gut. Aber wen oder wie (an)grinsen?\n");
1116 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1117 "Du grinst Dir was, aber so, dass es kein anderer sieht.",
1118 "Nicht mal einen Spiegel darf man hier angrinsen, nur Lebewesen!"))
1119 return 1;
1120 out_sel="Du grinst@@ wen@@@@adverb@@"+(who ? " an" : "")+".";
1121 if (who) out_vic="@@name@@ grinst Dich@@adverb@@ an.";
1122 out_oth="@@name@@ grinst@@ wen@@@@adverb@@"+(who ? " an" : "")+".";
1123 return FeelIt();
1124
1125 /**************** Gruebeln ***************/
1126 case "gruebel":
1127 case "gruebl":
1128 HELPCHECK("gruebel");
1129 ParseRest(str);
1130 if (str && !adverb)
1131 Return("Grueble wie?\n");
1132 out_sel="Du gruebelst@@adverb@@ eine Weile vor Dich hin.";
1133 out_oth="@@gname@@ gruebelt@@adverb@@ eine Weile vor sich hin.";
1134 return FeelIt();
1135
1136 /**************** Grummeln ***************/
1137 case "grummel":
1138 case "grumml":
1139 HELPCHECK("grummel");
1140 ParseRest(str);
1141 if (str && !adverb)
1142 Return("Grummle wie?\n");
1143 out_sel="Du grummelst@@adverb@@.";
1144 out_oth="@@gname@@ grummelt@@adverb@@.";
1145 return FeelIt();
1146
1147 /**************** Grunzen ***************/
1148 case "grunz":
1149 HELPCHECK("grunz");
1150 ParseRest(str);
1151 if (str && !adverb)
1152 Return("Grunze wie?\n");
1153 out_sel="Du grunzt@@adverb@@.";
1154 out_oth="@@gname@@ grunzt@@adverb@@.";
1155 return FeelIt();
1156
1157 /**************** Gucken ***************/
1158 case "guck":
1159 HELPCHECK("guck");
1160 ParseRest(str);
1161 if (!adverb)
1162 Return("Gucke wie aus der Waesche?\n");
1163 out_sel="Du guckst@@adverb@@ aus der Waesche.";
1164 out_oth="@@gname@@ guckt@@adverb@@ aus der Waesche.";
1165 return FeelIt();
1166
1167 /**************** Jammern ***************/
1168 case "jammer":
1169 HELPCHECK("jammer");
1170 ParseRest(str);
1171 if (str && !adverb)
1172 Return("Wie willst Du jammern?\n");
1173 out_sel="Du jammerst@@adverb@@.";
1174 out_oth="@@gname@@ jammert@@adverb@@.";
1175 return FeelIt();
1176
1177 /**************** Haetscheln ***************/
1178 case "haetschel":
1179 case "haetschl":
1180 HELPCHECK("haetschel");
1181 GHOSTCHECK("Du ueberlegst es Dir anders - mit Deinen durchlaessigen "
1182 +"Haenden...",
1183 gname()+" will anscheinend jemand haetscheln, ueberlegt\n"
1184 +"es sich nach einem kurzen Blick auf seine Haende anders.\n", 0);
1185 ParseRest(str);
1186 if (for_all) {
1187 out_sel="Du haetschelst @@alle@@@@adverb@@.";
1188 out_vic="@@name@@ haetschelt @@alle@@@@adverb@@.";
1189 return MixedOut(WEN);
1190 }
1191 if (!str || !who)
1192 Return("Wen willst Du haetscheln?\n");
1193 if (who && CheckLife(NOT_SELF, NOT_DEAD,
1194 "Das sieht viel zu albern aus - Du laesst es bleiben.",
1195 "Ist da ueberhaupt was zu haetscheln? Nein, da lebt doch nix."))
1196 return 1;
1197 out_sel="Du haetschelst@@ wen@@@@adverb@@.";
1198 out_vic="@@name@@ haetschelt Dich@@adverb@@.";
1199 out_oth="@@name@@ haetschelt@@ wen@@@@adverb@@.";
1200 return FeelIt();
1201
1202 /**************** Hicksen ***************/
1203 case "hicks":
1204 HELPCHECK("hicks");
1205 GHOSTCHECK("Hoppla! Dieser Hickser zieht Dich ganz schoen zusammen!\n",
1206 gname()+" hat anscheinend Schluckauf.\n"
1207 +"Und was fuer einen! Fuer einen Moment zieht es "+QueryPronoun(WEN)
1208 +" ziemlich zusammen.\n", 0);
1209 if (!str) {
1210 out_sel="Hicks!";
1211 out_oth="@@name@@ muss hicksen. Wahrscheinlich zu viel Alkohol...";
1212 }
1213 else {
1214 ParseRest(str);
1215 if (!adverb)
1216 Return("Hickse wie?\n");
1217 out_sel="Du hickst@@adverb@@.";
1218 out_oth="@@name@@ hickst@@adverb@@.";
1219 }
1220 return FeelIt();
1221
1222 /**************** Huepfen ***************/
1223 case "huepf":
1224 HELPCHECK("huepf");
1225 GHOSTCHECK("Du schwebst durch die Gegend.\n",
1226 gname()+" schwebt durch die Gegend.\n", 0);
1227 if (!str) {
1228 out_sel="B O I N G !! Du huepfst in der Gegend herum.";
1229 out_oth="@@name@@ huepft in der Gegend herum.";
1230 }
1231 else {
1232 ParseRest(str);
1233 if (!who && !adverb)
1234 Return("Huepfe wie oder um wen oder wie oder was oder haeh?\n");
1235 out_sel="Du huepfst@@adverb@@"+(who ? " um@@ wen@@" : "")+" herum.";
1236 if (who) out_vic="@@name@@ huepft@@adverb@@ um Dich herum.";
1237 out_oth="@@name@@ huepft@@adverb@@"+(who ? " um@@ wen@@" : "")+" herum.";
1238 }
1239 return FeelIt();
1240
1241 /**************** Husten ***************/
1242 case "hust":
1243 HELPCHECK("hust");
1244 GHOSTCHECK("Du verstreust ein paar Geisterbazillen im Raum.\n",
1245 gname()+" macht ufff, ufff und verteilt ein paar Geister-\n"
1246 +"bazillen im Raum.\n", 0);
1247 if (!str) {
1248 out_sel="Hust! Keuch! Halt dir doch wenigstens die Hand vor den Mund!";
1249 out_oth="@@name@@ hustet sich fast die Seele aus dem Leib.";
1250 }
1251 else {
1252 ParseRest(str);
1253 if (!who && !adverb)
1254 Return("Wenn Du schon was hinter huste tippst, dann bitte was "
1255 +"vernuenftiges!\n");
1256 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1257 "Dir selber koennen nur andere was husten.",
1258 "Bitte huste nur Lebewesen was."))
1259 return 1;
1260 out_sel="Du hustest@@ wem@@@@adverb@@"+(who? " was" : "")+".";
1261 if (who) out_vic="@@name@@ hustet Dir@@adverb@@was.";
1262 out_oth="@@name@@ hustet@@ wem@@@@adverb@@"+(who? " was" : "")+".";
1263 }
1264 return FeelIt();
1265
1266 /**************** Jubeln ***************/
1267 case "jubel":
1268 case "jubl":
1269 HELPCHECK("jubel");
1270 ParseRest(str);
1271 if (str && !who && !adverb)
1272 Return("Juble wie? Oder wem zu?\n");
1273 out_sel="Du jubelst@@ wem@@@@adverb@@"+(who ? " zu." : ".");
1274 if (who) out_vic="@@gname@@ jubelt Dir@@adverb@@ zu.";
1275 out_oth="@@gname@@ jubelt@@ wem@@@@adverb@@"+(who ? " zu." : ".");
1276 return FeelIt();
1277
1278 /**************** Keuchen ***************/
1279 case "keuch":
1280 HELPCHECK("keuch");
1281 if (ghost())
1282 Return("Als Geist strengt Dich nix an - also wird auch nicht "
1283 +"gekeucht.\n");
1284 ParseRest(str);
1285 if (str && !adverb)
1286 Return("Keuche wie?\n");
1287 out_sel="Du keuchst"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
1288 out_oth="@@name@@ keucht"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
1289 return FeelIt();
1290
1291 /**************** Kichern ***************/
1292 case "kicher":
1293 HELPCHECK("kicher");
1294 if (!str) {
1295 out_sel="Du kicherst. (Wie albern von Dir)";
1296 out_oth="@@gname@@ gibt ein albernes Kichern von sich.";
1297 }
1298 else {
1299 ParseRest(str);
1300 if (!who && !adverb)
1301 Return("Das haut so nicht hin, gib vernuenftige Parameter.\n");
1302 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1303 "In diesem Fall nimm bitte nur kicher.",
1304 "Musst schon etwas Lebendes angeben, nichts Totes."))
1305 return 1;
1306 out_sel="Du kicherst@@adverb@@"+(who ? " hinter "+who->name(WESSEN)+
1307 " Ruecken." : ".");
1308 if (who) out_vic="Jemand kichert@@adverb@@ hinter deinem Ruecken.";
1309 out_oth="@@gname@@ kichert@@adverb@@"+(who ? " hinter "+who->name(WESSEN)
1310 +" Ruecken." : ".");
1311 }
1312 return FeelIt();
1313
1314 /**************** Kitzeln ***************/
1315 case "kitzel":
1316 case "kitzl":
1317 HELPCHECK("kitzel");
1318 GHOSTCHECK("Mit Deinen immateriellen Fingern schaffst Du das nicht.\n",
1319 gname()+" muss gerade feststellen, dass man mit\n"
1320 +"immateriellen Fingern nicht kitzeln kann.\n", 0);
1321 ParseRest(str);
1322 if (!who)
1323 Return("Wen willst Du kitzeln?\n");
1324 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1325 "Du bist doch kein Masochist! Du laesst es bleiben.",
1326 "Dinge sind so selten kitzlig. Lass es bleiben."))
1327 return 1;
1328 if (member(({"highlander","hobo"}), who->query_real_name())>-1)
1329 switch (who->query_real_name()) {
1330 case "highlander": str1="unter"; str2="Federn"; break;
1331 case "hobo" : str1="an"; str2="Kinn"; break;
1332 }
1333 else if (who->QueryProp(P_RACE))
1334 switch (lower_case(who->QueryProp(P_RACE))) {
1335 case "drache" : str1="unter";str2="Schuppen";
1336 t_g=FEMALE; t_n=PLURAL; break;
1337 case "greif" : str1="unter";str2="Federn";
1338 t_g=FEMALE; t_n=PLURAL; break;
1339 default : str1="an"; str2="Kinn"; t_g=NEUTER; t_n=SINGULAR;
1340 }
1341 else {
1342 str1="an"; str2="Kinn"; t_g=NEUTER; t_n=SINGULAR;
1343 }
1344 if (getuid(who)=="trest" || getuid(who)=="woelkchen") {
1345 str1="an"; str2="Fuessen"; t_g=MALE; t_n=PLURAL;
1346 }
1347 out_sel="Du kitzelst@@ wen@@@@adverb@@ "+str1+" "+who->QPP(t_g,WEM,t_n)
1348 +" "+str2+".\n@@wer@@ versucht, sich zu beherrschen, muss aber "
1349 +"doch lachen.";
1350 out_vic="@@name@@ kitzelt Dich@@adverb@@ "+str1+" Deine"
1351 +(t_n ? "n" : (t_g==FEMALE ? "r" : "m"))+" "+str2
1352 +".\nDu versuchst, Dich zu beherrschen, musst aber doch lachen.";
1353 out_oth="@@name@@ kitzelt@@ wen@@@@adverb@@ "+str1+" "
1354 +who->QPP(t_g,WEM,t_n)+" "+str2
1355 +".\n@@wer@@ versucht, sich zu beherrschen, muss aber doch lachen.";
1356 return FeelIt();
1357
1358 /**************** Klatschen ***************/
1359 case "klatsch":
1360 HELPCHECK("klatsch");
1361 GHOSTCHECK("Deine Haende sausen durcheinander durch.\n",
1362 gname()+" will in die Haende klatschen - aber sie\n"
1363 +"sausen durcheinander durch.\n", 0);
1364 ParseRest(str);
1365 if (!adverb && str)
1366 Return("Klatsche wie?\n");
1367 out_sel="Du klatschst@@adverb@@ in die Haende.";
1368 out_oth="@@name@@ klatscht@@adverb@@ in die Haende.";
1369 return FeelIt();
1370
1371 /**************** Klopfen ***************/
1372 case "klopf":
1373 HELPCHECK("klopf");
1374 if (!str||sscanf(str,"%s auf schulter",sfoo)!=1)
1375 if (!str||sscanf(str,"%s auf die schulter",sfoo)!=1)
1376 Return("Klopfe wie wem wieso was?\n");
1377 if (ghost())
1378 Return("Das geht leider nicht mit durchlaessigen Haenden.\n");
1379 str=sfoo;
1380 if (str=="") str=0;
1381 ParseRest(str);
1382 if (!who)
1383 Return("Klopfe wem auf die Schulter?\n");
1384 out_sel="Du klopfst @@wem@@@@adverb@@ auf die Schulter.";
1385 out_vic="@@name@@ klopft Dir@@adverb@@ auf die Schulter.";
1386 out_oth="@@name@@ klopft @@wem@@@@adverb@@ auf die Schulter.";
1387 return FeelIt();
1388
1389 /**************** Knabbern ***************/
1390 case "knabber":
1391 HELPCHECK("knabber");
1392 if (ghost())
1393 Return("Sorry, aber dafuer fehlt Dir im Moment der noetige "
1394 +"\"Biss\"...\n");
1395 ParseRest(str);
1396 if (!who)
1397 Return("Knabbere wen an?\n");
1398 if (CheckLife(NOT_SELF,NOT_DEAD,
1399 "Du kommst nicht an dein eigenes Ohr ran...",
1400 "Noe, noe, das schmeckt bestimmt nicht gut."))
1401 return 1;
1402 out_sel="Du knabberst@@adverb@@ an "+who->name(WESSEN)+" Ohr.";
1403 out_vic="@@name@@ knabbert@@adverb@@ an Deinem Ohr.";
1404 out_oth="@@name@@ knabbert@@adverb@@ an "+who->name(WESSEN)+" Ohr.";
1405 return FeelIt();
1406
1407 /**************** Knicksen ***************/
1408 case "knicks":
1409 HELPCHECK("knicks");
1410 GHOSTCHECK("Du knickst in der Mitte ab, kriegst Dich aber schnell wieder "
1411 +"zusammen.\n",
1412 gname()+" knick(s)t in der Mitte ab, kriegt sich aber\n"
1413 +"zum Glueck schnell wieder zusammen.\n", 0);
1414 if (!str) {
1415 out_sel="Du machst einen anmutigen Knicks.";
1416 out_oth="@@name@@ macht einen anmutigen Knicks.";
1417 }
1418 else {
1419 ParseRest(str,"vor");
1420 if (for_all) {
1421 out_sel="Du knickst@@adverb@@ vor @@alle@@.";
1422 out_vic="@@name@@ knickst@@adverb@@ vor @@alle@@.";
1423 return MixedOut(WEM);
1424 }
1425 if (!who && !adverb)
1426 Return("Knickse irgendwie oder vor jemandem.\n");
1427 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1428 "Wie willst Du das denn schaffen?",
1429 "Vor Sachen wird hier nicht geknickst!"))
1430 return 1;
1431 out_sel="Du knickst@@adverb@@"+(who ? " vor" : "")+"@@ wem@@.";
1432 if (who ) out_vic="@@name@@ knickst@@adverb@@ vor Dir.";
1433 out_oth="@@name@@ knickst@@adverb@@"+(who ? " vor" : "")+"@@ wem@@.";
1434 }
1435 return FeelIt();
1436
1437 /**************** Knirschen ***************/
1438 case "knirsch":
1439 HELPCHECK("knirsch");
1440 if (ghost())
1441 Return("Du kannst mit nichts knirschen, so als Geist. Versuche doch "
1442 +"dafuer\nmal, zu rasseln...\n");
1443 ParseRest(str);
1444 if (str && !adverb)
1445 Return("Knirsche wie?\n");
1446 switch (QueryProp(P_RACE)) {
1447 case "greif" : str1="dem Schnabel."; break;
1448 case "sandtiger" : str1="den Fangzaehnen."; break;
1449 case "drache" : str1="den Fangzaehnen."; break;
1450 default : str1="den Zaehnen.";
1451 }
1452 out_sel="Du knirschst@@adverb@@ mit "+str1;
1453 out_oth="@@name@@ knirscht@@adverb@@ mit "+str1;
1454 return FeelIt();
1455
1456 /**************** Knuddeln ***************/
1457 case "knuddel":
1458 case "knuddl":
1459 HELPCHECK("knuddel");
1460 if (ghost())
1461 Return("Sorry, nicht als Geist.\n");
1462 ParseRest(str);
1463 if (for_all) {
1464 out_sel="Du knuddelst @@alle@@@@adverb@@.";
1465 out_vic="@@name@@ knuddelt @@alle@@@@adverb@@.";
1466 return MixedOut(WEN);
1467 }
1468 if (!who)
1469 Return("Knuddle wen?\n");
1470 if (CheckLife(NOT_SELF,NOT_DEAD,
1471 "Das bringt doch nix, lass es halt.",
1472 "Du kannst soviel ich weiss ausser Lebewesen nur Teddys knuddeln."))
1473 return 1;
1474 out_sel="Du knuddelst@@ wen@@@@adverb@@.";
1475 out_vic="@@name@@ knuddelt Dich@@adverb@@.";
1476 out_oth="@@name@@ knuddelt@@ wen@@@@adverb@@.";
1477 return FeelIt();
1478
1479 /**************** Knurren ***************/
1480 case "knurr":
1481 HELPCHECK("knurr");
1482 ParseRest(str);
1483 if (for_all) {
1484 out_sel="Du knurrst @@alle@@@@adverb@@ an.";
1485 out_vic="@@gname@@ knurrt @@alle@@@@adverb@@ an.";
1486 return MixedOut(WEN);
1487 }
1488 if (str && !who && !adverb)
1489 Return("Wen anknurren oder wie knurren?\n");
1490 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1491 "Du knurrst in Dich hinein.",
1492 "Reagiert nicht. Solltest wohl besser Lebwesen anknurren."))
1493 return 1;
1494 out_sel="Du knurrst@@ wen@@@@adverb@@"+(who ? " an." : ".");
1495 if (who) out_vic="@@gname@@ knurrt Dich@@adverb@@ an.";
1496 out_oth="@@gname@@ knurrt@@ wen@@@@adverb@@"+(who ? " an." : ".");
1497 return FeelIt();
1498
1499 /**************** Knutschen ***************/
1500 case "knutsch":
1501 HELPCHECK("knutsch");
1502 if (ghost())
1503 Return("Das kannst Du als Geist leider nicht. Irgendwie fehlt Dir "
1504 +"dazu das Herz.\n");
1505 ParseRest(str);
1506 if (!who)
1507 Return("Knutsche wen ab?\n");
1508 if (CheckLife(NOT_SELF,NOT_DEAD,
1509 "Das geht nicht.",
1510 "Igitt! Lieber nicht!"))
1511 return 1;
1512 out_sel="Du gibst @@wem@@@@adverb@@ einen RICHTIGEN Kuss.";
1513 out_vic="@@name@@ gibt Dir@@adverb@@ einen tiefen und hingebungsvollen "
1514 +"Kuss.\nDu schwebst im 7. Himmel.";
1515 out_oth="@@name@@ gibt @@wem@@@@adverb@@ einen tiefen und "
1516 +"hingebungsvollen Kuss.";
1517 return FeelIt();
1518
1519 /**************** Kotzen ***************/
1520 case "kotz":
1521 HELPCHECK("kotz");
1522 if (ghost())
1523 Return("Ne, das ist eins von den Sachen, die als Geist nicht gehen.\n");
1524 ParseRest(str);
1525 if (str && !who && !adverb)
1526 Return("Kotze wie? Kotze auf wen?\n");
1527 if (who && CheckLife(NOT_SELF,0,
1528 "Igitt, nein danke."))
1529 return 1;
1530 if(!str) {
1531 out_sel="Du kotzt ueber deine Schuhe.";
1532 out_oth="@@name@@ verdreht die Augen und kotzt.";
1533 }
1534 else {
1535 out_sel="Du kotzt@@adverb@@"+(who ? " auf @@wen@@." : ".");
1536 if (who) out_vic="@@name@@ kotzt@@adverb@@ auf Dich.";
1537 out_oth="@@name@@ kotzt@@adverb@@"+(who ? " auf @@wen@@." : ".");
1538 }
1539 return FeelIt();
1540
1541 /**************** Kratzen ***************/
1542 case "kratz":
1543 HELPCHECK("kratz");
1544 ParseRest(str);
1545 if (who && (who!=this_player()))
1546 Return("Das mach mal schoen nur mit Dir selber.\n");
1547 if (str && !adverb)
1548 Return("Wie willst Du Dich kratzen?\n");
1549 out_sel="Du kratzt dich@@adverb@@ am Kopp.";
1550 out_oth="@@gname@@ kratzt sich@@adverb@@ am Kopp.";
1551 return FeelIt();
1552
1553 /**************** Krieche ***************/
1554 case "kriech":
1555 HELPCHECK("kriech");
1556 ParseRest(str);
1557 out_sel="Du kriechst"+(who ? " vor @@wem@@" : "")+"@@adverb@@ im Staub.";
1558 if (who) out_vic="@@gname@@ kriecht@@adverb@@ vor Dir im Staub.";
1559 out_oth="@@gname@@ kriecht"+(who ? " vor @@wem@@" : "")
1560 +"@@adverb@@ im Staub.";
1561 return FeelIt();
1562
1563 /**************** Kuessen ***************/
1564 case "kuess":
1565 HELPCHECK("kuess");
1566 if (ghost())
1567 Return("Als Geist kannst Du leider niemanden kuessen.\n");
1568 ParseRest(str);
1569 if (!who)
1570 Return("Wen willst Du kuessen?\n");
1571 if (CheckLife(NOT_SELF,NOT_DEAD,
1572 "Da hast Du aber Schwierigkeiten... Du gibst es schliesslich auf.",
1573 "Nix. Absolut nix. Kuesse lieber Lebewesen - die reagieren\n"
1574 +"wenigstens (und sei es, dass sie Dich fressen...)."))
1575 return 1;
1576 out_sel="Du kuesst@@ wen@@@@adverb@@.";
1577 out_vic="@@name@@ kuesst Dich@@adverb@@.";
1578 out_oth="@@name@@ kuesst@@ wen@@@@adverb@@.";
1579 FeelIt();
1580 if (who->QueryProp(P_FROG)&&QueryProp(P_LEVEL)>who->QueryProp(P_LEVEL)) {
1581 tell_room(environment(this_player()),"PLOPP!\n");
1582 write("Huch! Du wirst auf einmal so gruen und klein und kriegst auf\n"
1583 +"einmal furchtbar Hunger auf Fliegen und so...\n");
1584 who->Message("Auf einmal wird die Welt um Dich wieder so klein, wie sie\n"
1585 +" frueher mal war - und vor Dir sitzt ein kleiner gruener Frosch.\n");
1586 say(who->name(WER)+" steht auf einmal da und schaut dumm aus der "
1587 +"Waesche. Dafuer fehlt\njetzt seltsamerweise "+capname()
1588 +". Die Gesamtzahl an kleinen gruenen\nFroeschen im Raum hat sich "
1589 +"jedoch nicht geaendert...\n",({who,this_player()}));
1590 who->SetProp(P_FROG,0);
1591 SetProp(P_FROG,1);
1592 }
1593 return 1;
1594
1595 /**************** Kuscheln ***************/
1596 case "kuschel":
1597 case "kuschl":
1598 HELPCHECK("kuschel");
1599 GHOSTCHECK("Dazu bist Du als Geist viel zu kalt und gar "
1600 +"schroecklich anzusehen.\n",
1601 gname()+" scheint Anwandlungen zu haben, sich an jemand "
1602 +"ankuscheln zu wollen.\nEntsetzt springen alle zurueck, weil "
1603 +"dazu ist er doch zu kalt und schroecklich\nanzusehen.\n", 0);
1604 ParseRest(str);
1605 if (!who)
1606 Return("An wen willst Du Dich ankuscheln?\n");
1607 out_sel="Du kuschelst Dich@@adverb@@ an @@wen@@ an.";
1608 out_vic="@@name@@ kuschelt sich@@adverb@@ an Dich an.";
1609 out_oth="@@name@@ kuschelt sich@@adverb@@ an @@wen@@ an.";
1610 return FeelIt();
1611
1612 /**************** Lachen ***************/
1613 case "lach":
1614 HELPCHECK("lach");
1615 GHOSTCHECK("Du lachst mit hohler Stimme. Den Umstehenden (sind doch welche"
1616 +" da, oder?)\nlaeuft es kalt den Ruecken runter.\n",
1617 gname()+" lacht mit hohler Stimme.\nDir laeuft es eiskalt den Ruecken"
1618 +" runter.\n", 0);
1619 if (!str) {
1620 out_sel="Du brichst vor Lachen zusammen.";
1621 out_oth="@@name@@ bricht vor Lachen zusammen.";
1622 }
1623 else {
1624 ParseRest(str);
1625 if (for_all) {
1626 out_sel="Du lachst@@adverb@@ ueber @@alle@@.";
1627 out_vic="@@name@@ lacht@@adverb@@ ueber @@alle@@.";
1628 return MixedOut(WEN);
1629 }
1630 if (!who && !adverb)
1631 Return("Lache wie, lache ueber wen?\n");
1632 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1633 "Lach Dich doch nicht selber aus - das machen schon andere...",
1634 "Gelacht wird nur ueber Lebewesen (die koennen sich drueber aergern)."))
1635 return 1;
1636 out_sel="Du lachst@@adverb@@"+(who?" ueber@@ wen@@":"")+".";
1637 if (who) out_vic="@@name@@ lacht@@adverb@@ ueber Dich.";
1638 out_oth="@@name@@ lacht@@adverb@@"+(who?" ueber@@ wen@@":"")+".";
1639 }
1640 return FeelIt();
1641
1642 /**************** Laecheln ***************/
1643 case "laechel":
1644 case "laechl":
1645 HELPCHECK("laechel");
1646 if (ghost()) {
1647 write("Du laechelst innerlich.\n");
1648 return 1;
1649 }
1650 if(!str) {
1651 out_sel="Du laechelst.";
1652 out_oth="@@name@@ laechelt.";
1653 }
1654 else {
1655 ParseRest(str);
1656 if (for_all) {
1657 out_sel="Du laechelst @@alle@@@@adverb@@ an.";
1658 out_vic="@@name@@ laechelt @@alle@@@@adverb@@ an.";
1659 return MixedOut(WEN);
1660 }
1661 if (!who && !adverb && str)
1662 Return("Wie oder wen?\n");
1663 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1664 "Musst schon jemand anders anlaecheln.",
1665 "Bitte ein Lebewesen anlaecheln."))
1666 return 1;
1667 out_sel="Du laechelst@@ wen@@@@adverb@@"+(who ? " an." : ".");
1668 if (who) out_vic="@@name@@ laechelt Dich@@adverb@@ an.";
1669 out_oth="@@name@@ laechelt@@ wen@@@@adverb@@"+(who ? " an." : ".");
1670 }
1671 return FeelIt();
1672
1673 /**************** Liebe ***************/
1674 /* These lines appear Courtesy of Angus@MorgenGrauen. So long, and thanks */
1675 /* for all the fish, errr, text, Angus :) */
1676 case "lieb":
1677 HELPCHECK("lieb");
1678 if (ghost())
1679 Return("Auf diese Freuden musst Du als Geist leider verzichten.\n");
1680 ParseRest(str);
1681 if (!who)
1682 Return("Wen hast Du lieb?\n");
1683 if (CheckLife(NOT_SELF,NOT_DEAD,
1684 "Ja, ich weiss, Du magst Dich, aber das musst Du nicht zur Schau"
1685 +"stellen.",
1686 "Du entwickelst seltsame Neigungen, finde ich."))
1687 return 1;
1688 str1=(who->QueryProp(P_GENDER)==FEMALE ? "ihr" : "ihm");
1689 /* old version:
1690 out_sel="Du fluesterst @@wem@@@@adverb@@ liebevolle Worte ins Ohr.";
1691 out_vic=gname()+" fluestert Dir@@adverb@@ liebevolle Worte ins Ohr.";
1692 out_oth=gname()+" fluestert@@adverb@@ sanfte Worte zu @@wem@@.";
1693 */
1694 out_sel="Du schliesst die Augen, schmiegst Dich eng an @@wen@@ und gibst"
1695 +LF+str1+" einen zaertlichen und leidenschaftlichen Kuss.\n"
1696 +"Um Dich herum versinkt die Welt und Du glaubst, auf Wolken zu "
1697 +"schweben.";
1698 out_vic="@@name@@ drueckt Dich zaertlich an sich und gibt Dir\n"
1699 +"einen zaertlichen und leidenschaftlichen Kuss. Du schliesst die\n"
1700 +"Augen und traeumst ein wenig......Du schwebst auf Wolken direkt\n"
1701 +"in den siebten Himmel.";
1702 out_oth="Du schaust dezent weg, als sich @@name@@ und "+who->name()
1703 +" verliebt in die Arme\nsinken.";
1704 return FeelIt();
1705
1706 /**************** Loben ***************/
1707 case "lob":
1708 HELPCHECK("lob");
1709 if (!str)
1710 Return("Wen oder was willst Du loben?\n");
1711 ParseRest(str);
1712 if (who==ME) {
1713 ofoo=clone_object("/items/furz");
1714 ofoo->set_furzer(this_player());
1715 ofoo->set_eigenlob();
1716 ofoo->move(environment(this_player()));
1717 //DEBUG Furz zum Eigenlob patchen :>
1718 out_sel="Du lobst Dich selber@@adverb@@. Die Folgen kennst Du ja...";
1719 out_oth="@@gname@@ lobt sich selber@@adverb@@, mit den bekannten Folgen.";
1720 } else if (who) {
1721 out_sel="Du lobst @@wen@@@@adverb@@.";
1722 out_vic="@@gname@@ lobt Dich@@adverb@@.";
1723 out_oth="@@gname@@ lobt @@wen@@@@adverb@@.";
1724 } else {
1725 out_sel="Du lobst "+str+".";
1726 out_oth="@@gname@@ lobt "+str+".";
1727 }
1728 return FeelIt();
1729
1730 /**************** Moppern ***************/
1731 case "mopper":
1732 HELPCHECK("mopper");
1733 ParseRest(str);
1734 if (str && !adverb)
1735 Return("Moppere wie?\n");
1736 out_sel="Du mopperst@@adverb@@.";
1737 out_oth="@@gname@@ moppert@@adverb@@.";
1738 return FeelIt();
1739
1740 /**************** Mustern ***************/
1741 case "muster":
1742 HELPCHECK("muster");
1743 ParseRest(str);
1744 if (!who)
1745 Return("Mustere wen?\n");
1746 out_sel="Du musterst @@wen@@@@adverb@@.";
1747 out_vic="@@gname@@ mustert Dich@@adverb@@.";
1748 out_oth="@@gname@@ mustert @@wen@@@@adverb@@.";
1749 return FeelIt();
1750
1751 /**************** Nicken ***************/
1752 case "ja":
1753 case "nick":
1754 HELPCHECK("nick");
1755 ParseRest(str);
1756 if (for_all) {
1757 out_sel="Du nickst @@alle@@@@adverb@@ zu.";
1758 out_vic="@@gname@@ nickt @@alle@@@@adverb@@ zu.";
1759 return MixedOut(WEM);
1760 }
1761 if (str && !who && !adverb)
1762 Return("Nicke wie oder wem zu oder wem wie zu?\n");
1763 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1764 "Du willst Dir selber zunicken? Lieber nicht, das sieht so albern aus.",
1765 "Hm. Nix passiert. Von Lebewesen bekommt man meistens mehr Feedback."))
1766 return 1;
1767 out_sel="Du nickst@@ wem@@@@adverb@@"
1768 +(who ? " zu." : (adverb ? "." : " zustimmend."));
1769 if (who) out_vic="@@gname@@ nickt Dir@@adverb@@ zu.";
1770 out_oth="@@gname@@ nickt@@ wem@@@@adverb@@"
1771 +(who ? " zu." : (adverb ? "." : " zustimmend."));
1772 return FeelIt();
1773
1774 /**************** Niesen ***************/
1775 case "nies":
1776 HELPCHECK("nies");
1777 if (ghost())
1778 Return("Du hast keine Nase mehr, in der es Dich jucken koennte...\n");
1779 ParseRest(str);
1780 if (str && !adverb)
1781 Return("Niese wie?\n");
1782 out_sel="Haaaaaa-tschi! Gesundheit!"+(adverb ? " Du niest@@adverb@@." : "");
1783 out_oth="Haaaaaa-tschi! @@name@@ niest@@adverb@@.";
1784 return FeelIt();
1785
1786 /**************** Ohrfeigen ***************/
1787 case "gib":
1788 HELPCHECK("gib");
1789 if (!str)
1790 Return("Gib wem was?\n");
1791 if (sscanf( str,"%s ohrfeige",str1)==0)
1792 return 0;
1793 ParseRest(str, ({"ohrfeige", "eine ohrfeige"}));
1794 if (for_all) {
1795 out_sel="Du verpasst @@alle@@@@adverb@@ eine Ohrfeige.";
1796 out_vic="@@name@@ verpasst @@alle@@@@adverb@@ eine Ohrfeige.";
1797 return MixedOut(WEM);
1798 }
1799 if (!who)
1800 Return("Gib wem eine Ohrfeige?\n");
1801 if (CheckLife(NOT_SELF,NOT_DEAD,
1802 "Dazu sind Dir Deine Backen doch zu schade.",
1803 "Du wirst doch nichts schlagen, was sich nicht wehren kann?"))
1804 return 1;
1805 GHOSTCHECK("Deine Hand saust mit voller Wucht durch dein Opfer durch!",
1806 gname()+" will "+who->name(WEM)+" eine Ohrfeige geben - aber die Hand\n"
1807 +"saust mit voller Wucht durch das Opfer durch!", 0);
1808 out_sel="Du verpasst @@wem@@@@adverb@@ eine schallende Ohrfeige.";
1809 out_vic="@@name@@ verpasst Dir@@adverb@@ eine Watsche, dass Dir Hoeren "
1810 +"und Sehen vergeht.";
1811 out_oth="@@name@@ verpasst @@wem@@@@adverb@@ eine schallende Ohrfeige.";
1812 return FeelIt();
1813
1814 /**************** Pfeifen ***************/
1815 case "pfeif":
1816 HELPCHECK("pfeif");
1817 GHOSTCHECK("Es kommt leider nur (nicht mal heisse) Luft, aber kein "
1818 +"Pfiff.\n",
1819 gname()+" spitzt den Mund und pustet angestrengt. Nichts passiert.\n", 0);
1820 ParseRest(str, "nach");
1821 if (str && !who && !adverb)
1822 Return("Pfeife wie? Pfeife wem nach? Haeh?\n");
1823 if (who && CheckLife(NOT_SELF,NOT_DEAD,
1824 "Was willst Du denn damit ausdruecken? Das gibt fuer mich keinen Sinn.",
1825 "Ich habe keine Lust dazu."))
1826 return 1;
1827 out_sel="Du pfeifst@@ wen@@@@adverb@@"
1828 +(who ? " nach." : (adverb ? "." : " anerkennend."));
1829 if (who) out_vic="@@name@@ pfeift Dir@@adverb@@ nach.";
1830 out_oth="@@name@@ pfeift@@ wen@@@@adverb@@"
1831 +(who ? " nach." : (adverb ? "." :" anerkennend."));
1832 return FeelIt();
1833
1834 /**************** Philosophieren ***************/
1835 case "philosophier":
1836 HELPCHECK("philosophier");
1837 ParseRest(str);
1838 out_sel="Du philosophierst"+(adverb ? "@@adverb@@." :
1839 (str ? " ueber "+str+"." : "."));
1840 out_oth="@@gname@@ philosophiert"+(adverb ? "@@adverb@@." :
1841 (str ? " ueber "+str+"." : "."));
1842 return FeelIt();
1843
1844 /**************** (Nase) Putzen ***************/
1845 case "putz":
1846 HELPCHECK("putz");
1847 if (ghost())
1848 Return("Nix da zum Putzen, so nebuloes, wie Du bist.\n");
1849 ParseRest(str, ({"nase", "die nase"}));
1850 if (str && str!="nase" && !adverb)
1851 Return("Putze Deine Nase wie?\n");
1852 out_sel="Du putzt Deine Nase@@adverb@@.";
1853 out_oth="@@name@@ putzt@@adverb@@ "+QPP(FEMALE,WEN)+" Nase.";
1854 return FeelIt();
1855
1856 /**************** Quaken ***************/
1857 case "quak":
1858 HELPCHECK("quak");
1859 ParseRest(str);
1860 if (str && !adverb)
1861 Return("Quake wie?\n");
1862 sfoo="";
1863 flag=QueryProp(P_FROG)&&!ghost();
1864 for (t_g=0; t_g<=random(flag ? 4 : 2); t_g++) {
1865 sfoo+=(flag ? " Qu" : " kw");
1866 for (t_n=0; t_n<=random(flag ? 10 : 5); t_n++)
1867 sfoo+="aA"[random(1)..random(1)];
1868 sfoo+="k";
1869 }
1870 if (!flag)
1871 sfoo=lower_case(sfoo);
1872 else
1873 sfoo+="!";
1874 out_sel="Du quakst"+(adverb ? "@@adverb@@" : (flag ? " aus voller Kehle"
1875 : " in etwa wie ein Frosch"))+":"+sfoo;
1876 out_oth="@@gname@@ quakt"+(adverb ? "@@adverb@@" : (flag ? " aus voller Kehle"
1877 : " in etwa wie ein Frosch"))+":"+sfoo;
1878 return FeelIt();
1879
1880 /**************** Quietschen ***************/
1881 case "quietsch":
1882 case "quiek":
1883 HELPCHECK("quiek");
1884 ParseRest(str);
1885 if (str && !adverb)
1886 Return("Quietsche wie?\n");
1887 out_sel="Du quietschst"+(adverb ? "@@adverb@@." : " vergnuegt.");
1888 out_oth="@@gname@@ quietscht"+(adverb ? "@@adverb@@." : " vergnuegt.");
1889 return FeelIt();
1890
1891 /**************** Raeuspern ***************/
1892 case "raeusper":
1893 HELPCHECK("raeusper");
1894 ParseRest(str);
1895 if (str && !adverb)
1896 Return("Hm? Wie meinen?\n");
1897 out_sel="Du raeusperst Dich@@adverb@@.";
1898 out_oth="@@gname@@ raeuspert sich@@adverb@@.";
1899 return FeelIt();
1900
1901 /**************** Reiben ***************/
1902 case "reib":
1903 HELPCHECK("reib");
1904 if (ghost())
1905 Return("Du hast nichts zum Reiben, aber auch gar nichts.\n");
1906 if (str && (sscanf(str,"%s die Augen",sfoo)==1 || sscanf(str,"%s Augen",sfoo)==1))
1907 str=sfoo;
1908 else if (str && (sscanf(str,"%s die Haende",sfoo)==1
1909 ||sscanf(str,"%s Haende",sfoo)==1)) {
1910 flag=2;
1911 str=sfoo;
1912 }
1913 if (str=="") str=0;
1914 ParseRest(str);
1915 if (str && !adverb)
1916 Return("Reibe wie die "+(flag==2 ? "Haende" : "Augen")+"?\n");
1917 out_sel="Du reibst Dir"+(adverb ? "@@adverb@@"
1918 : (flag==2 ? " vergnuegt" : " muede"))+" die "
1919 +(flag==2 ? "Haende." : "Augen.");
1920 out_oth="@@name@@ reibt sich"+(adverb ? "@@adverb@@"
1921 : (flag==2 ? " vergnuegt" : " muede"))+" die "
1922 +(flag==2 ? "Haende." : "Augen.");
1923 return FeelIt();
1924
1925 /**************** Rotfln ***************/
1926 case "rotfl":
1927 HELPCHECK("rotfl");
1928 ParseRest(str);
1929 if (str && !adverb)
1930 Return("Rotfl wie?\n");
1931 out_sel="Du rotflst@@adverb@@.";
1932 out_oth="@@gname@@ rotflt@@adverb@@.";
1933 return FeelIt();
1934
1935 /**************** Ruelpsen ***************/
1936 case "ruelps":
1937 HELPCHECK("ruelps");
1938 GHOSTCHECK("Ein leichter Windhauch entfaehrt Deinem Mund, mehr nicht.\n",
1939 "Dem Mund des Geistes von "+capname()
1940 +" entfaehrt ein leichtes Lueftchen.\n", 0);
1941 if (!str) {
1942 out_sel="BOOOOEEERRRRPP! Entschuldige dich gefaelligst!";
1943 out_oth="@@name@@ ruelpst unanstaendig.";
1944 }
1945 else {
1946 ParseRest(str);
1947 if (!adverb) {
1948 write("Ruelpse wie (schlimm genug, dass Du Dich nicht beherrschen "
1949 +"kannst!)?\n");
1950 return 1;
1951 }
1952 out_sel="Du ruelpst@@adverb@@. Schaem Dich!";
1953 out_oth="@@name@@ ruelpst@@adverb@@ und wird nicht mal rot dabei.";
1954 }
1955 return FeelIt();
1956 }
1957
1958 switch (vb) {
1959 /**************** Runzeln ***************/
1960 case "runzel":
1961 case "runzl":
1962 HELPCHECK("runzel");
1963 if (ghost())
1964 Return("DAS geht als Geist nun wirklich nicht.\n");
1965 ParseRest(str,"stirn");
1966 if (str && !adverb)
1967 Return("Runzle die Stirn wie?\n");
1968 out_sel="Du runzelst@@adverb@@ die Stirn.";
1969 out_oth="@@name@@ runzelt@@adverb@@ die Stirn.";
1970 return FeelIt();
1971
1972 /**************** Sabbere ***************/
1973 case "sabber":
1974 HELPCHECK("sabber");
1975 sfoo=ghost() ? "schleim" : "sabber";
1976 ParseRest(str);
1977 if (str && !adverb && !who)
1978 Return("Sabber wie oder wen an?\n");
1979 out_sel="Du "+sfoo+"st@@ wen@@@@adverb@@ "
1980 +(who ? "an." : "auf den Boden.");
1981 if (who) out_vic="@@gname@@ "+sfoo+"t Dich@@adverb@@ an.";
1982 out_oth="@@gname@@ "+sfoo+"t@@ wen@@@@adverb@@ "
1983 +(who ? "an." : "auf den Boden.");
1984 return FeelIt();
1985
1986 /**************** Schaemen ***************/
1987 case "schaem":
1988 HELPCHECK("schaem");
1989 ParseRest(str);
1990 if (str && !adverb && lower_case(str)!="dich")
1991 Return("Schaeme Dich wie?\n");
1992 out_sel="Du schaemst Dich@@adverb@@.";
1993 out_oth="@@gname@@ schaemt sich@@adverb@@.";
1994 return FeelIt();
1995
1996#ifdef SCHAU_AN
1997 /**************** Schau an ***************/
1998 case "schau":
1999 HELPCHECK("schau");
2000 if (!str || old_explode(str, " ")[sizeof(old_explode(str, " "))]!="an")
2001 return 0;
2002 ParseRest(str, "an");
2003 if (!who)
2004 Return("Schau wen an?\n");
2005 out_sel="Du schaust @@wen@@@@adverb@@ an.";
2006 out_vic="@@gname@@ schaut Dich@@adverb@@ an.";
2007 out_oth="@@gname@@ schaut @@wen@@@@adverb@@ an.";
2008 return FeelIt();
2009#endif
2010
2011 /**************** Schluchzen ***************/
2012 case "schluchz":
2013 HELPCHECK("schluchz");
2014 ParseRest(str);
2015 if (str && !adverb)
2016 Return("Schluchze wie?\n");
2017 out_sel="Du schluchzt"+(adverb ? "@@adverb@@." : " herzzerreissend.");
2018 out_oth="@@gname@@ schluchzt"
2019 +(adverb ? "@@adverb@@." : " herzzerreissend.");
2020 return FeelIt();
2021
2022 /**************** Schmollen ***************/
2023 case "schmoll":
2024 HELPCHECK("schmoll");
2025 GHOSTCHECK("Du schwebst beleidigt in die Ecke.\n",
2026 gname()+" schwebt beleidigt in die Ecke und schmollt.\n", 0);
2027 ParseRest(str);
2028 if (str && !adverb)
2029 Return("Schmolle wie?\n");
2030 out_sel="Du schmollst@@adverb@@.";
2031 out_oth="@@name@@ geht in die Ecke und schmollt@@adverb@@.";
2032 return FeelIt();
2033
2034 /**************** Schmunzeln ***************/
2035 case "schmunzel":
2036 case "schmunzl":
2037 HELPCHECK("schmunzel");
2038 ParseRest(str);
2039 if (str && !adverb)
2040 Return("Schmunzle wie?\n");
2041 out_sel="Du schmunzelst@@adverb@@.";
2042 out_oth="@@gname@@ schmunzelt@@adverb@@.";
2043 return FeelIt();
2044
2045 /**************** Schnalzen ***************/
2046 case "schnalz":
2047 HELPCHECK("schnalz");
2048 ParseRest(str, ({"zunge","mit zunge", "mit der zunge"}));
2049 out_sel="Du schnalzt@@adverb@@ mit der Zunge.";
2050 out_oth="@@gname@@ schnalzt@@adverb@@ mit der Zunge.";
2051 return FeelIt();
2052
2053 /**************** Schnauben ***************/
2054 case "schnaub":
2055 HELPCHECK("schnaub");
2056 ParseRest(str);
2057 if (str && !adverb)
2058 Return("Schnaube wie?\n");
2059 out_sel="Du schnaubst"+(adverb ? "@@adverb@@." : " entruestet.");
2060 out_oth="@@gname@@ schnaubt"+(adverb ? "@@adverb@@." : " entruestet.");
2061 return FeelIt();
2062
2063 /**************** Schnaufen ***************/
2064 case "schnauf":
2065 HELPCHECK("schnauf");
2066 ParseRest(str);
2067 if (str && !adverb)
2068 Return("Schnaufe wie?\n");
2069 out_sel="Du schnaufst"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
2070 out_oth="@@gname@@ schnauft"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
2071 return FeelIt();
2072
2073 /**************** Schnippen ***************/
2074 case "schnipp":
2075 case "schnipps":
2076 HELPCHECK("schnipp");
2077 GHOSTCHECK("Du schaffst es nicht, weil die Finger durcheinander durch "
2078 +"gehen.\n",
2079 gname()+" versagt beim Schnippen - die Finger\ngehen durcheinander "
2080 +"durch.\n", 0);
2081 ParseRest(str);
2082 if (str && !adverb)
2083 Return("Schnippe wie?\n");
2084 out_sel="Du schnippst@@adverb@@ mit deinen Fingern.";
2085 out_oth="@@name@@ schnippt@@adverb@@ mit den Fingern.";
2086 return FeelIt();
2087
2088 /**************** Schnarchen ***************/
2089 case "schnarch":
2090 HELPCHECK("schnarch");
2091 if (ghost())
2092 Return("Ich glaube, da fehlen Dir irgendwie die physischen "
2093 +"Voraussetzungen dazu.\n");
2094 ParseRest(str);
2095 if (str && !adverb)
2096 Return("Schnarche wie?\n");
2097 out_sel=(str ? "Zzzzzzzzzzz..." : "Du schnarchst@@adverb@@.");
2098 out_oth="@@name@@ schnarcht "+(str ? "@@adverb@@." : "laut.");
2099 return FeelIt();
2100
2101 /**************** Schniefen ***************/
2102 case "snief":
2103 case "schnief":
2104 HELPCHECK("schnief");
2105 GHOSTCHECK("Du schniefst ganz leise.\n",
2106 gname()+" schnieft ganz leise.\n", 0);
2107 ParseRest(str);
2108 if (str && !adverb)
2109 Return("Schniefe wie?\n");
2110 out_sel="Du schniefst@@adverb@@.";
2111 out_oth="@@name@@ schnieft@@adverb@@.";
2112 return FeelIt();
2113
2114 /**************** Schnurren ***************/
2115 case "schnurr":
2116 HELPCHECK("schnurr");
2117 ParseRest(str);
2118 if (str && !adverb)
2119 Return("Wie willst Du schnurren?\n");
2120 out_sel="MMMMIIIIIAAAAAAUUUUUUUU! Du schnurrst"
2121 +(adverb ? "@@adverb@@." : " zufrieden.");
2122 out_oth="@@gname@@ schnurrt"+(adverb ? "@@adverb@@." : " zufrieden.");
2123 return FeelIt();
2124
2125 /**************** Schreien ***************/
2126 case "schrei":
2127 HELPCHECK("schrei");
2128 GHOSTCHECK("AAAAIIIIIIIIIIIEEEEEEEEEEEEEEEEEEEEEEEEEE! Ja, nur Geister "
2129 +"koennen so schreien!\n",
2130 gname()+" schreit - das Blut gefriert fast in deinen Ader!\n", 0);
2131 if (!str) {
2132 out_sel="AUUUAAAHHHHHH!!!!";
2133 out_oth="@@name@@ schreit laut!";
2134 }
2135 else {
2136 ParseRest(str);
2137 if (!who && !adverb)
2138 Return("Schreien - wie denn? Oder wen denn anschreien?\n");
2139 out_sel="Du schreist@@ wen@@@@adverb@@"+(who ? " an" : "")+".";
2140 if (who) out_vic="@@name@@ schreit Dich@@adverb@@ an.";
2141 out_oth="@@name@@ schreit@@ wen@@@@adverb@@"+(who? " an" : "")+".";
2142 }
2143 return FeelIt();
2144
2145 /**************** Schuetteln ***************/
2146 case "schuettel":
2147 case "schuettl":
2148 HELPCHECK("schuettel");
2149 ParseRest(str);
2150 if (for_all) {
2151 out_sel="Du schuettelst @@alle@@@@adverb@@ die Haende.";
2152 out_vic="@@gname@@ schuettelt @@alle@@@@adverb@@ die Haende.";
2153 return MixedOut(WEM);
2154 }
2155 if (str && !who && !adverb)
2156 Return("Schuettle wie? Schuettle wem die Hand?\n");
2157 if(!who) {
2158 out_sel="Du schuettelst Dich@@adverb@@.";
2159 out_oth="@@gname@@ schuettelt sich@@adverb@@.";
2160 }
2161 else {
2162 if (CheckLife(0,NOT_DEAD,
2163 "", "Noe, das mach ich nur mit Lebewesen."))
2164 return 1;
2165 if (who == this_player()) {
2166 out_sel="Du hebst"+(adverb ? "@@adverb@@" : " triumphierend")
2167 +" Deine Haende ueber den Kopf und schuettelst sie.";
2168 out_oth="@@gname@@ hebt"+(adverb ? "@@adverb@@" : " triumphierend")
2169 +" die Haende ueber den Kopf\nund schuettelt sie.";
2170 }
2171 else {
2172 out_sel="Du schuettelst@@ wem@@@@adverb@@ die Haende.";
2173 if (ghost()) out_sel+="\nNaja, Du versuchst es wenigstens - "
2174 +"immer diese durchlaessigen Haende...";
2175 out_vic="@@gname@@ schuettelt Dir@@adverb@@ die Haende.";
2176 if (ghost()) out_vic+="\nNaja, Du versuchst es wenigstens - "
2177 +"immer diese durchlaessigen Haende...";
2178 out_oth="@@gname@@ schuettelt@@ wem@@@@adverb@@ die Haende.";
2179 if (ghost()) out_oth+="\nNaja, Du versuchst es wenigstens - "
2180 +"immer diese durchlaessigen Haende...";
2181 }
2182 }
2183 return FeelIt();
2184
2185 /**************** Schweigen ***************/
2186 case "schweig":
2187 HELPCHECK("schweig");
2188 ParseRest(str);
2189 if (str && !adverb)
2190 Return("Schweige wie?\n");
2191 out_sel="Du schweigst@@adverb@@.";
2192 out_oth="@@gname@@ schweigt@@adverb@@.";
2193 return FeelIt();
2194
2195 /**************** Seufzen ***************/
2196 case "seufz":
2197 HELPCHECK("seufz");
2198 GHOSTCHECK("Du seufzt geisterhaft.\n",
2199 gname()+" seufzt geisterhaft. Naja, wie denn sonst?\n", 0);
2200 ParseRest(str);
2201 if (!adverb && str)
2202 Return("Seufze wie?\n");
2203 out_sel="Du seufzst@@adverb@@.";
2204 out_oth="@@name@@ seufzt@@adverb@@.";
2205 return FeelIt();
2206
2207 /**************** Singen ***************/
2208 case "sing":
2209 HELPCHECK("sing");
2210 if (!str) {
2211 out_sel="Oh sole mio!";
2212 out_oth="@@gname@@ singt irgendwas italienisches.";
2213 }
2214 else {
2215 ParseRest(str);
2216 out_sel="Du singst@@adverb@@"+(adverb ? "." : " '"+capitalize(str)+"'.");
2217 out_oth="@@gname@@ singt@@adverb@@"+(adverb ? "." : " '"
2218 +capitalize(str)+"'.");
2219 }
2220 return FeelIt();
2221
2222 /**************** Sniffen ***************/
2223 case "sniff":
2224 HELPCHECK("sniff");
2225 ParseRest(str);
2226 if (str && !adverb && !who)
2227 Return("Sniffe wie?\n");
2228 out_sel="Du sniffst"+(who ? " @@wen@@" : "")
2229 +(adverb ? "@@adverb@@" : " traurig")+(who ? " an." : ".");
2230 if (who) out_vic="@@gname@@ snifft Dich"
2231 +(adverb ? "@@adverb@@" : " traurig")+" an.";
2232 out_oth="@@gname@@ snifft"+(who ? " @@wen@@" : "")
2233 +(adverb ? "@@adverb@@" : " traurig")+(who ? " an." : ".");
2234 return FeelIt();
2235
2236 /**************** Spucken ***************/
2237 case "spuck":
2238 HELPCHECK("spuck");
2239 GHOSTCHECK("Du bringst nicht genug Spucke zusammen.\n",
2240 gname()+" stellt gerade fest, dass man ohne Spucke nicht\n"
2241 +"spucken kann.\n", 0);
2242 ParseRest(str);
2243 if (str && !who && !adverb)
2244 Return("Spucke wen wie an?\n");
2245 if (who && CheckLife(NOT_SELF,0,
2246 "Hast Du Dich so schlecht benommen? Lass es lieber bleiben."))
2247 return 1;
2248 out_sel="Du spuckst@@ wen@@@@adverb@@ "+(who ? "an." : "auf den Boden.");
2249 if (who) out_vic="@@name@@ spuckt Dich@@adverb@@ an.";
2250 out_oth="@@name@@ spuckt@@ wen@@@@adverb@@ "
2251 +(who ? "an." : "auf den Boden.");
2252 return FeelIt();
2253
2254 /**************** Stampfen ***************/
2255 case "stampf":
2256 HELPCHECK("stampf");
2257 ParseRest(str, "auf");
2258 out_sel="Du stampfst@@adverb@@ mit dem Fuss auf.";
2259 out_oth="@@gname@@ stampft@@adverb@@ mit dem Fuss auf.";
2260 return FeelIt();
2261
2262 /**************** Starren ***************/
2263 case "starr":
2264 HELPCHECK("starr");
2265 ParseRest(str);
2266 if (str && !who && !adverb)
2267 Return("Starre wie bzw. wen an?\n");
2268 if (who && CheckLife(NOT_SELF,0,
2269 "Wie willst Du in Deine eigenen Augen starren? "
2270 +"(Spiegel gelten nicht...)"))
2271 return 1;
2272 out_sel="Du starrst"+(!str ? " ins Leere." : (who ? "@@ wen@@" : "")
2273 +(adverb ? "@@adverb@@" : " vertraeumt")+(who ? " an." : "."));
2274 if (who) out_vic="@@gname@@ starrt"+(adverb ? "@@adverb@@" : " tief")
2275 +" in Deine Augen.";
2276 out_oth="@@gname@@ starrt"+(!str ? " ins Leere." : (who ? "@@ wen@@" : "")
2277 +(adverb ? "@@adverb@@" : " vertraeumt")+(who ? " an." : "."));
2278 return FeelIt();
2279
2280 /**************** Staunen ***************/
2281 case "staun":
2282 HELPCHECK("staun");
2283 if (!str) {
2284 out_sel="Du bist erstaunt.";
2285 out_oth="@@gname@@ ist erstaunt.";
2286 }
2287 else {
2288 ParseRest(str, "ueber");
2289 if (!who && !adverb)
2290 Return("Bla bla. Wenn Du nach staune noch was tippst, sollte "
2291 +"das ein\nLebewesen sein.\n");
2292 if (who == this_player()) {
2293 out_sel="Du staunst@@adverb@@ ueber Dich selber.";
2294 out_oth="@@gname@@ staunt@@adverb@@ ueber sich selber.";
2295 }
2296 else {
2297 out_sel="Du staunst@@adverb@@"+(who ? " ueber @@wen@@." : ".");
2298 if (who) out_vic="@@gname@@ staunt@@adverb@@ ueber Dich.";
2299 out_oth="@@gname@@ staunt@@adverb@@"+(who ? " ueber @@wen@@." : ".");
2300 }
2301 }
2302 return FeelIt();
2303
2304 /**************** Stieren ***************/
2305 case "stier":
2306 HELPCHECK("stier");
2307 GHOSTCHECK("Du stierst mit hohlem Blick in die Gegend.\n",
2308 gname()+" stiert mit hohlem Blick in die Gegend.\n", 0);
2309 ParseRest(str);
2310 if (str && !who && !adverb)
2311 Return("Stiere wie oder wen an?\n");
2312 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2313 "Du kannst Dich nicht selber anstieren.",
2314 "Bitte nur Lebewesen anstieren."))
2315 return 1;
2316 out_sel="Du stierst@@ wen@@@@adverb@@"
2317 +(who ? " an." : " in der Gegend herum.");
2318 if (who) out_vic="@@gname@@ stiert Dich@@adverb@@ an.";
2319 out_oth="@@gname@@ stiert@@ wen@@@@adverb@@"
2320 +(who ? " an." : " in der Gegend herum.");
2321 return FeelIt();
2322
2323 /**************** Stimme zu ***************/
2324 case "stimm":
2325 HELPCHECK("stimm");
2326 ParseRest(str, "zu");
2327 if (str && !who && !adverb)
2328 Return("Stimme wem zu?\n");
2329 out_sel="Du stimmst@@ wem@@@@adverb@@ zu.";
2330 if (who) out_vic="@@gname@@ stimmt Dir@@adverb@@ zu.";
2331 out_oth="@@gname@@ stimmt@@ wem@@@@adverb@@ zu.";
2332 return FeelIt();
2333
2334 /**************** Stoehnen ***************/
2335 case "stoehn":
2336 HELPCHECK("stoehn");
2337 GHOSTCHECK("Du stoehnst schauderlich.\n",
2338 gname()+" stoehnt schauderlich. Zum Glueck\nhast Du ziemlich "
2339 +"gute Nerven.\n", 0);
2340 ParseRest(str);
2341 if (!adverb && str)
2342 Return("Wie willst Du stoehnen?\n");
2343 out_sel="Du stoehnst@@adverb@@.";
2344 out_oth="@@name@@ stoehnt@@adverb@@.";
2345 return FeelIt();
2346
2347 /**************** Stossen ***************/
2348 case "stoss":
2349 HELPCHECK("stoss");
2350 ParseRest(str);
2351 if (!who)
2352 Return("Stosse wen?\n");
2353 if (CheckLife(NOT_SELF,NOT_DEAD,
2354 "Was soll der Unsinn? Lass das!",
2355 "Das gibt nur bei Lebewesen Sinn."))
2356 return 1;
2357 GHOSTCHECK("Dein Ellenbogen versinkt in "+who->name(WEM)+".\n",
2358 gname()+" will "+who->name(WEM)+" in die Rippen stossen, aber "
2359 +QPP(MALE,WER,PLURAL)+"\nEllenbogen verteilen keinen Stoss, "
2360 +"sondern versinken.\n",
2361 gname()+" will Dich in die Rippen stossen, aber "+QPP(MALE,WER,PLURAL)
2362 +" Ellenbogen versinken.\n");
2363 out_sel="Du stoesst@@ wen@@@@adverb@@ in die Rippen.";
2364 out_vic="@@name@@ stoesst Dir@@adverb@@ in die Rippen.";
2365 out_oth="@@name@@ stoesst@@ wen@@@@adverb@@ in die Rippen.";
2366 return FeelIt();
2367
2368 /**************** Streicheln ***************/
2369 case "streichel":
2370 case "streichl":
2371 HELPCHECK("streichel");
2372 ParseRest(str);
2373 if (!who)
2374 Return("Streichle wen?\n");
2375 if (for_all) {
2376 out_sel="Du streichelst @@alle@@@@adverb@@.";
2377 out_vic="@@gname@@ streichelt @@alle@@@@adverb@@.";
2378 return MixedOut(WEN);
2379 }
2380 if (CheckLife(NOT_SELF,NOT_DEAD,
2381 "Lass Dich von anderen streicheln.",
2382 "Ich streichle nur Lebewesen."))
2383 return 1;
2384 GHOSTCHECK("Du willst "+who->name(WEN,2)+" streicheln, aber Deine "
2385 +"Haende koennen\nnichts beruehren.\n",
2386 gname()+" will "+who->name(WEN,2)+" streicheln, aber diese\n"
2387 +"Geisterhaende koennen halt nix beruehren...\n",
2388 gname()+" will Dich streicheln, scheitert aber wie so oft an\n"
2389 +"diesen dummen durchlaessigen Geisterhaenden.\n");
2390 out_sel="Du streichelst @@wen@@@@adverb@@.";
2391 out_vic="@@name@@ streichelt Dich@@adverb@@.";
2392 out_oth="@@name@@ streichelt @@wen@@@@adverb@@.";
2393 return FeelIt();
2394
2395 /**************** Stupsen ***************/
2396 case "stups":
2397 HELPCHECK("stups");
2398 if (ghost())
2399 Return("Das geht nicht ohne Ellenbogen,..\n");
2400 ParseRest(str);
2401 if (!who)
2402 Return("Stupse wen an?\n");
2403 out_sel="Du stupst @@wen@@@@adverb@@ an.";
2404 out_vic="@@name@@ stupst Dich@@adverb@@ an.";
2405 out_oth="@@name@@ stupst @@wen@@@@adverb@@ an.";
2406 return FeelIt();
2407
2408 /**************** Stutzen ***************/
2409 case "stutz":
2410 HELPCHECK("stutz");
2411 ParseRest(str);
2412 if (str && !adverb)
2413 Return("Stutze wie?\n");
2414 out_sel="Du stutzt@@adverb@@.";
2415 out_oth="@@gname@@ stutzt@@adverb@@.";
2416 return FeelIt();
2417
2418 /**************** Taetscheln ***************/
2419 case "taetschel":
2420 case "taetschl":
2421 HELPCHECK("taetschel");
2422 ParseRest(str);
2423 if (!who)
2424 Return("Taetschle wen?\n");
2425 if (CheckLife(NOT_SELF,NOT_DEAD,
2426 "Das sieht zu doof aus, das mache ich nicht.",
2427 "Ich taetschle nur Lebewesen."))
2428 return 1;
2429 GHOSTCHECK("Du willst "+who->name(WEN)+" taetscheln - aber Deine "
2430 +"Haende gehen\nglatt durch den Kopf durch.\n",
2431 gname()+" will "+who->name(WEN)+" den Kopf taetscheln, aber "
2432 +"die Geister-\nhaende gehen glatt durch den Kopf durch.\n",
2433 gname()+" will Deinen Kopf taetscheln, aber diese Geisterhaende "
2434 +"gehen\nglatt durch Deinen Kopf durch - Du hast ein seltsames "
2435 +"Gefuehl dabei.\n");
2436 out_sel="Du taetschelst @@wem@@@@adverb@@ den Kopf.";
2437 out_vic="@@name@@ taetschelt Dir@@adverb@@ den Kopf.";
2438 out_oth="@@name@@ taetschelt @@wem@@@@adverb@@ den Kopf.";
2439 return FeelIt();
2440
2441 /**************** Tanzen ***************/
2442 case "tanz":
2443 HELPCHECK("tanz");
2444 GHOSTCHECK("Du tanzt den klassischen GeisterTanz (tm).\n",
2445 gname()+" tanzt den klassischen GeisterTanz (tm).\n", 0);
2446 if (!str) {
2447 out_sel="Kommst Du Dir nicht irgendwie bloed vor? Du tanzt "
2448 +"den Ententanz.";
2449 out_oth="@@name@@ tanzt den Ententanz.";
2450 }
2451 else {
2452 taenze=({"Walzer","Polka","Rumba","Tango","Cha cha cha","Foxtrott",
2453 "Mambo","Salsa","Slowfox","Breakdance","Pogo","Merengue",
2454 "Rock'n'Roll","Ballett","Regentanz","Hexentanz"});
2455 ParseRest(str,"mit");
2456 if (!who)
2457 Return("Mit wem willst Du tanzen?\n");
2458 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2459 "Mit Dir selber kannst Du nicht tanzen.",
2460 "Keine Reaktion - will wahrscheinlich nicht tanzen."))
2461 return 1;
2462 ifoo=random(sizeof(taenze));
2463 out_sel="Du tanzt@@adverb@@ mit @@wem@@ eine Runde "+taenze[ifoo]+".";
2464 out_vic="@@name@@ reisst Dich an sich und tanzt@@adverb@@ eine Runde "
2465 +taenze[ifoo]+" mit Dir.";
2466 out_oth="@@name@@ schnappt sich @@wen@@ und die beiden tanzen"
2467 +"@@adverb@@ eine Runde "+taenze[ifoo]+".";
2468 }
2469 return FeelIt();
2470
2471 /**************** Traeumen ***************/
2472 case "traeum":
2473 HELPCHECK("traeum");
2474 if (!str)
2475 Return("Traeume wovon oder von wem?\n");
2476 ParseRest(str);
2477 out_sel="Du traeumst"+(who ? "@@adverb@@ von @@wem@@."
2478 : (adverb ? "@@adverb@@." : " "+str+"."));
2479 if (who) out_vic="@@gname@@ traeumt@@adverb@@ von Dir.";
2480 out_oth="@@gname@@ traeumt"+(who ? "@@adverb@@ von @@wem@@."
2481 : (adverb ? "@@adverb@@." : " "+str+"."));
2482 return FeelIt();
2483
2484 /**************** Treten (tritt) ***************/
2485 case "tritt":
2486 case "tret":
2487 HELPCHECK("tritt");
2488 if (!str) {
2489 GHOSTCHECK("Dein Fuss faehrt durch die beruehmte langvergessene "
2490 +"unsichtbare Schildkroete\nhindurch.\n",
2491 gname()+" will die beruehmte langvergessene unsichtbare\n"
2492 +"Schildkroete treten, aber "+QPP(MALE,WER)
2493 +" Fuss faehrt durch sie hindurch.\n", 0);
2494 out_sel="Du trittst die beruehmte langvergessene unsichtbare "
2495 +"Schildkroete.";
2496 out_oth="@@gname@@ tritt die beruehmte langvergessene unsichtbare "
2497 +"Schildkroete.";
2498 }
2499 else {
2500 ParseRest(str);
2501 if (for_all) {
2502 out_sel="Du trittst @@alle@@@@adverb@@. Solltest Du nicht langsam "
2503 +"an Flucht denken?";
2504 out_vic="@@name@@ tritt @@alle@@@@adverb@@. Traut sich ganz "
2505 +"schoen was!";
2506 return MixedOut(WEN);
2507 }
2508 if (!who && !adverb)
2509 Return("Wenn Du schon was nach tritt tippst, dann sag mir, wen "
2510 +"oder wie ich das soll.\n");
2511 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2512 "Du schaffst es nicht, Dir selber in den Hintern zu treten.",
2513 "Tote Sachen tritt man nicht auch noch!"))
2514 return 1;
2515 if (who) {
2516 out_sel="Du trittst@@ wen@@@@adverb@@.";
2517 if (who) out_vic="@@gname@@ tritt Dich@@adverb@@.";
2518 out_oth="@@gname@@ tritt@@ wen@@@@adverb@@.";
2519 }
2520 else {
2521 out_sel="Du trittst die beruehmte langvergessene unsichtbare "
2522 +"Schildkroete@@adverb@@.";
2523 out_oth="@@gname@@ tritt die beruehmte langvergessene unsichtbare "
2524 +"Schildkroete\n@@adverb@@.";
2525 }
2526 }
2527 return FeelIt();
2528
2529 /**************** Troesten ***************/
2530 case "troest":
2531 HELPCHECK("troest");
2532 ParseRest(str);
2533 if (!who)
2534 Return("Wen willst Du troesten?\n");
2535 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2536 "Trost musst Du bei jemand anders suchen.",
2537 "Das Teil musst Du nicht troesten, das fuehlt nix."))
2538 return 1;
2539 out_sel="Du troestest@@ wen@@@@adverb@@.";
2540 out_vic="@@gname@@ troestet Dich@@adverb@@.";
2541 out_oth="@@gname@@ troestet@@ wen@@@@adverb@@.";
2542 return FeelIt();
2543
2544 /**************** Umarmen ***************/
2545 case "umarm":
2546 HELPCHECK("umarm");
2547 ParseRest(str);
2548 if (!who)
2549 Return("Wen willst Du umarmen?\n");
2550 if (who && CheckLife(0,NOT_DEAD,0,"Bitte umarme nur Lebewesen."))
2551 return 1;
2552 if (ghost() && CheckLife(NOT_SELF,0,
2553 "Du kannst Dich als Geist nicht selber waermen."))
2554 return 1;
2555 str1=who->QueryProp(P_NAME);
2556 if(pointerp(str1))str1=(string)str1[0]; // Rumata
2557 str2=who->QueryPronoun(WEN);
2558 GHOSTCHECK("Du willst "+str1+" umarmen, aber Deine Arme gehen durch "
2559 +str2+" durch.\n",
2560 gname()+" will "+str1+" umarmen, aber "+QPP(MALE,WER,PLURAL)
2561 +" Arme gehen\ndurch "+str2+" hindurch.\n",
2562 gname()+" will Dich umarmen, aber "+QPP(MALE,WER,PLURAL)
2563 +" Arme gehen durch Dich hindurch.\n");
2564 if (for_all) {
2565 out_sel="Du umarmst @@alle@@@@adverb@@.";
2566 out_vic="@@name@@ umarmt @@alle@@@@adverb@@.";
2567 return MixedOut(WEN);
2568 }
2569 if (who==this_player()) {
2570 out_sel="Du legst Deine Arme um Dich und waermst Dich "
2571 +"ein bisschen selber.";
2572 out_oth="@@name@@ legt "+QPP(MALE,WER,PLURAL)
2573 +" Arme um sich und waermt sich ein bisschen selber.";
2574 }
2575 else {
2576 out_sel="Du umarmst@@ wen@@@@adverb@@.";
2577 out_vic="@@name@@ umarmt Dich@@adverb@@.";
2578 out_oth="@@name@@ umarmt@@ wen@@@@adverb@@.";
2579 }
2580 return FeelIt();
2581
2582 /**************** Verfluchen ***************/
2583 case "verfluch":
2584 HELPCHECK("verfluch");
2585 if (!str)
2586 Return("Wen oder was willst Du denn verfluchen?\n");
2587 ParseRest(str);
2588 if (!who) {
2589 out_sel="Du verfluchst "+str+".";
2590 out_oth="@@gname@@ verflucht "+str+".";
2591 }
2592 else {
2593 if (who==this_player())
2594 Return("Sich selber verflucht man besser nicht...\n");
2595 if (!adverb) {
2596 flag=sscanf(str, "%s %s", str1,str2);
2597 out_sel="Du verfluchst@@ wen@@"+(flag==2 ? " "+str2 : "")+".";
2598 out_vic="@@gname@@ verflucht Dich"+(flag==2?" "+str2 : "")+".";
2599 out_oth="@@gname@@ verflucht@@ wen@@"+(flag==2 ? " "+str2 : "")+".";
2600 }
2601 else {
2602 out_sel="Du verfluchst@@ wen@@@@adverb@@.";
2603 out_vic="@@gname@@ verflucht Dich@@adverb@@.";
2604 out_oth="@@gname@@ verflucht@@ wen@@@@adverb@@.";
2605 }
2606 }
2607 return FeelIt();
2608
2609 /**************** Verneigen / Verbeugen ***************/
2610 case "verneig":
2611 case "verbeug":
2612 HELPCHECK("verneig");
2613 GHOSTCHECK("Du verneigst Dich ein bisschen heftig - Dein Kopf taucht "
2614 +"kurz in den Boden.\n",
2615 gname()+" verneigt sich. Ein bisschen heftig - "+QPP(MALE,WER)
2616 +" Kopf\ntaucht kurz in den Boden ein.\n", 0);
2617 if ((!str) || (str == "dich")) {
2618 out_sel="Du verneigst Dich vor den Anwesenden.";
2619 out_oth="@@name@@ verneigt sich anmutig.";
2620 }
2621 else {
2622 ParseRest(str);
2623 if (for_all) {
2624 out_sel="Du verneigst Dich@@adverb@@ vor @@alle@@.";
2625 out_vic="@@name@@ verneigt sich@@adverb@@ vor @@alle@@.";
2626 return MixedOut(WEM);
2627 }
2628 if (!who && !adverb)
2629 Return("Verneige dich irgendwie oder vor jemandem.\n");
2630 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2631 "Wie willst Du das denn schaffen?",
2632 "Vor Sachen wird hier nicht verneigt, klar?\n"))
2633 return 1;
2634 out_sel="Du verneigst Dich@@adverb@@"+(who ? " vor" : "")+"@@ wem@@.";
2635 if (who ) out_vic="@@name@@ verneigt sich@@adverb@@ vor Dir.";
2636 out_oth="@@name@@ verneigt sich@@adverb@@"+(who ? " vor" : "")
2637 +"@@ wem@@.";
2638 }
2639 return FeelIt();
2640
2641 /**************** Verneinen ***************/
2642 case "nein":
2643 case "noe":
2644 HELPCHECK("nein");
2645 GHOSTCHECK("Du schuettelst Deinen Kopf so heftig, dass er kurz "
2646 +"davonschwebt.\n",
2647 gname()+" schuettelt heftig den Kopf.\nSo heftig, dass dieser "
2648 +"kurz davonschwebt und wieder eingefangen werden muss.\n", 0);
2649 ParseRest(str);
2650 if (str && !adverb)
2651 Return("Schuettle wie den Kopf?\n");
2652 out_sel="Du schuettelst@@adverb@@ den Kopf.";
2653 out_oth="@@name@@ schuettelt@@adverb@@ den Kopf.";
2654 return FeelIt();
2655
2656 /**************** Wackeln ***************/
2657 case "wackel":
2658 case "wackl":
2659 HELPCHECK("wackel");
2660 if (ghost())
2661 Return("Da gibt es nichts mehr, womit Du wackeln kannst.\n");
2662 if (str)
2663 if (strstr(str, "mit ")==0)
2664 sscanf(str, "mit %s", sfoo);
2665 else if (strstr(str,"mit ")>0) {
2666 sscanf(str, "%s mit %s", sfoo, sfoo);
2667 flag=1;
2668 }
2669 if (sfoo=="") sfoo=0;
2670 ParseRest(str, (sfoo ? (flag ? " mit " : "mit ")+sfoo : 0));
2671 if (str && !adverb && !sfoo)
2672 Return("Wackle wie oder womit?\n");
2673 out_sel="Du wackelst@@adverb@@ mit "+(sfoo ? sfoo+"." : "dem Hintern.");
2674 out_oth="@@name@@ wackelt@@adverb@@ mit "
2675 +(sfoo ? sfoo+"." : QPP(MALE,WEM)+" Hintern.");
2676 return FeelIt();
2677
2678 /**************** Waelzen ***************/
2679 case "waelz":
2680 HELPCHECK("waelz");
2681 ParseRest(str);
2682 if (str && !adverb)
2683 Return("Waelze Dich wie auf dem Boden?\n");
2684 out_sel="Du waelzt Dich"+(adverb ? "@@adverb@@" : " vor Lachen")
2685 +" auf dem Boden.";
2686 out_oth="@@gname@@ waelzt sich"+(adverb ? "@@adverb@@" : " vor Lachen")
2687 +(ghost() ? " im" : " auf dem")+" Boden.";
2688 return FeelIt();
2689
2690 /**************** Warten ***************/
2691 case "wart":
2692 HELPCHECK("wart");
2693 ParseRest(str);
2694 if (!str) {
2695 out_sel="Du tippst mit dem Fuss auf den Boden.";
2696 out_oth="@@gname@@ tippt mit dem Fuss auf den Boden.";
2697 } else if (!who && adverb) {
2698 out_sel="Du wartest@@adverb@@.";
2699 out_oth="@@gname@@ wartet@@adverb@@.";
2700 } else {
2701 out_sel="Du wartest@@adverb@@ auf "+(who ? "@@wen@@." : str+".");
2702 if (who) out_vic="@@gname@@ wartet@@adverb@@ auf Dich.";
2703 out_oth="@@gname@@ wartet@@adverb@@ auf "+(who ? "@@wen@@." : str+".");
2704 }
2705 return FeelIt();
2706
2707#ifdef WECKE
2708 /**************** Wecken ***************/
2709 case "weck":
2710 HELPCHECK("weck");
2711 if (ParseRemote(str))
2712 return 1;
2713// ParseRest(str);
2714 if (!who)
2715 Return("Wen willst Du wecken?\n");
2716 if (sscanf(str, "%s %s", sfoo, sfoo)==2)
2717 flag=1;
2718 out_sel="Dein Wecker klingelt bei @@wem@@@@adverb@@"
2719 +(adverb ? "." : (flag ? ": "+sfoo : "."));
2720 out_vic=" "+name(WESSEN)+" Wecker klingelt bei Dir@@adverb@@"
2721 +(adverb ? "." : (flag ? ": "+sfoo : "."));
2722 out_oth="@@gname@@ wirft "+QPP(MALE, WEN)
2723 +" Wecker@@adverb@@ nach @@wem@@.";
2724 if (!who->QueryProp(P_VISUALBELL))
2725 out_vic[0]=7; // chr(7)==BEL
2726 else out_vic=out_vic[1..];
2727 return FeelIt();
2728#endif
2729
2730 /**************** Weinen ***************/
2731 case "wein":
2732 HELPCHECK("wein");
2733 GHOSTCHECK("Es reicht leider nur fuer ein paar winzige Nebelwoelkchen, "
2734 +"nicht fuer Traenen.\n",
2735 gname()+" verzieht das Gesicht und ein paar winzige Nebel-\n"
2736 +"woelkchen entfernen sich von seinen \"Augen\".\n", 0);
2737 if (!str) {
2738 out_sel="Waaaaah! Du weinst bitterlich.";
2739 out_oth="@@name@@ bricht in Traenen aus und weint bitterlich.";
2740 }
2741 else {
2742 ParseRest(str);
2743 if (!who && !adverb)
2744 Return("Weine Dich irgendwie bei irgendwem aus, aber nicht so.\n");
2745 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2746 "Bei sich selber kann man sich so schlecht ausweinen.",
2747 "Bei wem willst Du Dich ausweinen???"))
2748 return 1;
2749 if (who) {
2750 out_sel="Du weinst Dich@@adverb@@ bei@@ wem@@ aus.";
2751 out_vic="@@name@@ weint sich@@adverb@@ bei Dir aus.";
2752 out_oth="@@name@@ weint sich@@adverb@@ bei@@ wem@@ aus.";
2753 }
2754 else {
2755 out_sel="Du brichst in Traenen aus und weinst@@adverb@@.";
2756 out_oth="@@name@@ bricht in Traenen aus und weint@@adverb@@.";
2757 }
2758 }
2759 return FeelIt();
2760
2761 /**************** Winken ***************/
2762 case "wink":
2763 HELPCHECK("wink");
2764 ParseRest(str);
2765 if (for_all) {
2766 out_sel="Du winkst @@alle@@@@adverb@@ zu.";
2767 out_vic="@@name@@ winkt @@alle@@@@adverb@@ zu.";
2768 return MixedOut(WEM);
2769 }
2770 if (!who && !adverb && str)
2771 Return("Vielleicht solltest Du auch sagen, wem oder wie Du "
2772 +"(zu)winken willst.\n");
2773 if (who && CheckLife(NOT_SELF, NOT_DEAD,
2774 "Wink Dir nicht selber zu.",
2775 "Du musst schon einem Lebewesen zuwinken."))
2776 return 1;
2777 out_sel="Du winkst@@ wem@@@@adverb@@"+(who ? " zu" : "")+".";
2778 if (who) out_vic="@@gname@@ winkt Dir@@adverb@@ zu.";
2779 out_oth="@@gname@@ winkt@@ wem@@@@adverb@@"+(who ? " zu" : "")+".";
2780 return FeelIt();
2781
2782 /**************** Wuergen ***************/
2783 case "wuerg":
2784 HELPCHECK("wuerg");
2785 ParseRest(str);
2786 if (str && !who && !adverb)
2787 Return("Wuerge wen oder wie?\n");
2788 if (!who) {
2789 out_sel="Du faengst@@adverb@@ an zu wuergen.";
2790 out_oth="@@gname@@ faengt@@adverb@@ an zu wuergen.";
2791 } else if (CheckLife(NOT_SELF, NOT_DEAD,
2792 "Du wuergst ein bischen an Dir rum. Dir wird schnell langweilig.",
2793 "Wuerg lieber ein Lebewesen.")) {
2794 return 1;
2795 } else {
2796 out_sel="Du springst @@wen@@ an und faengst an, "+who->QueryPronoun(WEN)
2797 +"@@adverb@@ zu wuergen.";
2798 out_vic="@@gname@@ springt Dich auf einmal an und wuergt Dich@@adverb@@.";
2799 out_oth="@@gname@@ springt auf einmal @@wen@@ an und wuergt "
2800 +who->QueryPronoun(WEN)+"@@adverb@@.";
2801 }
2802 return FeelIt();
2803
2804 /**************** Wundern ***************/
2805 case "wunder":
2806 HELPCHECK("wunder");
2807 ParseRest(str);
2808 if (str && !who && !adverb)
2809 Return("Wie oder ueber wen willst Du Dich wundern?\n");
2810 out_sel="Du wunderst Dich@@adverb@@"+(who ? " ueber @@wen@@." : ".");
2811 if (who) out_vic="@@gname@@ wundert sich@@adverb@@ ueber Dich.";
2812 out_oth="@@gname@@ wundert sich@@adverb@@"+(who ? " ueber @@wen@@." : ".");
2813 return FeelIt();
2814
2815 /**************** Wuscheln ***************/
2816 case "wuschel":
2817 case "wuschl":
2818 HELPCHECK("wuschel");
2819 ParseRest(str);
2820 if (!who)
2821 Return("Wen willst Du denn wuscheln?\n");
2822 if (CheckLife(0,NOT_DEAD,
2823 "", "Hmm, sehr tot. Ne, lieber nicht."))
2824 return 1;
2825 if (who->QueryProp(P_FROG)) {
2826 write("Du verwuschelst... aeh... hm. Ein Frosch hat wohl nix "
2827 +"zum Wuscheln.\n");
2828 return 1;
2829 };
2830 GHOSTCHECK("Du willst "+who->name(WEN)+" wuscheln - aber Deine "
2831 +"Haende gehen\nglatt durch den Kopf durch.\n",
2832 gname()+" will "+who->name(WEN)+" den Kopf wuscheln, aber "
2833 +"die Geister-\nhaende gehen glatt durch den Kopf durch.\n",
2834 gname()+" will Dich wuscheln, aber diese Geisterhaende "
2835 +"gehen\nglatt durch Deinen Kopf durch - Du hast ein seltsames "
2836 +"Gefuehl dabei.\n");
2837 if (member(({"highlander","boing","mieze","freund"}), who->query_real_name())>-1)
2838 switch (who->query_real_name()) {
2839 case "highlander": str1="Federn"; break;
2840 case "freund" :
2841 case "mieze" :
2842 case "boing" : str1="Fell"; break;
2843 }
2844 else if (who->is_class_member(({CL_DRAGON, CL_FISH, CL_REPTILE})))
2845 str1="Schuppen";
2846 else if (who->is_class_member(({CL_BIRD, "elster","greif"})))
2847 str1="Federn";
2848 else if (who->is_class_member(({CL_MAMMAL_LAND,CL_FELINE,"tiger",
2849 "steinbeisser","knuddeleisbaer"})))
2850 str1="Fell";
2851 else str1="Haare";
2852 out_sel="Du verwuschelst@@adverb@@ @@wessen@@ "+str1+".";
2853 out_vic="@@name@@ verwuschelt@@adverb@@ Dein"
2854 +(str1=="Fell" ? " " : "e ")+str1+".";
2855 out_oth="@@name@@ verwuschelt@@adverb@@ @@wessen@@ "+str1+".";
2856 return FeelIt();
2857
2858 /**************** Zitieren ***************/
2859 case "zitier":
2860 HELPCHECK("zitier");
2861 ParseRest(str);
2862 if (!str)
2863 Return("Zitiere was oder wen womit?\n");
2864 sfoo=implode(explode(str, " ")[1..], " ");
2865 if (sfoo=="") sfoo=0;
2866 if (who) {
2867 out_sel="Du zitierst @@wen@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2868 out_vic="@@gname@@ zitiert Dich"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2869 out_oth="@@gname@@ zitiert @@wen@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2870 }
2871 else {
2872 sfoo=explode(str, "/")[0];
2873 out_sel="Du zitierst@@adverb@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2874 out_oth="@@gname@@ zitiert@@adverb@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2875 }
2876 return FeelIt();
2877
2878 /**************** Zittern ***************/
2879 case "zitter":
2880 HELPCHECK("zitter");
2881 ParseRest(str);
2882 if (str && !adverb)
2883 Return("Zittere wie?\n");
2884 out_sel="Du zitterst"+(adverb ? "@@adverb@@." : " vor Angst.");
2885 out_oth="@@gname@@ zittert"+(adverb ? "@@adverb@@." : " vor Angst.");
2886 return FeelIt();
2887
2888 /**************** Schulterzucken ***************/
2889 case "zuck" :
2890 HELPCHECK("zuck");
2891 if (str)
2892 if (sscanf(str,"%s mit den schultern",sfoo))
2893 str=sfoo;
2894 else if (sscanf(str,"%s den schultern",sfoo))
2895 str=sfoo;
2896 else
2897 if (sscanf(str,"%s schultern",sfoo))
2898 str=sfoo;
2899 if (str=="") str=0;
2900 ParseRest(str);
2901 if (str && !adverb)
2902 Return("Zucke wie mit den Schultern?\n");
2903 out_sel="Du zuckst@@adverb@@ mit den Schultern.";
2904 out_oth="@@gname@@ zuckt"+(adverb ? "@@adverb@@" : " ratlos")
2905 +" mit den Schultern.";
2906 return FeelIt();
2907
2908 /**************** Zwinkern ***************/
2909 case "zwinker":
2910 HELPCHECK("zwinker");
2911 if (ghost())
2912 Return("Vergiss es - das ist als Geist viel zu unauffaellig, als dass\n"
2913 +"es andere Leute sehen wuerden.\n");
2914 ParseRest(str);
2915 if (str && !who && !adverb)
2916 Return("Zwinkere wie? Zwinkere wem zu?\n");
2917 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2918 "Du kannst Dir nicht selber zuzwinkern.",
2919 "Wieso reagiert das Ding da nicht auf Dein Zwinkern? Ist es etwa tot?"))
2920 return 1;
2921 out_sel="Du zwinkerst@@ wem@@@@adverb@@"+(who ? " zu." : ".");
2922 if (who) out_vic="@@name@@ zwinkert Dir@@adverb@@ zu.";
2923 out_oth="@@name@@ zwinkert@@ wem@@@@adverb@@"+(who ? " zu." : ".");
2924 return FeelIt();
2925
2926 /**************** Zunge rausstrecken ***************/
2927 case "streck":
2928 HELPCHECK("streck");
2929 GHOSTCHECK("Sorry, Du hast keine Zunge zum Rausstrecken.\n","",0);
2930 if (!str)
2931 Return("Strecke was wie wem wo wann wieso?\n");
2932 str=lower_case(str);
2933 if (sscanf(str, "%s zunge raus", str1)!=1 &&
2934 sscanf(str, "%s die zunge raus", str1)!=1)
2935 Return("Strecke was wie wem wo wann wieso?\n");
2936 ParseRest(str1);
2937 if (for_all) {
2938 out_sel="Du streckst @@alle@@@@adverb@@ die Zunge raus.";
2939 out_vic="@@name@@ streckt @@alle@@@@adverb@@ die Zunge raus.";
2940 return MixedOut(WEM);
2941 }
2942 out_sel="Du streckst@@ wem@@@@adverb@@ die Zunge raus.";
2943 if (who) out_vic="@@name@@ streckt Dir@@adverb@@ die Zunge raus.";
2944 out_oth="@@name@@ streckt@@ wem@@@@adverb@@ die Zunge raus.";
2945 return FeelIt();
2946
2947 // Spezialsachen - Geisterverben und Magierverben
2948
2949 /**************** Rasseln ***************/
2950 case "rassel":
2951 case "rassl":
2952 if (!ghost())
2953 Return("Das ist nicht Dein Fachgebiet - Du bist doch kein Geist!\n");
2954 HELPCHECK("rassel");
2955 ParseRest(str);
2956 if (str && !adverb)
2957 Return("Rassel wie?\n");
2958 out_sel="Du rasselst"+(adverb ? "@@adverb@@" : " fuerchterlich")
2959 +" mit einer rostigen Rasselkette,\n"
2960 +"die Du auf einmal fuer einen Moment in der Hand haeltst.";
2961 out_oth="@@gname@@ holt auf einmal eine rostige Rasselkette aus\n"
2962 +"dem Nichts und faengt an,"+(adverb ? "@@adverb@@" : " fuerchterlich")
2963 +" damit zu rasseln.\n"
2964 +"Danach ist die Kette auf einmal wieder verschwunden.";
2965 return FeelIt();
2966
2967 /**************** Heulen ***************/
2968 case "heul":
2969 if (!ghost())
2970 Return("Lass das mal den Fachleuten (also den Geistern).\n");
2971 HELPCHECK("heul");
2972 ParseRest(str);
2973 if (str && !adverb)
2974 Return("Heule wie?\n");
2975 out_sel="Du heulst"+(adverb ? "@@adverb@@." : " schauerlich.");
2976 out_oth="@@gname@@ heult"+(adverb ? "@@adverb@@." : " schauerlich.");
2977 return FeelIt();
2978
2979 /**************** Treten (tretet) ***************/
2980 case "kick":
2981 if (!IS_WIZARD(this_player()))
2982 return 0;
2983 HELPCHECK("kick");
2984 if (!str) {
2985 GHOSTCHECK("Dein Fuss faehrt durch die beruehmte langvergessene "
2986 +"unsichtbare Schildkroete\nhindurch.\n",
2987 gname()+" will die beruehmte langvergessene unsichtbare\n"
2988 +"Schildkroete treten, aber "+QPP(MALE,WER)
2989 +" Fuss faehrt durch sie hindurch.\n", 0);
2990 out_sel="Du tretest die beruehmte langvergessene unsichtbare "
2991 +"Schildkroete.";
2992 out_oth="@@name@@ tretet die beruehmte langvergessene unsichtbare "
2993 +"Schildkroete.";
2994 }
2995 else {
2996 ParseRest(str);
2997 if (for_all) {
2998 out_sel="Du tretest @@alle@@@@adverb@@.";
2999 out_vic="@@name@@ tretet @@alle@@@@adverb@@.";
3000 return MixedOut(WEN);
3001 }
3002 if (!who && !adverb)
3003 Return("Wenn Du schon was nach kick tippst, dann sag mir wen "
3004 +"oder wie ichdas soll.\n");
3005 if (who && CheckLife(NOT_SELF,NOT_DEAD,
3006 "Du schaffst es nicht, Dir selber in den Hintern zu treten.",
3007 "Tote Sachen tritt man nicht auch noch!"))
3008 return 1;
3009 if (who) {
3010 out_sel="Du tretest@@ wen@@@@adverb@@.";
3011 if (who) out_vic="@@gname@@ tretet Dich@@adverb@@.";
3012 out_oth="@@gname@@ tretet@@ wen@@@@adverb@@.";
3013 }
3014 else {
3015 out_sel="Du tretest die beruehmte langvergessene unsichtbare "
3016 +"Schildkroete@@adverb@@.";
3017 out_oth="@@gname@@ tretet die beruehmte langvergessene unsichtbare "
3018 +"Schildkroete\n@@adverb@@.";
3019 }
3020 }
3021 return FeelIt();
3022
3023 /************* Nassspritzen ***************/
3024 case "splash":
3025 if (!IS_WIZARD(this_player()) &&
3026 !(IS_SEER(this_player()) && present("SEHER\nspritzpistole",this_player())))
3027 return 0;
3028 HELPCHECK("splash");
3029 ParseRest(str);
3030 if (for_all) {
3031 out_sel="Du ziehst Deine Wasserpistole und spritzt @@alle@@@@adverb@@ "
3032 +"patschnass.";
3033 out_vic="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt\n"
3034 +"@@alle@@@@adverb@@ patschnass.";
3035 return MixedOut(WEN);
3036 }
3037 if (!who)
3038 Return("Wen willst Du denn nassmachen?\n");
3039 if (who == this_player()) {
3040 out_sel="Sag mal, kommst Du Dir nicht ein bisschen doof vor?\n"
3041 +"Du ziehst Deine Wasserpistole und spritzt Dich@@adverb@@ selber patschnass.";
3042 out_oth="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
3043 +"sich@@adverb@@ aus unerfindlichen Gruenden selbst patschnass.";
3044 }
3045 else {
3046 out_sel="Du ziehst Deine Wasserpistole und spritzt @@wen@@@@adverb@@ "
3047 +"patschnass.";
3048 out_vic="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
3049 +"Dich@@adverb@@ patschnass.";
3050 out_oth="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
3051 +"@@wen@@@@adverb@@ patschnass.";
3052 }
3053 return FeelIt();
3054
3055 /**************** Anflammen ***************/
3056 case "flam":
3057 if (!IS_WIZARD(this_player()) &&
3058 !(IS_SEER(this_player()) && present("SEHER\nflammenwerfer",this_player())))
3059 return 0;
3060 HELPCHECK("flame");
3061 if (ghost())
3062 Return("Du hast leider grade Deinen Flammenwerfer nicht dabei.\n");
3063 ParseRest(str);
3064 ifoo=!random(7);
3065 if (for_all) {
3066 out_sel="Du holst aus Deinen tiefsten Taschen (oder was weiss denn "
3067 +"ich woher) Deinen\nMorgenGrauen handgearbeiteten Mini-Flammenwerfer "
3068 +"(tm), richtest ihn aus und...\n"
3069 +(ifoo ? "schaust leicht frustriert auf das Streichholz, in das "
3070 +"er sich verwandelt hat."
3071 : "feuerst@@adverb@@ einen riesigen Feuerball auf @@alle@@ ab.\n"
3072 +"Es riecht auf einmal so verbrannt hier...");
3073 out_vic="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
3074 +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn aus und...\n"
3075 +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
3076 +"sich das Ding verwandelt hat."
3077 : "feuert@@adverb@@ einen riesigen Feuerball auf @@alle@@ ab.\n"
3078 +"Dir wird so warm um's Herz...");
3079 return MixedOut(WEN);
3080 }
3081 if (!who)
3082 Return("Wen willst Du denn ankokeln?\n");
3083 out_sel="Du holst aus Deinen tiefsten Taschen (oder was weiss denn "
3084 +"ich woher) Deinen\nMorgenGrauen handgearbeiteten Mini-Flammenwerfer "
3085 +"(tm), richtest ihn aus und...\n"
3086 +(ifoo ? "schaust leicht frustriert auf das Streichholz, in das er "
3087 +"sich verwandelt hat."
3088 : "feuerst@@adverb@@ einen riesigen Feuerball auf @@wen@@ ab.\n"
3089 +"Es riecht auf einmal so verbrannt hier...");
3090 out_vic="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
3091 +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn auf Dich "
3092 +"aus und...\n"
3093 +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
3094 +"sich das Ding\nverwandelt hat."
3095 : "feuert@@adverb@@ einen riesigen Feuerball auf Dich ab.\n"
3096 +"Dir wird so warm ums Herz...");
3097 out_oth="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
3098 +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn "
3099 +"auf@@ wen@@ aus und...\n"
3100 +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
3101 +"sich das Ding\nverwandelt hat."
3102 : "feuert@@adverb@@ einen riesigen Feuerball auf@@ wen@@ ab.\nEs "
3103 +"riecht auf einmal irgendwie verbrannt hier ...");
3104 return FeelIt();
3105
3106 // Special 2: remote verbs
3107
3108 /**************** Remote knuddeln ***************/
3109 case "rknuddel":
3110 case "rknuddl":
3111 HELPCHECK("rknuddel");
3112 if (ParseRemote(str))
3113 return 1;
3114 if (!who)
3115 Return("Knuddle wen?\n");
3116 if (CheckLife(NOT_SELF,0,
3117 "Das bringt doch nix, lass es halt.",
3118 0))
3119 return 1;
3120 if (present(who, environment()))
3121 Return("Wenn jemand neben Dir steht, nimm knuddel.\n");
3122 out_sel="Du knuddelst @@wen@@@@adverb@@ aus der Ferne.";
3123 out_vic="@@gname@@ knuddelt Dich@@adverb@@ aus der Ferne.";
3124 return FeelIt();
3125
3126 /**************** Remote winken ***************/
3127 case "rwink":
3128 HELPCHECK("rwink");
3129 if (ParseRemote(str))
3130 return 1;
3131 if (!who)
3132 Return("Winke wem zu?\n");
3133 if (CheckLife(NOT_SELF,0,
3134 "Sehr witzig. Pah.", 0))
3135 return 1;
3136 if (present(who, environment()))
3137 Return("Wenn jemand neben Dir steht, nimm wink.\n");
3138 out_sel="Du winkst @@wem@@@@adverb@@ aus der Ferne zu.";
3139 out_vic="@@gname@@ winkt Dir@@adverb@@ aus der Ferne zu.";
3140 return FeelIt();
3141
3142 /**************** Verbenliste ***************/
3143 case "verb":
3144 case "verben":
3145 HELPCHECK("verb");
3146 More(SOULHELP->Help());
3147 return 1;
3148
3149 /**************** Adverbienverwaltung ***************/
3150 case "adverb":
3151 case "adverben":
3152 case "adverbien": { /* Das ist die richtige Form, aber wer weiss das? */
3153 string f1,f2;
3154 HELPCHECK("adverb");
3155 if (!str || str=="#" || str=="$")
3156 return zeige_adverbs((str=="#" ? 1 : (str=="$" ? 2 : 0)));
3157 if (sscanf(str, "%s %s", f1,f2)==2) {
3158 f1 = lower_case(f1); // kleingeschrieben speichern, spart Umwandlung
3159 if (f1=="")
3160 Return("Hm, da muss wohl ein Leerzeichen zu viel gewesen sein. Bitte "
3161 +"nochmal,\naber ohne zuviele Leerzeichen.\n");
3162 if (f1=="?") {
3163 f2 = lower_case(f2);
3164 string match;
3165 if ((match=QueryStdAdverbs()[f2] || plr_adverbs[f2]))
3166 write("Die Abkuerzung "+f2+" gehoert zu dem Adverb:\n"+match+LF);
3167 else
3168 write("Diese Abkuerzung ist bisher nicht definiert.\n");
3169 return 1;
3170 }
3171 if (QueryStdAdverbs()[f1])
3172 Return("Die Standardabkuerzungen koennen nicht neu definiert "
3173 +"werden.\n");
3174 if (sizeof(plr_adverbs)>=100)
3175 {
3176 write("Mehr als 100 eigene Adverbien kannst Du nicht definieren.\n");
3177 return 1;
3178 }
3179 if (plr_adverbs[f1]) {
3180 plr_adverbs[f1]=f2;
3181 write("OK, Adverb mit der Abkuerzung \""+f1+"\" auf \""+f2
3182 +"\" gesetzt.\n");
3183 }
3184 else {
3185 if (sizeof(f1) > 6)
3186 Return("Die Abkuerzung ist zu lang, bitte nicht mehr als "
3187 +"6 Zeichen.\n");
3188 plr_adverbs[f1]=f2;
3189 write("OK, neues Adverb \""+f2+"\" mit der Abkuerzung \""+f1+"\".\n");
3190 }
3191 }
3192 else {
3193 str = lower_case(str);
3194 if (QueryStdAdverbs()[str])
3195 Return("Die Standardadverben koennen nicht geloescht werden.\n");
3196 else if (!plr_adverbs[str])
3197 Return("Du hast kein Adverb mit dieser Abkuerzung.\n"
3198 +"Syntax: adverb, um die Adverbien anzuzeigen,\n"
3199 +" adverb #, um nur Deine Adverbien anzuzeigen,\n"
3200 +" adverb $, um nur die Standardadverbien anzuzeigen,\n"
3201 +" adverb ? <Abkuerzung>, um nachzusehen, ob <Abkuerzung> "
3202 +"definiert ist,\n"
3203 +" adverb <Abkuerzung> <Adverb>, um der <Abkuerzung> das "
3204 +"<Adverb>\n"
3205 +" zuzuordnen,\n"
3206 +" adverb <Abkuerzung>, um das Adverb mit der <Abkuerzung> "
3207 +"zu loeschen,\n");
3208 else {
3209 write("OK, Adverb \""+plr_adverbs[str]+"\" geloescht.\n");
3210 plr_adverbs=m_copy_delete(plr_adverbs, str);
3211 }
3212 }
3213 return 1;
3214 }
3215 }
3216 return(0); //fallthrough
3217}
3218