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