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