blob: eadb7b9098fed6b0c38cc2b9426b82dc062666e6 [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;
Arathornb3051452021-05-13 21:13:03 +0200636 string str1,str2,*taenze,vb;
MG Mud User88f12472016-06-24 23:31:02 +0200637 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,
Bugfix56db22a2021-10-07 11:08:20 +02001688 "Ja, ich weiss, Du magst Dich, aber das musst Du nicht zur Schau "
MG Mud User88f12472016-06-24 23:31:02 +02001689 +"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;
Bugfixd6d9f9c2020-05-06 11:21:10 +02002559 str1=who->name(WEN);
MG Mud User88f12472016-06-24 23:31:02 +02002560 str2=who->QueryPronoun(WEN);
2561 GHOSTCHECK("Du willst "+str1+" umarmen, aber Deine Arme gehen durch "
2562 +str2+" durch.\n",
2563 gname()+" will "+str1+" umarmen, aber "+QPP(MALE,WER,PLURAL)
2564 +" Arme gehen\ndurch "+str2+" hindurch.\n",
2565 gname()+" will Dich umarmen, aber "+QPP(MALE,WER,PLURAL)
2566 +" Arme gehen durch Dich hindurch.\n");
2567 if (for_all) {
2568 out_sel="Du umarmst @@alle@@@@adverb@@.";
2569 out_vic="@@name@@ umarmt @@alle@@@@adverb@@.";
2570 return MixedOut(WEN);
2571 }
2572 if (who==this_player()) {
2573 out_sel="Du legst Deine Arme um Dich und waermst Dich "
2574 +"ein bisschen selber.";
2575 out_oth="@@name@@ legt "+QPP(MALE,WER,PLURAL)
2576 +" Arme um sich und waermt sich ein bisschen selber.";
2577 }
2578 else {
2579 out_sel="Du umarmst@@ wen@@@@adverb@@.";
2580 out_vic="@@name@@ umarmt Dich@@adverb@@.";
2581 out_oth="@@name@@ umarmt@@ wen@@@@adverb@@.";
2582 }
2583 return FeelIt();
2584
2585 /**************** Verfluchen ***************/
2586 case "verfluch":
2587 HELPCHECK("verfluch");
2588 if (!str)
2589 Return("Wen oder was willst Du denn verfluchen?\n");
2590 ParseRest(str);
2591 if (!who) {
2592 out_sel="Du verfluchst "+str+".";
2593 out_oth="@@gname@@ verflucht "+str+".";
2594 }
2595 else {
2596 if (who==this_player())
2597 Return("Sich selber verflucht man besser nicht...\n");
2598 if (!adverb) {
2599 flag=sscanf(str, "%s %s", str1,str2);
2600 out_sel="Du verfluchst@@ wen@@"+(flag==2 ? " "+str2 : "")+".";
2601 out_vic="@@gname@@ verflucht Dich"+(flag==2?" "+str2 : "")+".";
2602 out_oth="@@gname@@ verflucht@@ wen@@"+(flag==2 ? " "+str2 : "")+".";
2603 }
2604 else {
2605 out_sel="Du verfluchst@@ wen@@@@adverb@@.";
2606 out_vic="@@gname@@ verflucht Dich@@adverb@@.";
2607 out_oth="@@gname@@ verflucht@@ wen@@@@adverb@@.";
2608 }
2609 }
2610 return FeelIt();
2611
2612 /**************** Verneigen / Verbeugen ***************/
2613 case "verneig":
2614 case "verbeug":
2615 HELPCHECK("verneig");
2616 GHOSTCHECK("Du verneigst Dich ein bisschen heftig - Dein Kopf taucht "
2617 +"kurz in den Boden.\n",
2618 gname()+" verneigt sich. Ein bisschen heftig - "+QPP(MALE,WER)
2619 +" Kopf\ntaucht kurz in den Boden ein.\n", 0);
2620 if ((!str) || (str == "dich")) {
2621 out_sel="Du verneigst Dich vor den Anwesenden.";
2622 out_oth="@@name@@ verneigt sich anmutig.";
2623 }
2624 else {
2625 ParseRest(str);
2626 if (for_all) {
2627 out_sel="Du verneigst Dich@@adverb@@ vor @@alle@@.";
2628 out_vic="@@name@@ verneigt sich@@adverb@@ vor @@alle@@.";
2629 return MixedOut(WEM);
2630 }
2631 if (!who && !adverb)
2632 Return("Verneige dich irgendwie oder vor jemandem.\n");
2633 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2634 "Wie willst Du das denn schaffen?",
2635 "Vor Sachen wird hier nicht verneigt, klar?\n"))
2636 return 1;
2637 out_sel="Du verneigst Dich@@adverb@@"+(who ? " vor" : "")+"@@ wem@@.";
2638 if (who ) out_vic="@@name@@ verneigt sich@@adverb@@ vor Dir.";
2639 out_oth="@@name@@ verneigt sich@@adverb@@"+(who ? " vor" : "")
2640 +"@@ wem@@.";
2641 }
2642 return FeelIt();
2643
2644 /**************** Verneinen ***************/
2645 case "nein":
2646 case "noe":
2647 HELPCHECK("nein");
2648 GHOSTCHECK("Du schuettelst Deinen Kopf so heftig, dass er kurz "
2649 +"davonschwebt.\n",
2650 gname()+" schuettelt heftig den Kopf.\nSo heftig, dass dieser "
2651 +"kurz davonschwebt und wieder eingefangen werden muss.\n", 0);
2652 ParseRest(str);
2653 if (str && !adverb)
2654 Return("Schuettle wie den Kopf?\n");
2655 out_sel="Du schuettelst@@adverb@@ den Kopf.";
2656 out_oth="@@name@@ schuettelt@@adverb@@ den Kopf.";
2657 return FeelIt();
2658
2659 /**************** Wackeln ***************/
2660 case "wackel":
2661 case "wackl":
2662 HELPCHECK("wackel");
2663 if (ghost())
2664 Return("Da gibt es nichts mehr, womit Du wackeln kannst.\n");
2665 if (str)
2666 if (strstr(str, "mit ")==0)
2667 sscanf(str, "mit %s", sfoo);
2668 else if (strstr(str,"mit ")>0) {
2669 sscanf(str, "%s mit %s", sfoo, sfoo);
2670 flag=1;
2671 }
2672 if (sfoo=="") sfoo=0;
2673 ParseRest(str, (sfoo ? (flag ? " mit " : "mit ")+sfoo : 0));
2674 if (str && !adverb && !sfoo)
2675 Return("Wackle wie oder womit?\n");
2676 out_sel="Du wackelst@@adverb@@ mit "+(sfoo ? sfoo+"." : "dem Hintern.");
2677 out_oth="@@name@@ wackelt@@adverb@@ mit "
2678 +(sfoo ? sfoo+"." : QPP(MALE,WEM)+" Hintern.");
2679 return FeelIt();
2680
2681 /**************** Waelzen ***************/
2682 case "waelz":
2683 HELPCHECK("waelz");
2684 ParseRest(str);
2685 if (str && !adverb)
2686 Return("Waelze Dich wie auf dem Boden?\n");
2687 out_sel="Du waelzt Dich"+(adverb ? "@@adverb@@" : " vor Lachen")
2688 +" auf dem Boden.";
2689 out_oth="@@gname@@ waelzt sich"+(adverb ? "@@adverb@@" : " vor Lachen")
2690 +(ghost() ? " im" : " auf dem")+" Boden.";
2691 return FeelIt();
2692
2693 /**************** Warten ***************/
2694 case "wart":
2695 HELPCHECK("wart");
2696 ParseRest(str);
2697 if (!str) {
2698 out_sel="Du tippst mit dem Fuss auf den Boden.";
2699 out_oth="@@gname@@ tippt mit dem Fuss auf den Boden.";
2700 } else if (!who && adverb) {
2701 out_sel="Du wartest@@adverb@@.";
2702 out_oth="@@gname@@ wartet@@adverb@@.";
2703 } else {
2704 out_sel="Du wartest@@adverb@@ auf "+(who ? "@@wen@@." : str+".");
2705 if (who) out_vic="@@gname@@ wartet@@adverb@@ auf Dich.";
2706 out_oth="@@gname@@ wartet@@adverb@@ auf "+(who ? "@@wen@@." : str+".");
2707 }
2708 return FeelIt();
2709
2710#ifdef WECKE
2711 /**************** Wecken ***************/
2712 case "weck":
2713 HELPCHECK("weck");
2714 if (ParseRemote(str))
2715 return 1;
2716// ParseRest(str);
2717 if (!who)
2718 Return("Wen willst Du wecken?\n");
2719 if (sscanf(str, "%s %s", sfoo, sfoo)==2)
2720 flag=1;
2721 out_sel="Dein Wecker klingelt bei @@wem@@@@adverb@@"
2722 +(adverb ? "." : (flag ? ": "+sfoo : "."));
2723 out_vic=" "+name(WESSEN)+" Wecker klingelt bei Dir@@adverb@@"
2724 +(adverb ? "." : (flag ? ": "+sfoo : "."));
2725 out_oth="@@gname@@ wirft "+QPP(MALE, WEN)
2726 +" Wecker@@adverb@@ nach @@wem@@.";
2727 if (!who->QueryProp(P_VISUALBELL))
2728 out_vic[0]=7; // chr(7)==BEL
2729 else out_vic=out_vic[1..];
2730 return FeelIt();
2731#endif
2732
2733 /**************** Weinen ***************/
2734 case "wein":
2735 HELPCHECK("wein");
2736 GHOSTCHECK("Es reicht leider nur fuer ein paar winzige Nebelwoelkchen, "
2737 +"nicht fuer Traenen.\n",
2738 gname()+" verzieht das Gesicht und ein paar winzige Nebel-\n"
2739 +"woelkchen entfernen sich von seinen \"Augen\".\n", 0);
2740 if (!str) {
2741 out_sel="Waaaaah! Du weinst bitterlich.";
2742 out_oth="@@name@@ bricht in Traenen aus und weint bitterlich.";
2743 }
2744 else {
2745 ParseRest(str);
2746 if (!who && !adverb)
2747 Return("Weine Dich irgendwie bei irgendwem aus, aber nicht so.\n");
2748 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2749 "Bei sich selber kann man sich so schlecht ausweinen.",
2750 "Bei wem willst Du Dich ausweinen???"))
2751 return 1;
2752 if (who) {
2753 out_sel="Du weinst Dich@@adverb@@ bei@@ wem@@ aus.";
2754 out_vic="@@name@@ weint sich@@adverb@@ bei Dir aus.";
2755 out_oth="@@name@@ weint sich@@adverb@@ bei@@ wem@@ aus.";
2756 }
2757 else {
2758 out_sel="Du brichst in Traenen aus und weinst@@adverb@@.";
2759 out_oth="@@name@@ bricht in Traenen aus und weint@@adverb@@.";
2760 }
2761 }
2762 return FeelIt();
2763
2764 /**************** Winken ***************/
2765 case "wink":
2766 HELPCHECK("wink");
2767 ParseRest(str);
2768 if (for_all) {
2769 out_sel="Du winkst @@alle@@@@adverb@@ zu.";
2770 out_vic="@@name@@ winkt @@alle@@@@adverb@@ zu.";
2771 return MixedOut(WEM);
2772 }
2773 if (!who && !adverb && str)
2774 Return("Vielleicht solltest Du auch sagen, wem oder wie Du "
2775 +"(zu)winken willst.\n");
2776 if (who && CheckLife(NOT_SELF, NOT_DEAD,
2777 "Wink Dir nicht selber zu.",
2778 "Du musst schon einem Lebewesen zuwinken."))
2779 return 1;
2780 out_sel="Du winkst@@ wem@@@@adverb@@"+(who ? " zu" : "")+".";
2781 if (who) out_vic="@@gname@@ winkt Dir@@adverb@@ zu.";
2782 out_oth="@@gname@@ winkt@@ wem@@@@adverb@@"+(who ? " zu" : "")+".";
2783 return FeelIt();
2784
2785 /**************** Wuergen ***************/
2786 case "wuerg":
2787 HELPCHECK("wuerg");
2788 ParseRest(str);
2789 if (str && !who && !adverb)
2790 Return("Wuerge wen oder wie?\n");
2791 if (!who) {
2792 out_sel="Du faengst@@adverb@@ an zu wuergen.";
2793 out_oth="@@gname@@ faengt@@adverb@@ an zu wuergen.";
2794 } else if (CheckLife(NOT_SELF, NOT_DEAD,
2795 "Du wuergst ein bischen an Dir rum. Dir wird schnell langweilig.",
2796 "Wuerg lieber ein Lebewesen.")) {
2797 return 1;
2798 } else {
2799 out_sel="Du springst @@wen@@ an und faengst an, "+who->QueryPronoun(WEN)
2800 +"@@adverb@@ zu wuergen.";
2801 out_vic="@@gname@@ springt Dich auf einmal an und wuergt Dich@@adverb@@.";
2802 out_oth="@@gname@@ springt auf einmal @@wen@@ an und wuergt "
2803 +who->QueryPronoun(WEN)+"@@adverb@@.";
2804 }
2805 return FeelIt();
2806
2807 /**************** Wundern ***************/
2808 case "wunder":
2809 HELPCHECK("wunder");
2810 ParseRest(str);
2811 if (str && !who && !adverb)
2812 Return("Wie oder ueber wen willst Du Dich wundern?\n");
2813 out_sel="Du wunderst Dich@@adverb@@"+(who ? " ueber @@wen@@." : ".");
2814 if (who) out_vic="@@gname@@ wundert sich@@adverb@@ ueber Dich.";
2815 out_oth="@@gname@@ wundert sich@@adverb@@"+(who ? " ueber @@wen@@." : ".");
2816 return FeelIt();
2817
2818 /**************** Wuscheln ***************/
2819 case "wuschel":
2820 case "wuschl":
2821 HELPCHECK("wuschel");
2822 ParseRest(str);
2823 if (!who)
2824 Return("Wen willst Du denn wuscheln?\n");
2825 if (CheckLife(0,NOT_DEAD,
2826 "", "Hmm, sehr tot. Ne, lieber nicht."))
2827 return 1;
2828 if (who->QueryProp(P_FROG)) {
2829 write("Du verwuschelst... aeh... hm. Ein Frosch hat wohl nix "
2830 +"zum Wuscheln.\n");
2831 return 1;
2832 };
2833 GHOSTCHECK("Du willst "+who->name(WEN)+" wuscheln - aber Deine "
2834 +"Haende gehen\nglatt durch den Kopf durch.\n",
2835 gname()+" will "+who->name(WEN)+" den Kopf wuscheln, aber "
2836 +"die Geister-\nhaende gehen glatt durch den Kopf durch.\n",
2837 gname()+" will Dich wuscheln, aber diese Geisterhaende "
2838 +"gehen\nglatt durch Deinen Kopf durch - Du hast ein seltsames "
2839 +"Gefuehl dabei.\n");
2840 if (member(({"highlander","boing","mieze","freund"}), who->query_real_name())>-1)
2841 switch (who->query_real_name()) {
2842 case "highlander": str1="Federn"; break;
2843 case "freund" :
2844 case "mieze" :
2845 case "boing" : str1="Fell"; break;
2846 }
2847 else if (who->is_class_member(({CL_DRAGON, CL_FISH, CL_REPTILE})))
2848 str1="Schuppen";
2849 else if (who->is_class_member(({CL_BIRD, "elster","greif"})))
2850 str1="Federn";
2851 else if (who->is_class_member(({CL_MAMMAL_LAND,CL_FELINE,"tiger",
2852 "steinbeisser","knuddeleisbaer"})))
2853 str1="Fell";
heull00185c4dd32017-12-11 18:14:54 +01002854 else if(who->is_class_member(({CL_PLANT})))
2855 str1="Blaetter";
MG Mud User88f12472016-06-24 23:31:02 +02002856 else str1="Haare";
2857 out_sel="Du verwuschelst@@adverb@@ @@wessen@@ "+str1+".";
2858 out_vic="@@name@@ verwuschelt@@adverb@@ Dein"
2859 +(str1=="Fell" ? " " : "e ")+str1+".";
2860 out_oth="@@name@@ verwuschelt@@adverb@@ @@wessen@@ "+str1+".";
2861 return FeelIt();
2862
2863 /**************** Zitieren ***************/
2864 case "zitier":
2865 HELPCHECK("zitier");
2866 ParseRest(str);
2867 if (!str)
2868 Return("Zitiere was oder wen womit?\n");
2869 sfoo=implode(explode(str, " ")[1..], " ");
2870 if (sfoo=="") sfoo=0;
2871 if (who) {
2872 out_sel="Du zitierst @@wen@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2873 out_vic="@@gname@@ zitiert Dich"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2874 out_oth="@@gname@@ zitiert @@wen@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2875 }
2876 else {
2877 sfoo=explode(str, "/")[0];
2878 out_sel="Du zitierst@@adverb@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2879 out_oth="@@gname@@ zitiert@@adverb@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
2880 }
2881 return FeelIt();
2882
2883 /**************** Zittern ***************/
2884 case "zitter":
2885 HELPCHECK("zitter");
2886 ParseRest(str);
2887 if (str && !adverb)
2888 Return("Zittere wie?\n");
2889 out_sel="Du zitterst"+(adverb ? "@@adverb@@." : " vor Angst.");
2890 out_oth="@@gname@@ zittert"+(adverb ? "@@adverb@@." : " vor Angst.");
2891 return FeelIt();
2892
2893 /**************** Schulterzucken ***************/
2894 case "zuck" :
2895 HELPCHECK("zuck");
2896 if (str)
2897 if (sscanf(str,"%s mit den schultern",sfoo))
2898 str=sfoo;
2899 else if (sscanf(str,"%s den schultern",sfoo))
2900 str=sfoo;
2901 else
2902 if (sscanf(str,"%s schultern",sfoo))
2903 str=sfoo;
2904 if (str=="") str=0;
2905 ParseRest(str);
2906 if (str && !adverb)
2907 Return("Zucke wie mit den Schultern?\n");
2908 out_sel="Du zuckst@@adverb@@ mit den Schultern.";
2909 out_oth="@@gname@@ zuckt"+(adverb ? "@@adverb@@" : " ratlos")
2910 +" mit den Schultern.";
2911 return FeelIt();
2912
2913 /**************** Zwinkern ***************/
2914 case "zwinker":
2915 HELPCHECK("zwinker");
2916 if (ghost())
2917 Return("Vergiss es - das ist als Geist viel zu unauffaellig, als dass\n"
2918 +"es andere Leute sehen wuerden.\n");
2919 ParseRest(str);
2920 if (str && !who && !adverb)
2921 Return("Zwinkere wie? Zwinkere wem zu?\n");
2922 if (who && CheckLife(NOT_SELF,NOT_DEAD,
2923 "Du kannst Dir nicht selber zuzwinkern.",
2924 "Wieso reagiert das Ding da nicht auf Dein Zwinkern? Ist es etwa tot?"))
2925 return 1;
2926 out_sel="Du zwinkerst@@ wem@@@@adverb@@"+(who ? " zu." : ".");
2927 if (who) out_vic="@@name@@ zwinkert Dir@@adverb@@ zu.";
2928 out_oth="@@name@@ zwinkert@@ wem@@@@adverb@@"+(who ? " zu." : ".");
2929 return FeelIt();
2930
2931 /**************** Zunge rausstrecken ***************/
2932 case "streck":
2933 HELPCHECK("streck");
2934 GHOSTCHECK("Sorry, Du hast keine Zunge zum Rausstrecken.\n","",0);
2935 if (!str)
2936 Return("Strecke was wie wem wo wann wieso?\n");
2937 str=lower_case(str);
2938 if (sscanf(str, "%s zunge raus", str1)!=1 &&
2939 sscanf(str, "%s die zunge raus", str1)!=1)
2940 Return("Strecke was wie wem wo wann wieso?\n");
2941 ParseRest(str1);
2942 if (for_all) {
2943 out_sel="Du streckst @@alle@@@@adverb@@ die Zunge raus.";
2944 out_vic="@@name@@ streckt @@alle@@@@adverb@@ die Zunge raus.";
2945 return MixedOut(WEM);
2946 }
2947 out_sel="Du streckst@@ wem@@@@adverb@@ die Zunge raus.";
2948 if (who) out_vic="@@name@@ streckt Dir@@adverb@@ die Zunge raus.";
2949 out_oth="@@name@@ streckt@@ wem@@@@adverb@@ die Zunge raus.";
2950 return FeelIt();
2951
2952 // Spezialsachen - Geisterverben und Magierverben
2953
2954 /**************** Rasseln ***************/
2955 case "rassel":
2956 case "rassl":
2957 if (!ghost())
2958 Return("Das ist nicht Dein Fachgebiet - Du bist doch kein Geist!\n");
2959 HELPCHECK("rassel");
2960 ParseRest(str);
2961 if (str && !adverb)
2962 Return("Rassel wie?\n");
2963 out_sel="Du rasselst"+(adverb ? "@@adverb@@" : " fuerchterlich")
2964 +" mit einer rostigen Rasselkette,\n"
2965 +"die Du auf einmal fuer einen Moment in der Hand haeltst.";
2966 out_oth="@@gname@@ holt auf einmal eine rostige Rasselkette aus\n"
2967 +"dem Nichts und faengt an,"+(adverb ? "@@adverb@@" : " fuerchterlich")
2968 +" damit zu rasseln.\n"
2969 +"Danach ist die Kette auf einmal wieder verschwunden.";
2970 return FeelIt();
2971
2972 /**************** Heulen ***************/
2973 case "heul":
2974 if (!ghost())
2975 Return("Lass das mal den Fachleuten (also den Geistern).\n");
2976 HELPCHECK("heul");
2977 ParseRest(str);
2978 if (str && !adverb)
2979 Return("Heule wie?\n");
2980 out_sel="Du heulst"+(adverb ? "@@adverb@@." : " schauerlich.");
2981 out_oth="@@gname@@ heult"+(adverb ? "@@adverb@@." : " schauerlich.");
2982 return FeelIt();
2983
2984 /**************** Treten (tretet) ***************/
2985 case "kick":
2986 if (!IS_WIZARD(this_player()))
2987 return 0;
2988 HELPCHECK("kick");
2989 if (!str) {
2990 GHOSTCHECK("Dein Fuss faehrt durch die beruehmte langvergessene "
2991 +"unsichtbare Schildkroete\nhindurch.\n",
2992 gname()+" will die beruehmte langvergessene unsichtbare\n"
2993 +"Schildkroete treten, aber "+QPP(MALE,WER)
2994 +" Fuss faehrt durch sie hindurch.\n", 0);
2995 out_sel="Du tretest die beruehmte langvergessene unsichtbare "
2996 +"Schildkroete.";
2997 out_oth="@@name@@ tretet die beruehmte langvergessene unsichtbare "
2998 +"Schildkroete.";
2999 }
3000 else {
3001 ParseRest(str);
3002 if (for_all) {
3003 out_sel="Du tretest @@alle@@@@adverb@@.";
3004 out_vic="@@name@@ tretet @@alle@@@@adverb@@.";
3005 return MixedOut(WEN);
3006 }
3007 if (!who && !adverb)
3008 Return("Wenn Du schon was nach kick tippst, dann sag mir wen "
3009 +"oder wie ichdas soll.\n");
3010 if (who && CheckLife(NOT_SELF,NOT_DEAD,
3011 "Du schaffst es nicht, Dir selber in den Hintern zu treten.",
3012 "Tote Sachen tritt man nicht auch noch!"))
3013 return 1;
3014 if (who) {
3015 out_sel="Du tretest@@ wen@@@@adverb@@.";
3016 if (who) out_vic="@@gname@@ tretet Dich@@adverb@@.";
3017 out_oth="@@gname@@ tretet@@ wen@@@@adverb@@.";
3018 }
3019 else {
3020 out_sel="Du tretest die beruehmte langvergessene unsichtbare "
3021 +"Schildkroete@@adverb@@.";
3022 out_oth="@@gname@@ tretet die beruehmte langvergessene unsichtbare "
3023 +"Schildkroete\n@@adverb@@.";
3024 }
3025 }
3026 return FeelIt();
3027
3028 /************* Nassspritzen ***************/
3029 case "splash":
3030 if (!IS_WIZARD(this_player()) &&
3031 !(IS_SEER(this_player()) && present("SEHER\nspritzpistole",this_player())))
3032 return 0;
3033 HELPCHECK("splash");
3034 ParseRest(str);
3035 if (for_all) {
3036 out_sel="Du ziehst Deine Wasserpistole und spritzt @@alle@@@@adverb@@ "
3037 +"patschnass.";
3038 out_vic="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt\n"
3039 +"@@alle@@@@adverb@@ patschnass.";
3040 return MixedOut(WEN);
3041 }
3042 if (!who)
3043 Return("Wen willst Du denn nassmachen?\n");
3044 if (who == this_player()) {
3045 out_sel="Sag mal, kommst Du Dir nicht ein bisschen doof vor?\n"
3046 +"Du ziehst Deine Wasserpistole und spritzt Dich@@adverb@@ selber patschnass.";
3047 out_oth="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
3048 +"sich@@adverb@@ aus unerfindlichen Gruenden selbst patschnass.";
3049 }
3050 else {
3051 out_sel="Du ziehst Deine Wasserpistole und spritzt @@wen@@@@adverb@@ "
3052 +"patschnass.";
3053 out_vic="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
3054 +"Dich@@adverb@@ patschnass.";
3055 out_oth="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
3056 +"@@wen@@@@adverb@@ patschnass.";
3057 }
3058 return FeelIt();
3059
3060 /**************** Anflammen ***************/
3061 case "flam":
3062 if (!IS_WIZARD(this_player()) &&
3063 !(IS_SEER(this_player()) && present("SEHER\nflammenwerfer",this_player())))
3064 return 0;
3065 HELPCHECK("flame");
3066 if (ghost())
3067 Return("Du hast leider grade Deinen Flammenwerfer nicht dabei.\n");
3068 ParseRest(str);
3069 ifoo=!random(7);
3070 if (for_all) {
3071 out_sel="Du holst aus Deinen tiefsten Taschen (oder was weiss denn "
3072 +"ich woher) Deinen\nMorgenGrauen handgearbeiteten Mini-Flammenwerfer "
3073 +"(tm), richtest ihn aus und...\n"
3074 +(ifoo ? "schaust leicht frustriert auf das Streichholz, in das "
3075 +"er sich verwandelt hat."
3076 : "feuerst@@adverb@@ einen riesigen Feuerball auf @@alle@@ ab.\n"
3077 +"Es riecht auf einmal so verbrannt hier...");
3078 out_vic="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
3079 +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn aus und...\n"
3080 +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
3081 +"sich das Ding verwandelt hat."
3082 : "feuert@@adverb@@ einen riesigen Feuerball auf @@alle@@ ab.\n"
3083 +"Dir wird so warm um's Herz...");
3084 return MixedOut(WEN);
3085 }
3086 if (!who)
3087 Return("Wen willst Du denn ankokeln?\n");
3088 out_sel="Du holst aus Deinen tiefsten Taschen (oder was weiss denn "
3089 +"ich woher) Deinen\nMorgenGrauen handgearbeiteten Mini-Flammenwerfer "
3090 +"(tm), richtest ihn aus und...\n"
3091 +(ifoo ? "schaust leicht frustriert auf das Streichholz, in das er "
3092 +"sich verwandelt hat."
3093 : "feuerst@@adverb@@ einen riesigen Feuerball auf @@wen@@ ab.\n"
3094 +"Es riecht auf einmal so verbrannt hier...");
3095 out_vic="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
3096 +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn auf Dich "
3097 +"aus und...\n"
3098 +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
3099 +"sich das Ding\nverwandelt hat."
3100 : "feuert@@adverb@@ einen riesigen Feuerball auf Dich ab.\n"
3101 +"Dir wird so warm ums Herz...");
3102 out_oth="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
3103 +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn "
3104 +"auf@@ wen@@ aus und...\n"
3105 +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
3106 +"sich das Ding\nverwandelt hat."
3107 : "feuert@@adverb@@ einen riesigen Feuerball auf@@ wen@@ ab.\nEs "
3108 +"riecht auf einmal irgendwie verbrannt hier ...");
3109 return FeelIt();
3110
3111 // Special 2: remote verbs
3112
3113 /**************** Remote knuddeln ***************/
3114 case "rknuddel":
3115 case "rknuddl":
3116 HELPCHECK("rknuddel");
3117 if (ParseRemote(str))
3118 return 1;
3119 if (!who)
3120 Return("Knuddle wen?\n");
3121 if (CheckLife(NOT_SELF,0,
3122 "Das bringt doch nix, lass es halt.",
3123 0))
3124 return 1;
3125 if (present(who, environment()))
3126 Return("Wenn jemand neben Dir steht, nimm knuddel.\n");
3127 out_sel="Du knuddelst @@wen@@@@adverb@@ aus der Ferne.";
3128 out_vic="@@gname@@ knuddelt Dich@@adverb@@ aus der Ferne.";
3129 return FeelIt();
3130
3131 /**************** Remote winken ***************/
3132 case "rwink":
3133 HELPCHECK("rwink");
3134 if (ParseRemote(str))
3135 return 1;
3136 if (!who)
3137 Return("Winke wem zu?\n");
3138 if (CheckLife(NOT_SELF,0,
3139 "Sehr witzig. Pah.", 0))
3140 return 1;
3141 if (present(who, environment()))
3142 Return("Wenn jemand neben Dir steht, nimm wink.\n");
3143 out_sel="Du winkst @@wem@@@@adverb@@ aus der Ferne zu.";
3144 out_vic="@@gname@@ winkt Dir@@adverb@@ aus der Ferne zu.";
3145 return FeelIt();
3146
3147 /**************** Verbenliste ***************/
3148 case "verb":
3149 case "verben":
3150 HELPCHECK("verb");
3151 More(SOULHELP->Help());
3152 return 1;
3153
3154 /**************** Adverbienverwaltung ***************/
3155 case "adverb":
3156 case "adverben":
3157 case "adverbien": { /* Das ist die richtige Form, aber wer weiss das? */
3158 string f1,f2;
3159 HELPCHECK("adverb");
3160 if (!str || str=="#" || str=="$")
3161 return zeige_adverbs((str=="#" ? 1 : (str=="$" ? 2 : 0)));
3162 if (sscanf(str, "%s %s", f1,f2)==2) {
3163 f1 = lower_case(f1); // kleingeschrieben speichern, spart Umwandlung
3164 if (f1=="")
3165 Return("Hm, da muss wohl ein Leerzeichen zu viel gewesen sein. Bitte "
3166 +"nochmal,\naber ohne zuviele Leerzeichen.\n");
3167 if (f1=="?") {
3168 f2 = lower_case(f2);
3169 string match;
3170 if ((match=QueryStdAdverbs()[f2] || plr_adverbs[f2]))
3171 write("Die Abkuerzung "+f2+" gehoert zu dem Adverb:\n"+match+LF);
3172 else
3173 write("Diese Abkuerzung ist bisher nicht definiert.\n");
3174 return 1;
3175 }
3176 if (QueryStdAdverbs()[f1])
3177 Return("Die Standardabkuerzungen koennen nicht neu definiert "
3178 +"werden.\n");
3179 if (sizeof(plr_adverbs)>=100)
3180 {
3181 write("Mehr als 100 eigene Adverbien kannst Du nicht definieren.\n");
3182 return 1;
3183 }
3184 if (plr_adverbs[f1]) {
3185 plr_adverbs[f1]=f2;
3186 write("OK, Adverb mit der Abkuerzung \""+f1+"\" auf \""+f2
3187 +"\" gesetzt.\n");
3188 }
3189 else {
3190 if (sizeof(f1) > 6)
3191 Return("Die Abkuerzung ist zu lang, bitte nicht mehr als "
3192 +"6 Zeichen.\n");
3193 plr_adverbs[f1]=f2;
3194 write("OK, neues Adverb \""+f2+"\" mit der Abkuerzung \""+f1+"\".\n");
3195 }
3196 }
3197 else {
3198 str = lower_case(str);
3199 if (QueryStdAdverbs()[str])
3200 Return("Die Standardadverben koennen nicht geloescht werden.\n");
3201 else if (!plr_adverbs[str])
3202 Return("Du hast kein Adverb mit dieser Abkuerzung.\n"
3203 +"Syntax: adverb, um die Adverbien anzuzeigen,\n"
3204 +" adverb #, um nur Deine Adverbien anzuzeigen,\n"
3205 +" adverb $, um nur die Standardadverbien anzuzeigen,\n"
3206 +" adverb ? <Abkuerzung>, um nachzusehen, ob <Abkuerzung> "
3207 +"definiert ist,\n"
3208 +" adverb <Abkuerzung> <Adverb>, um der <Abkuerzung> das "
3209 +"<Adverb>\n"
3210 +" zuzuordnen,\n"
3211 +" adverb <Abkuerzung>, um das Adverb mit der <Abkuerzung> "
3212 +"zu loeschen,\n");
3213 else {
3214 write("OK, Adverb \""+plr_adverbs[str]+"\" geloescht.\n");
3215 plr_adverbs=m_copy_delete(plr_adverbs, str);
3216 }
3217 }
3218 return 1;
3219 }
3220 }
3221 return(0); //fallthrough
3222}
3223