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