Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/std/player/soul.c b/std/player/soul.c
new file mode 100644
index 0000000..438f2c6
--- /dev/null
+++ b/std/player/soul.c
@@ -0,0 +1,3218 @@
+// MorgenGrauen MUDlib
+//
+// player/soul.c -- Die Seele des Spielers
+//
+// $Id: soul.c 9527 2016-03-12 11:37:54Z Arathorn $
+
+// Letzte Aenderung vom 08.09.95  Wargon
+
+// Set TabStop to 2 characters
+
+/* Version 1.41 MG, September 95
+   - Bei "frage" und "antworte" Test auf P_PERM_STRING fuer Sprachflueche.
+   - bugfix bei "schweige" (nahm keine Adverbien an)
+   */
+
+/* Version 1.4 MG, August 95
+   - Hilfefunktion eingebaut, siehe auch soulhelp.c
+   - einige kleinere Aenderungen erst jetzt durch eine neue Version gewuerdigt
+   - neue Verben, wie eigentlich fast immer :>
+   - typos und bugs gefixed (und neue eingebaut...)
+   - Funktion zur Abfrage von Adverbien von aussen eingebaut (Hallo, Anthea :>)
+   - so schlimm kann das doch nicht sein, einen TabStop von 2 zu nehmen, fuer
+     dieses eine file, alles andere zerlegt meine Formatierung immer so :<
+   - koenntet ihr bitte mal oben das "Letzte Aenderung" aendern, wenn ihr
+     irgendwo was aendert?
+   */
+
+/* Version 1.35 MG, Dezember 94
+   - Verben
+   - Aenderung des Parsings der quoted adverbs
+   - rknuddel ignorieren wird vom normalen ignore uebernommen
+   */
+
+/* Version 1.32 MG, Juli 94
+   - einige Verben
+   - ignorieren des rknuddel
+   */
+
+/* Version 1.31 MG, Mai 94
+   - einige Verben
+   */
+
+/* Version 1.3 MG, Mai 94
+   - quoted adverbs GEHEN jetzt
+   - ParseRest / ParseRemote neu geschrieben
+   */
+
+/* Version 1.21 MG, April 94
+   - quoted adverbs
+   */
+
+/* Danke an Angus fuer den Text von "liebe" */
+
+/* Version 1.2 MG, Januar 94
+   - Umstellung der Feelings von vielen kleinen Funktionen auf eine grosse,
+     damit der Funktionsoverhead wegfaellt.
+   - neue Ausgabe der Adverbien, mit more und nur noch eines pro Zeile
+   - mal wieder neue Verben.
+   - und das neue Standardadverb "jofi" :)
+   */
+
+/* Version 1.1 MG, November 93
+   Aenderungen:
+   - Ich habe "alle(n)" eingebaut. Die Verwaltung steht, man kann jetzt
+     Verben die Moeglichkeit "alle" geben (Bsp. "wink alle").
+   - inzwischen wieder einige Verben mehr, aber muss ich das noch
+     erwaehnen?
+   - (HASS) Rumata hat mein schoenes System fuer die Ausgabestrings
+     verkompliziert. Statt &a steht da jetzt z.B. @@adverb@@, was in
+     einer weiteren unnoetigen Funktion resultierte. Naja.
+   Highlander ryn Tahar
+   */
+
+/*
+   Ha! Ich nehme jetzt die erste ganze Versionsnummer fuer mich in Anspruch :)
+   So, heute ist's geschafft (Ich auch...). Ich bin fertig - ich mach nur
+   noch neue Verben rein, wenn Ideen kommen.
+   Gegeben an Dienstag, dem 22. Juni 1993 im heimatlichen Horst.
+   Highlander ryn Tahar.
+   P.S.: Kopiere sich das Ding, wer will - unter folgenden Bedingungen:
+   - Den Goettern von MorgenGrauen und
+   - Highlander@TAPPMud     Bescheid sagen und ausserdem
+   *seufz* nehmt Highlander hier in MorgenGrauen!! -HrT
+   Ha! Ihr koennt wieder TAPPMud nehmen :>  Aber sagt's ruhig in MG. -HrT
+   - entweder den ganzen Schwall hier drinlassen oder mich mit einem
+   neuen Text erwaehnen.
+   Das Ganze unter der Voraussetzung, dass ueberhaupt mal jemand eine deutsche
+   Seele braucht und sie nicht selber schreiben will :-) (ersparts euch lieber)
+   Highlander ryn Tahar.
+
+   **Arbeit:
+   Einbau von Adverbien, andere Reaktionen bei Geistern als "Wie bitte?",
+   einige neue Verben, einige alte Verben rausgeschmissen.
+   Weil es Probleme mit dem autoloading der playeradverbs gab, wurde
+   ausserdem die soul vom Objekt zum inheritfile fuer die playershell.
+
+   **Ideen  zum Weitermachen:
+   - (verb) alle, z.B. tritt alle   -- Moeglichkeit eingebaut
+   - Geisterverben mit Adverb
+
+   Version 1.0 fuer MorgenGrauen    Highlander Mai/Juni 93
+   */
+
+
+/* Hier ist sie nun, die DEUTSCHE version der soul,
+   viel Spass damit.
+   Poietix  Mai 1992
+   Vers.: 0.4 fuer JRMud
+   P.S. bitte meckert nicht dran rum , sondern verbessert und
+   erweitert sie.
+
+   Olpp November 1992
+   Vers.: 0.5 fuer MorgenGrauen
+
+   He, Olpp, schreibt man nicht die neueste Aenderung UEBER die alten?
+   *grins*, Highlander
+   */
+#pragma strong_types
+#pragma save_types
+//#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+#define SOULHELP "/std/player/soulhelp"
+#define LF "\n"
+#define NOT_SELF 1
+#define NOT_DEAD 1
+
+#define QPP QueryPossPronoun
+#define RETURN return _notify_fail
+#define Return return 0||_notify_fail  // netter Trick, muss ich mir merken -HrT
+#define GHOSTCHECK(sel,oth,vic) if (ghost()) {  write(sel); say(oth,who||ME);\
+                                  if (vic) who->Message(vic); return 1;  }
+#define HELPCHECK(x) if (str && (str=="-h" || str=="-?" || str=="/h" \
+         || str=="/?" || str=="hilfe"))\
+                       { More(SOULHELP->Help(x)); return 1; }
+
+// "schau an" als nicht-Untersuchung. Klappt aber anscheinend nicht, weil
+// ich nicht gegen den GD ankomme. Also besser auskommentiert lassen.
+#ifdef SCHAU_AN
+#undef SCHAU_AN
+#endif
+
+// Anpiepsen mit Text. Im Moment erlaubt, bei Missfallen auskommentieren und
+// in der Hilfe auskommentieren.
+#ifdef WECKE
+#undef WECKE
+#endif
+
+#define WECKE
+
+#define NEED_PROTOTYPES
+#include <thing/description.h>
+#include <thing/properties.h>
+#include <player.h>
+#include <player/comm.h>
+#include <language.h>
+#undef NEED_PROTOTYPES
+
+#include <properties.h>
+
+#include <defines.h>
+#include <moving.h>
+#include <wizlevels.h>
+#include <class.h>
+
+static object who, ofoo;
+static int for_all, flag, ifoo;
+mapping plr_adverbs;
+static string out_sel, out_vic, out_oth, adverb, sfoo;
+
+private void ParseAdverb(string *words);
+private string convert_string(string str);
+varargs mixed More(string str, int fflag, string returnto);
+string MatchAdverb(string str);
+
+mapping
+QueryStdAdverbs()  {
+  return ([
+    "unve" : "unverschaemt",
+    "gutg" : "gutgelaunt",
+    "gutm" : "gutmuetig",
+    "froh" : "froh",
+    "glue" : "gluecklich",
+    "wuet" : "wuetend",
+    "frec" : "frech",
+    "daem" : "daemonisch",
+    "boes" : "boese",
+    "ungl" : "ungluecklich",
+    "lang" : "langsam",
+    "schn" : "schnell",
+    "jamm" : "jammernd",
+    "freu" : "freundlich",
+    "shue" : "schuechtern",
+    "amue" : "amuesiert",
+    "aerg" : "aergerlich",
+    "aner" : "anerkennend",
+    "erst" : "erstaunt",
+    "bitt" : "bitter",
+    "brei" : "breit",
+    "vors" : "vorsichtig",
+    "char" : "charmant",
+    "kalt" : "kalt",
+    "verf" : "verfuehrerisch",
+    "zufr" : "zufrieden",
+    "tief" : "tief",
+    "verz" : "verzweifelt",
+    "drec" : "dreckig",
+    "vert" : "vertraeumt",
+    "uebe" : "ueberzeugt",
+    "frus" : "frustriert",
+    "stra" : "strahlend",
+    "hoff" : "hoffnungsvoll",
+    "unge" : "ungeduldig",
+    "unsi" : "unsinnigerweise",
+    "unsc" : "unschuldig",
+    "unwi" : "unwissend",
+    "iron" : "ironisch",
+    "wiss" : "wissend",
+    "gema" : "gemaechlich",
+    "sehn" : "sehnsuechtig",
+    "laut" : "laut",
+    "lieb" : "liebevoll",
+    "froe" : "froehlich",
+    "dank" : "dankbar",
+    "natu" : "natuerlich",
+    "gedu" : "geduldig",
+    "perf" : "perfekt",
+    "vers" : "verspielt",
+    "hoef" : "hoeflich",
+    "stol" : "stolz",
+    "frag" : "fragend",
+    "rupp" : "ruppig",
+    "trau" : "traurig",
+    "vera" : "veraechtlich",
+    "scha" : "schamlos",
+    "erns" : "ernst",
+    "schu" : "schuechtern",
+    "zaer" : "zaertlich",
+    "sanf" : "sanft",
+    "entg" : "entgeistert",
+    "heim" : "heimtueckisch",
+    "gela" : "gelangweilt",
+    "wild" : "wild",
+    "jofi" : "wie Jof, wenn er mal nicht idlet",
+  ]);
+}
+
+mapping
+QueryAdverbs() {
+  if (extern_call())
+    return deep_copy(plr_adverbs);
+  return plr_adverbs;
+}
+
+string
+MatchAdverb(string a)  {
+  ParseAdverb(explode(a," "));
+  return adverb;
+}
+
+// Verwaltungsroutinen
+
+static void
+add_soul_commands()  {
+  if (!plr_adverbs)
+    plr_adverbs=([]);
+  add_action("SoulComm", "", 1);
+}
+
+static int
+verben_liste()  {
+  More(SOULHELP->Help());
+  return 1;
+}
+
+#define ghost() QueryProp(P_GHOST)
+#define frog() QueryProp(P_FROG)
+#define capname() capitalize(name())
+#define gname() (ghost()?(frog()?"Der Geist eines Frosches"\
+			        :"Der Geist von "+capname())\
+		        :capname())
+
+varargs private void
+ParseRest(string arg, mixed extra)  {
+  string wer,wie,*words,quotea;
+  int num,bis;
+  who = for_all = adverb = 0;
+  if (!arg) return;
+  if (extra)
+    if (!pointerp(extra)) {
+      if (sscanf(arg, extra+" %s", wie)==1)
+      arg=wie;
+    }
+    else
+      for (bis=sizeof(extra),num=0; num<bis; num++)
+        if (sscanf(arg, extra[num]+" %s", wie)==1)
+          arg=wie;
+
+  if ((bis=strstr(arg, "/"))>=0)
+    quotea=arg[bis..],arg=arg[0..bis-1];
+  quotea=quotea||"",arg=arg||"";
+
+  words=explode(implode(explode(arg, ","), " und"), " ");
+  if (!sizeof(words)) return;
+  if (sizeof(words) && (words[0]=="alle" || words[0]=="allen"))
+    for_all=1,wer=words[0],words=words[1..];
+  if (!for_all)  {     /* noch kein Opfer */
+    wer=match_living(lower_case(words[0]));
+    if (stringp(wer)) who=present(wer, environment(ME));
+    if (!who) who=present(words[0], environment(ME));
+    if (who && who->QueryProp(P_INVIS)) who=0;
+    }
+  if (who && sizeof(words))
+    words=words[1..];  /* Opfer gefunden - wenn's eines gibt */
+  words+=explode(quotea, " ");
+  words-=({""});
+  if (sizeof(words)) ParseAdverb(words);
+}
+
+private int
+ParseRemote(string arg)  {
+  string wer,*words; 
+
+  adverb = 0; // Adverb vom letzten Mal keinesfalls wiederverwenden. ;-)
+
+  if (!stringp(arg) || !sizeof(arg)) return 0;
+  
+  words=explode(arg," ");
+
+  mixed liv = match_living(lower_case(words[0]));
+  if (stringp(liv))
+      who=find_player(liv);
+  
+  if (who) {
+    // Ziel ist ein Spieler.
+    if (!who->QueryProp(P_INVIS) || IS_WIZARD(ME))
+    {
+      // Spieler ist nicht Invis oder ich bin Magier.
+      string nam = (query_once_interactive(ME) ? getuid() : 
+	             lower_case(name(RAW)));
+      if (query_verb()[0..5]=="rknudd" &&
+	  who->TestIgnore(nam+".rknuddel") )
+      {
+        // ich oder das Kommando werde ignoriert.
+        write(who->Name(WER)+" ignoriert Deinen Knuddelversuch.\n");
+        return 1;
+      }
+    }
+    else
+      // Spieler ist invis und ich bin kein Magier.
+      who = 0;
+  }
+  // kein eingeloggter und sichtbarer Spieler. Vielleicht ein NPC? (BTW: kein
+  // else if, weil im if fuer Spieler oben who genullt werden kann und dann
+  // nochmal nach nem NPC gesucht werden soll.)
+  if (!who) {
+    wer = match_living(lower_case(words[0]));
+    if(stringp(wer)) 
+      who=present(wer,environment(ME));
+    if (!who) who=present(words[0], environment(ME));
+    if (who && who->QueryProp(P_INVIS)) who=0;
+  }
+
+  if (!who || sizeof(words)==1) return 0;
+  words=words[1..];
+  ParseAdverb(words);
+  return(0);
+}
+
+/**
+ Gibt den passenden Adverb-Text zu einem key zurueck
+ \param s Danach wird in der Adverbien-Liste gesucht
+ \param fuzzy 
+ \return Der gefundene Adverbientext oder 0
+ */
+varargs string GetPlayerAdverb( string s, int fuzzy ) {
+  int i, j; 
+  string *search_pattern,
+         *search_result, 
+          result;
+
+  // Erstmal gucken, ob der String direkt gefunden werden kann
+  // das geht am schnellsten
+  result = QueryStdAdverbs()[s] || plr_adverbs[s];
+
+  // Wenn noch kein Ergebnis gefunden, und man unscharf suchen will
+  if ( fuzzy && !result) {
+
+    // Suchmuster fuer das Intersect erzeugen
+    search_pattern=({s});
+
+    j = sizeof(s)-1;
+    for ( i=2;  i < j ;i++) {
+      search_pattern += ({s[0..<i]});
+    }
+
+    // Intersect zwischen allen bekannten Abkuerzungen und Search-Pattern
+    // erzeugen. Dieses wird dann gleichzeitig nach Laenge sortiert
+    // genauester Treffer = String mit groesster Laenge
+    search_result = sort_array(
+      (m_indices(QueryStdAdverbs()) | m_indices(plr_adverbs))&search_pattern, 
+         #'>);
+
+    // Adverb zum genauesten Treffer zurueckgeben
+    if (sizeof(search_result)) 
+      result = QueryStdAdverbs()[search_result[0]] || 
+               plr_adverbs[search_result[0]];
+  }
+
+  return result;
+}
+
+/**
+  Parst die Adverbienparameter fuer Verben und speichert die
+  passende Textausgabe in der globalen Variable "adverb"
+  \param words Array mit den zu parsenden Adverbien-Strings
+*/
+private void
+ParseAdverb(string *words)  {
+  int num,andsign,bis;
+  string qadv,*adv,cnt;
+
+  adv=({});
+  qadv=0;
+
+  bis=sizeof(words);
+  // Sonderfall Gequotetes Adverb (alles nach dem Quote) speichern und aus 
+  // Words rausschneiden.
+  for (num=0; num<bis; num++)
+    if (words[num][0..0]=="/")  {
+      words[num]=words[num][1..];
+      qadv=implode(words[num..], " ");
+      words=words[0..num-1];
+      break;
+    }
+
+  // Es kann sein, dass vor dem Quote noch eine und steht. Das wird jetzt auch 
+  // noch entfernt, muss aber spaeter wieder eingefuegt werden.
+  if (sizeof(words) && words[<1]=="und")  {
+    words=words[0..<2];
+    andsign=1;
+  }
+
+  // Weitersuchen?
+  if (bis=sizeof(words))
+    for (num=0; num<bis; num+=2)
+       adv+=({GetPlayerAdverb(words[num], 1)});
+  cnt=CountUp(adv-({0}));
+
+  // Ausgabe zusammenbauen
+  if (andsign)
+    adverb=CountUp((sizeof(adv) ? adv : ({}))+(qadv ? ({qadv}) : ({})));
+  else if (sizeof(cnt) && sizeof(qadv))
+    adverb = cnt + " " + qadv;
+  else if (sizeof(qadv))
+    adverb = qadv;
+  else if (sizeof(cnt))
+    adverb = cnt; 
+  if (adverb=="") adverb=0;
+}
+
+private mixed MixedOut(int casus)  {
+  object *envs,*vics;
+  string *names,out,aufz;
+  int count,msg;
+
+  for_all=0;
+  vics=({});
+  names=({});
+  envs=all_inventory(environment())-({this_player()});
+  if (!(count=sizeof(envs)))
+    RETURN("Nichts und niemand da. Schau Dich naechstes Mal besser um.\n");
+  for ( ; count--; )
+    if (living(envs[count]) && !envs[count]->QueryProp(P_INVIS))  {
+      vics+=({envs[count]});
+      names+=({envs[count]->name(casus)});
+    }
+  if (!sizeof(vics))
+    RETURN("Keiner da. Schau Dich naechstes Mal besser um.\n");
+  aufz=CountUp(names);
+  for (count=sizeof(vics); count--;)
+  {
+    out=implode(explode(out_vic, "@@alle@@"),aufz);
+        out = regreplace( out, "\\<"+vics[count]->name(casus)+"\\>",
+                          capitalize(vics[count]->QueryDu(casus)), 0 );
+
+    msg=vics[count]->ReceiveMsg(convert_string(out),MT_COMM,MA_EMOTE,
+                                0,this_object());
+    switch(msg)
+    {
+      case MSG_DELIVERED:
+      case MSG_BUFFERED:
+        break;
+      case MSG_IGNORED:
+      case MSG_VERB_IGN:
+      case MSG_MUD_IGN:
+        write(vics[count]->Name()+" ignoriert Dich oder diesen Befehl.\n");
+        break;
+      default:
+        write(vics[count]->Name()+" konnte Dich gerade nicht lesen.\n");
+    }
+  }
+  write(break_string(convert_string(implode(explode(out_sel,"@@alle@@"),aufz)
+    +LF), 78));
+  return 1;
+}
+
+varargs private int
+CheckLife(int no_self,int no_dead, string no_self_text, string no_dead_text)  {
+  if (who && living(who) && who!=this_player()) return 0;
+  if (no_self && who && who==this_player())  {
+    if (no_self_text)
+      write(no_self_text+LF);
+    else
+      write("Mach das mit anderen, nicht mit Dir selber.\n");
+    return 1;
+  }
+  if (who && !living(who) && no_dead)  {
+    if (no_dead_text)
+      write(no_dead_text+LF);
+    else
+      write("Das darfst Du nur mit Lebewesen.\n");
+    return 2;
+  }
+  if (!who)  {
+    write("Schau Dich erst mal um - das angegebene Objekt ist nicht da.\n");
+    return 3;
+  }
+  return(0); //non-void. Fall-through, alles OK.
+}
+
+private string
+convert_string(string str)  {
+  /* Ich bin unschuldig, ich hatte das viel einfacher und schoener :)
+     Rumata wollte das so ;)  -HrT                                     */
+  str = implode( explode( str, "@@name@@" ), capname() );
+  str = implode( explode( str, "@@gname@@" ), gname() );
+  str = implode( explode( str, "@@wer@@" ),
+    (who?capitalize(who->name(WER,2)||""):"" ));
+  str = implode( explode( str, "@@ wen@@" ),
+    (who?" "+who->name(WEN,2):""));
+  str = implode( explode( str, "@@ wem@@" ),
+    (who?" "+who->name(WEM,2):""));
+  str = implode( explode( str, "@@wen@@" ),
+    (who?who->name(WEN,2):""));
+  str = implode( explode( str, "@@wem@@" ),
+    (who?who->name(WEM,2):""));
+  str = implode( explode( str, "@@wessen@@" ),
+    (who?who->name(WESSEN,2):""));
+  str = implode( explode( str, "@@adverb@@" ),
+    (adverb?" "+adverb:"") );
+  return str;
+}
+
+private int
+FeelIt()  {
+  int msg, flg;
+
+  flg = MSGFLAG_SOUL;
+  if (query_verb() && (query_verb()[0..3]=="frag" || query_verb()[0..3]=="antw"))
+    flg |= MSGFLAG_SAY;
+  if (query_verb() && (query_verb()[0..5]=="rknudd" || query_verb()=="rwink"))
+    flg |= MSGFLAG_REMOTE;
+
+  // NPC haben keine TM-Hist (comm.c). Leider erben aber div. Magier die Soul
+  // (trotzdem sie in /std/player/ liegt) in ihren NPC... *fluch*
+  if (query_once_interactive(ME))
+    _recv(who, break_string(convert_string(out_sel),78), flg);
+  else
+    tell_object(ME, break_string(convert_string(out_sel),78));
+
+  if (out_vic && who)  {
+    if (query_once_interactive(who))  {
+      msg=who->Message( break_string(convert_string( out_vic ),78), flg);
+      if (msg==-1)
+        write(who->name()+" ignoriert Dich oder diesen Befehl.\n");
+    } else
+      tell_object(who,break_string(convert_string( out_vic ),78));
+  }
+  if (out_oth)
+  say( break_string(convert_string( out_oth ),78), ({who,this_player()}) );
+  out_sel=out_vic=out_oth=0;
+  return 1;
+}
+
+/**
+  Die Funktion stellt einen Hilfetext zur Verfuegung und listet die 
+  definierten Adverbien auf.
+  \param mine 0 = alle Adverbien, 
+              1=nur selbst definierte Adverbien 
+              2=nur die vom System bereitgestellten
+ */
+private int zeige_adverbs(int mine)  {
+  mapping adverb_list;
+  string out,s;
+
+  // Parameter auswerten
+  switch (mine){
+    case 1:
+      adverb_list=plr_adverbs;
+      out = "Du hast folgende Adverbien definiert:\n";
+      break;
+    case 2:
+      adverb_list=QueryStdAdverbs();
+      out = "Systemseitig sind folgende Adverbien definiert:\n";
+      break;
+    default:
+      adverb_list=QueryStdAdverbs()+plr_adverbs;
+      out = "Folgende Adverbien stehen Dir zur Verfuegung:\n";
+  }
+
+  out +="  Abk.    Adverb\n  ======  ======\n";
+
+  if ( sizeof(adverb_list) == 0) 
+    out += " keine.\n";
+  else
+    // Ueber alle Elemente der indizies der Adverbienliste gehen
+   foreach ( s : sort_array(m_indices(adverb_list), #'> ) ) {
+      out += break_string(adverb_list[s],78,
+                          sprintf("  %-6s  ",s),BS_INDENT_ONCE);
+    }
+
+  More(out+"\nWie diese Adverbien benutzt werden ist in <hilfe adverb> "
+    "beschrieben.\n");
+
+  return 1;
+}
+
+varargs static int
+SoulComm(string str, string _verb)  {
+  int t_g,t_n,flag;
+  string str1,str2,str3,*taenze,vb;
+  out_sel=out_vic=out_oth=who=0;
+//  if (this_interactive()!=ME) return 0;
+  if (interactive(ME)) str=_unparsed_args(); // NPCs haben das nicht :(
+  if (str=="") str=0;
+  vb=_verb||query_verb();
+  if (sizeof(vb)>1 && vb[<1]=='e' && vb!="noe") vb=vb[0..<2];
+  sfoo = 0;
+  switch (vb)  {
+    /**************** Aechzen ***************/
+    case "aechz":
+    HELPCHECK("aechz");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Aechze wie?\n");
+    out_sel="Du aechzt@@adverb@@.";
+    out_oth="@@gname@@ aechzt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Anschmiegen ***************/
+    case "schmieg":
+    HELPCHECK("schmieg");
+    ParseRest(str);
+    if (!who)
+      Return("An wen willst Du Dich anschmiegen?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Das geht doch nicht.",
+      "Nein, das macht keinen Spass. Lebt ja nicht mal."))
+        return 1;
+    out_sel="Du schmiegst Dich@@adverb@@ an@@ wen@@ an.";
+    out_vic="@@gname@@ schmiegt sich@@adverb@@ an Dich.";
+    out_oth="@@gname@@ schmiegt sich@@adverb@@ an@@ wen@@ an.";
+    return FeelIt();
+
+    /**************** Antworten ***************/
+    case "antwort":
+    HELPCHECK("antwort");
+    if (!str)
+      Return("Antworte [WEM] WAS?\n");
+    ParseRest(str);
+    if (!who)
+      str1=capitalize(str);
+    else
+      if (sscanf(str,"%s %s",str1,str1)!=2)
+        Return("Antworte was?\n");
+      else
+        str1=capitalize(str1);
+    out_sel="Du antwortest@@ wem@@: "+str1;
+    /* Sprachflueche beruecksichtigen -Wargon, 8. 9. 95 */
+    if (QueryProp(P_PERM_STRING))
+      str1 = call_other(QueryProp(P_PERM_STRING),"permutate_string",str1)||"";
+    if (who) out_vic="@@gname@@ antwortet Dir: "+str1;
+    out_oth="@@gname@@ antwortet@@ wem@@: "+str1;
+    return FeelIt();
+
+    /**************** Applaudieren ***************/
+    case "applaudier":
+    HELPCHECK("applaudier");
+    GHOSTCHECK("Deine Haende fahren durcheinander durch - war wohl nix.\n",
+      gname()+" will applaudieren, aber "+QPP(FEMALE,WER,PLURAL)
+        +" Haende sausen\ndurcheinander durch.\n", 0);
+    if (!str)  {
+      out_sel="Du applaudierst von ganzem Herzen.";
+      out_oth="@@name@@ gibt eine Runde Applaus.";
+    }
+    else  {
+      ParseRest(str);
+      if (for_all)  {
+        out_sel="Du applaudierst @@alle@@@@adverb@@.";
+        out_vic="@@name@@ applaudiert @@alle@@@@adverb@@.";
+        return MixedOut(WEM);
+      }
+      if (!who && !adverb)
+        Return("Applaudiere wem oder wie oder so aehnlich.\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Nein, das gehoert sich nicht.",
+        "Sachen wird hier nicht applaudiert, OK?"))
+          return 1;
+      out_sel="Du applaudierst@@ wem@@@@adverb@@.";
+      if (who) out_vic="@@name@@ applaudiert Dir@@adverb@@.";
+      out_oth="@@name@@ applaudiert@@ wem@@@@adverb@@.";
+    }
+    return FeelIt();
+
+    /**************** Argln ***************/
+    case "argl":
+    HELPCHECK("argl");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Argle wie?\n");
+    out_sel="Du arglst"+(adverb ? "@@adverb@@." : " ein wenig vor Dich hin.");
+    out_oth="@@gname@@ arglt"
+      +(adverb ? "@@adverb@@." : " ein wenig vor sich hin.");
+    return FeelIt();
+
+    /**************** Aufatmen ***************/
+    case "atm":
+    HELPCHECK("atm");
+    if (!str || sscanf(str,"%sauf",str1)!=1)
+      Return("Atme wie auf?\n");
+    ParseRest(str1);
+    out_sel="Du atmest"+(adverb ? "@@adverb@@" : " erleichtert")+" auf.";
+    out_oth="@@gname@@ atmet"+(adverb ? "@@adverb@@" : " erleichtert")+" auf.";
+    return FeelIt();
+
+    /**************** Begruessen ***************/
+    case "hallo":
+    case "hi":
+    case "begruess":
+    HELPCHECK("begruess");
+    ParseRemote(str);
+    if (!who)
+      Return("Wen willst Du begruessen?\n");
+    if (present(who, environment()))  {
+      out_sel="Du heisst @@wen@@@@adverb@@ willkommen.";
+      out_vic="@@gname@@ heisst Dich@@adverb@@ willkommen.";
+      out_oth="@@gname@@ heisst @@wen@@@@adverb@@ willkommen.";
+    }
+    else  {
+      out_sel="Du heisst @@wen@@@@adverb@@ aus der Ferne willkommen.";
+      out_vic="@@gname@@ heisst Dich@@adverb@@ aus der Ferne willkommen.";
+    }
+    return FeelIt();
+
+    /**************** Betasten ***************/
+    case "betast":
+    HELPCHECK("betast");
+    ParseRest(str);
+    if (!who)
+      Return("Begrabsche wen?\n");
+    out_sel="Du grabbelst@@adverb@@ an "+who->name(WEM)+" herum.";
+    out_vic="@@gname@@ grabbelt@@adverb@@ an Dir herum.";
+    out_oth="@@gname@@ grabbelt@@adverb@@ an "+who->name(WEM)+" herum.";
+    return FeelIt();
+
+    /**************** Bewundern ***************/
+    case "bewunder":
+    HELPCHECK("bewunder");
+    ParseRest(str);
+    if (!who)
+      Return("Bewundere wen?\n");
+    out_sel="Du bewunderst @@wen@@@@adverb@@.";
+    out_vic="@@gname@@ bewundert Dich@@adverb@@.";
+    out_oth="@@gname@@ bewundert @@wen@@@@adverb@@.";
+    return FeelIt();
+
+    /**************** Bibbern ***************/
+    case "bibber":
+    HELPCHECK("bibber");
+    if (ghost())
+      Return("Als Geist fuehlst Du keine Kaelte.\n");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Bibbere wie?\n");
+    out_sel="Du bibberst@@adverb@@ vor Kaelte.";
+    out_oth="@@name@@ bibbert@@adverb@@ vor Kaelte.";
+    return FeelIt();
+
+    /**************** Bohre Nase ***************/
+    case "bohr":
+    HELPCHECK("bohr");
+    ParseRest(str, ({"nase","in der nase","in nase"}));
+    if (str && str!="nase" && str!="in nase" && str!="in der nase" && !adverb)
+      Return("Bohre wie Nase?\n");
+    out_sel="Du bohrst@@adverb@@ in Deiner Nase.";
+    out_oth="@@gname@@ bohrt@@adverb@@ in der Nase.     Igitt! :)";
+    return FeelIt();
+
+    /**************** Brummeln ***************/
+    case "brummel":
+    HELPCHECK("brummel");
+    ParseRest(str);
+    out_sel="Du brummelst"
+      +(adverb ? "@@adverb@@." : (str ? " kaum verstaendlich: "+str+"." : "."));
+    out_oth="@@gname@@ brummelt"
+      +(adverb ? "@@adverb@@." : (str ? " kaum verstaendlich: "+str+"." : "."));
+    return FeelIt();
+
+    /**************** cls ***************/
+    case "cls":
+    HELPCHECK("cls");
+    write("");
+    return 1;
+
+    /**************** Daeumchendrehen ***************/
+    case "dreh":
+    HELPCHECK("dreh");
+    if (!str)
+      Return("Drehe was?\n");
+    if(strstr(str,"daeumchen")<0 && strstr(str,"daumen")<0)
+      Return("Drehe was?\n");
+    ParseRest(str,({"daeumchen","daumen"}));
+    out_sel="Du drehst@@adverb@@ Daeumchen.";
+    out_oth="@@gname@@ dreht@@adverb@@ Daeumchen.";
+    return FeelIt();
+
+    /**************** Danken ***************/
+    case "dank":
+    HELPCHECK("dank");
+    ParseRest(str);
+    if (!who)
+      Return("Bei wem willst Du Dich bedanken?\n");
+    if (CheckLife(NOT_SELF, NOT_DEAD,
+      "Leidest Du jetzt schon an Persoenlickeitsspaltung? Ne, ne...",
+      "Keine Reaktion. Ist wohl befriedigender, sich bei Lebewesen zu "
+        +"bedanken."))
+        return 1;
+    out_sel="Du bedankst Dich@@adverb@@ bei@@ wem@@.";
+    out_vic="@@gname@@ bedankt sich@@adverb@@ bei Dir.";
+    out_oth="@@gname@@ bedankt sich@@adverb@@ bei@@ wem@@.";
+    return FeelIt();
+
+    /**************** Denken ***************/
+    case "denk":
+    HELPCHECK("denk");
+    if (ghost())
+      Return("Womit willst Du denn denken? Du hast keine grauen Zellen...\n");
+//    ParseRest(str);
+    str2=old_explode(str||""," ")[0];
+    if (str
+    && (!adverb||((QueryStdAdverbs()[str2]||plr_adverbs[str2]))!=adverb))  {
+      out_sel="Du denkst   . o O ("+str+")";
+      out_oth="@@name@@ denkt   . o O ("+str+")";
+      out_vic="@@name@@ denkt   . o O ("+str+")";
+    }
+    else  {
+      out_sel="Du faengst@@adverb@@ an zu denken.\nKleine "
+        +"Rauchwoelkchen steigen auf...";
+      out_oth="@@name@@ faengt@@adverb@@ an zu denken.\nKleine "
+        +"Rauchwoelkchen steigen auf...";
+    }
+    return FeelIt();
+
+    /**************** Deuten ***************/
+    case "deut":
+    HELPCHECK("deut");
+    ParseRest(str,"auf");
+    if (for_all)  {
+      out_sel="Du deutest@@adverb@@ auf @@alle@@.";
+      out_vic="@@gname@@ deutet@@adverb@@ auf @@alle@@.";
+      return MixedOut(WEN);
+    }
+    if (!who)
+      Return("Auf wen oder was willst Du deuten?\n");
+    out_sel="Du deutest@@adverb@@ auf"
+      +(who==this_object()?" Dich." : "@@ wen@@.");
+    if (who != this_object()) out_vic="@@gname@@ deutet@@adverb@@ auf Dich.";
+    out_oth="@@gname@@ deutet@@adverb@@ auf"
+      +(who==this_object() ? " sich selber.": "@@ wen@@.");
+    return FeelIt();
+
+    /**************** Druecken ***************/
+    case "drueck":
+    HELPCHECK("drueck");
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du drueckst @@alle@@"+(adverb ? "@@adverb@@" : " zaertlich")
+        +" an Dich.";
+      out_vic="@@gname@@ drueckt @@alle@@"+
+        (adverb ? "@@adverb@@" : " zaertlich")+" an sich.";
+      return MixedOut(WEN);
+    }
+    if (!who)
+      Return("Wen willst Du denn druecken?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Das macht doch keinen Spass.",
+      "Ich druecke nur jemanden, nicht etwas."))
+        return 1;
+    GHOSTCHECK("Du willst "+who->name(WEN)+" an Dich druecken - nur hast Du "
+        +"schon\nwieder nicht daran gedacht, dass so was als Geist nicht "
+        +"geht.\n",
+      gname()+" will "+who->name(WEN)+" an sich druecken - hat aber\n"
+        +"mal wieder nicht an die Nachteile des Geisterdaseins gedacht.\n",
+      gname()+" will Dich an sich druecken - hat aber mal wieder\n"
+        +"nicht an die Nachteile des Geisterdaseins gedacht.\n");
+    out_sel="Du drueckst @@wen@@"+(adverb ? "@@adverb@@" : " zaertlich")
+      +" an Dich.";
+    out_vic="@@name@@ drueckt Dich"+(adverb ? "@@adverb@@" : " zaertlich")
+      +" an sich.";
+    out_oth="@@name@@ drueckt @@wen@@"+(adverb ? "@@adverb@@" : " zaertlich")
+      +" an sich.";
+    return FeelIt();
+
+    /**************** Entschuldige ***************/
+    case "entschuldig":
+    HELPCHECK("entschuldig");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Entschuldige Dich wie oder bei wem?\n");
+    out_sel="Du bittest"+(who ? " @@wen@@" : "")
+      +"@@adverb@@ um Entschuldigung.";
+    if (who) out_vic="@@gname@@ bittet Dich@@adverb@@ um Entschuldigung.";
+    out_oth="@@gname@@ bittet"+(who ? " @@wen@@" : "")
+      +"@@adverb@@ um Entschuldigung.";
+    return FeelIt();
+
+    /**************** Erbleichen ***************/
+    case "erbleich":
+    HELPCHECK("erbleich");
+    GHOSTCHECK("Ich weiss zwar nicht, wie Du das schaffst, aber Du wirst "
+        +"noch bleicher.\n",
+      break_string("Wie unwahrscheinlich das auch ist, aber "+gname()
+        +" schafft es tatsaechlich, noch bleicher zu werden.",78), 0 );
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Wie willst Du erbleichen?\n");
+    out_sel="Du erbleichst@@adverb@@.";
+    out_oth="@@name@@ erbleicht@@adverb@@.";
+    return FeelIt();
+
+    /**************** Erroeten ***************/
+    case "erroet":
+    HELPCHECK("erroet");
+    GHOSTCHECK("Du schaffst es nur bis zu einem blassen Rosa, aber immerhin.\n",
+      "Die Wangen des Geistes von "+capname()+" werden leicht rosa.\n", 0);
+    ParseRest(str);
+    if (!adverb && str)
+      Return("Erroete wie?\n");
+    out_sel="Deine Wangen gluehen@@adverb@@.";
+    out_oth="@@name@@ erroetet@@adverb@@.";
+    return FeelIt();
+
+    /**************** Erschrecken ***************/
+    case "erschreck":
+    case "erschrick":
+    if (!ghost())
+      Return("Du bist zu harmlos, Geist muesste man sein...\n");
+    HELPCHECK("erschreck");
+    ParseRest(str);
+    if (!who)
+      Return("Wen willst Du denn erschrecken?\n");
+    out_sel="Mit einem lauten BUH! erschreckst Du @@wen@@"
+      +(adverb ? "@@adverb@@." : " fuerchterlich.");
+    out_vic="BUH! Du zuckst vor Schreck zusammen. Muss dieser Geist von "
+      +"@@gname@@ Dich auch@@adverb@@ erschrecken.";
+    out_oth="BUH! @@gname@@ erschreckt @@wen@@"
+      +(adverb ? "@@adverb@@." : " fuerchterlich.");
+    return FeelIt();
+
+    /**************** Flippen ***************/
+    case "flipp":
+    HELPCHECK("flipp");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Ausflippen wollen wir also, so so. Und wie, wenn ich "
+        +"fragen darf?\n");
+    out_sel="Du flippst"+(adverb ? "@@adverb@@ aus." : " total aus.");
+    out_oth="@@gname@@ flippt"+(adverb ? "@@adverb@@ aus." : " total aus.");
+    return FeelIt();
+
+    /**************** Fluchen ***************/
+    case "fluch":
+    HELPCHECK("fluch");
+    GHOSTCHECK("Du faengst mangels Resonanzkoerper leise an zu fluchen.\n",
+      gname()+" faengt leise an zu fluchen. Laut kann er nicht,\n"
+        +"mangels Luft und Resonanzkoerper.\n", 0);
+    if (!str)  {
+      out_sel="Du fluchst lautstark.";
+      out_oth="@@name@@ faengt an, fuerchterlich zu fluchen.";
+    }
+    else  {
+      ParseRest(str);
+      if (!adverb)
+        Return("Wie willst Du fluchen?\n");
+      out_sel="Du fluchst@@adverb@@.";
+      out_oth="@@name@@ flucht auf einmal@@adverb@@.";
+    }
+    return FeelIt();
+
+    /**************** Fragen ***************/
+    case "frag":
+    HELPCHECK("frag");
+    if (!str)
+      Return("Frage wen was?\n");
+    ParseRest(str);
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Du faengst zu gruebeln an...",
+      "Frage jemand, der lebt."))
+        return 1;
+    if (who)
+      sscanf(str,"%s %s", str1,str1);
+    else
+      str1=str;
+    if (!str1)
+      Return("Frage "+who->name(WEN)+" WAS?\n");
+    str1=capitalize(str1);
+    if (str1[<1] != '?')
+      str1 += "?";
+    out_sel="Du fragst@@ wen@@: "+str1;
+    /* Sprachfluch beruecksichtigen -Wargon, 8. 9. 95 */
+    if (objectp(QueryProp(P_PERM_STRING)))
+      str1 = call_other(QueryProp(P_PERM_STRING), "permutate_string", str1)||"";
+    if (who) out_vic=(ghost() ? "Der Geist von " : /* IS_LEARNER(ME) ?
+      QueryProp(P_PRESAY)||"" : */ "")+capname()+" fragt Dich: "+str1;
+    out_oth=(ghost() ? "Der Geist von " : /* IS_LEARNER(ME) ?
+      QueryProp(P_PRESAY)||"" : */ "")+capname()+" fragt@@ wen@@: "+str1;
+    return FeelIt();
+
+    /**************** Freuen ***************/
+    case "freu":
+    HELPCHECK("freu");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Freue Dich wie?\n");
+    out_sel="Du "+(who ? "grinst @@wen@@ an und " : "")
+      +"freust Dich@@adverb@@.";
+    if (who) out_vic="@@gname@@ grinst Dich an und freut sich@@adverb@@.";
+    out_oth="@@gname@@ "+(who ? "grinst @@wen@@ an und " : "")
+      +"freut sich@@adverb@@.";
+    return FeelIt();
+
+    /**************** Furzen ***************/
+    case "furz":
+    HELPCHECK("furz");
+    GHOSTCHECK("Du laesst einen fahren - aber er riecht nach gar nix.\n",
+      gname()+" laesst einen fahren. Man riecht aber nix.\n", 0);
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Furze wie?\n");
+    out_sel="Du furzt"+(adverb ? "@@adverb@@." : " hemmungslos.");
+    out_oth="@@name@@ laesst@@adverb@@ einen Stinkefurz fahren.";
+    ofoo=clone_object("/items/furz");
+    ofoo->set_furzer(this_player());
+    ofoo->move(environment(this_player()));
+    return FeelIt();
+// DEBUG Furz testen!
+
+    /**************** Gaehnen ***************/
+    case "gaehn":
+    HELPCHECK("gaehn");
+    if (ghost())
+      Return("Als Geist wirst Du nicht muede - also nicht gaehnen.\n");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Wie willst Du gaehnen?\n");
+    if (!adverb)
+      out_sel="Kannst Du aber Dein(en) Mund/Maul/Schnabel weit aufreissen!";
+    else
+      out_sel="Du gaehnst@@adverb@@.";
+    out_oth="@@gname@@ gaehnt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Glucksen ***************/
+    case "glucks":
+    HELPCHECK("glucks");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Gluckse wie?\n");
+    out_sel="Du gluckst"+(adverb ? "@@adverb@@." : " wie ein Huhn.");
+    out_oth="@@gname@@ gluckst"+(adverb ? "@@adverb@@." : " wie ein Huhn.");
+    return FeelIt();
+
+    /**************** Gratulieren ***************/
+    case "gratulier":
+    case "beglueckwuensch":
+    HELPCHECK("gratulier");
+    ParseRest(str);
+    if (!who)
+      Return("Wem willst Du gratulieren?\n");
+    if (CheckLife(NOT_SELF, NOT_DEAD,
+      "Na, meinst Du nicht, dass Eigenlob stinkt?",
+      "Soll ich dem Ding vielleicht zum Totsein gratulieren? Nee nee."))
+        return 1;
+    out_sel="Du gratulierst @@wem@@@@adverb@@.";
+    out_vic="@@gname@@ gratuliert Dir@@adverb@@.";
+    out_oth="@@gname@@ gratuliert @@wem@@@@adverb@@.";
+    return FeelIt();
+
+    /**************** Grinsen ***************/
+    case "grins":
+    HELPCHECK("grins");
+    GHOSTCHECK("Als Du grinst, siehst Du regelrecht, wie die anderen eine "
+        +"Gaensehaut bekommen.\n",
+      "Du bekommst eine Gaensehaut, als der Geist von "+capname()
+        +" zu grinsen anfaengt.\n", 0);
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du grinst @@alle@@@@adverb@@ an.";
+      out_vic="@@name@@ grinst @@alle@@@@adverb@@ an.";
+      return MixedOut(WEN);
+    }
+    if (!who && !adverb && str)
+      Return("Grinsen - schoen und gut. Aber wen oder wie (an)grinsen?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Du grinst Dir was, aber so, dass es kein anderer sieht.",
+      "Nicht mal einen Spiegel darf man hier angrinsen, nur Lebewesen!"))
+        return 1;
+    out_sel="Du grinst@@ wen@@@@adverb@@"+(who ? " an" : "")+".";
+    if (who) out_vic="@@name@@ grinst Dich@@adverb@@ an.";
+    out_oth="@@name@@ grinst@@ wen@@@@adverb@@"+(who ? " an" : "")+".";
+    return FeelIt();
+
+    /**************** Gruebeln ***************/
+    case "gruebel":
+    case "gruebl":
+    HELPCHECK("gruebel");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Grueble wie?\n");
+    out_sel="Du gruebelst@@adverb@@ eine Weile vor Dich hin.";
+    out_oth="@@gname@@ gruebelt@@adverb@@ eine Weile vor sich hin.";
+    return FeelIt();
+
+    /**************** Grummeln ***************/
+    case "grummel":
+    case "grumml":
+    HELPCHECK("grummel");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Grummle wie?\n");
+    out_sel="Du grummelst@@adverb@@.";
+    out_oth="@@gname@@ grummelt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Grunzen ***************/
+    case "grunz":
+    HELPCHECK("grunz");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Grunze wie?\n");
+    out_sel="Du grunzt@@adverb@@.";
+    out_oth="@@gname@@ grunzt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Gucken ***************/
+    case "guck":
+    HELPCHECK("guck");
+    ParseRest(str);
+    if (!adverb)
+      Return("Gucke wie aus der Waesche?\n");
+    out_sel="Du guckst@@adverb@@ aus der Waesche.";
+    out_oth="@@gname@@ guckt@@adverb@@ aus der Waesche.";
+    return FeelIt();
+
+    /**************** Jammern ***************/
+    case "jammer":
+    HELPCHECK("jammer");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Wie willst Du jammern?\n");
+    out_sel="Du jammerst@@adverb@@.";
+    out_oth="@@gname@@ jammert@@adverb@@.";
+    return FeelIt();
+
+    /**************** Haetscheln ***************/
+    case "haetschel":
+    case "haetschl":
+    HELPCHECK("haetschel");
+    GHOSTCHECK("Du ueberlegst es Dir anders - mit Deinen durchlaessigen "
+        +"Haenden...",
+      gname()+" will anscheinend jemand haetscheln, ueberlegt\n"
+        +"es sich nach einem kurzen Blick auf seine Haende anders.\n", 0);
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du haetschelst @@alle@@@@adverb@@.";
+      out_vic="@@name@@ haetschelt @@alle@@@@adverb@@.";
+      return MixedOut(WEN);
+    }
+    if (!str || !who)
+      Return("Wen willst Du haetscheln?\n");
+    if (who && CheckLife(NOT_SELF, NOT_DEAD,
+      "Das sieht viel zu albern aus - Du laesst es bleiben.",
+      "Ist da ueberhaupt was zu haetscheln? Nein, da lebt doch nix."))
+        return 1;
+    out_sel="Du haetschelst@@ wen@@@@adverb@@.";
+    out_vic="@@name@@ haetschelt Dich@@adverb@@.";
+    out_oth="@@name@@ haetschelt@@ wen@@@@adverb@@.";
+    return FeelIt();
+
+    /**************** Hicksen ***************/
+    case "hicks":
+    HELPCHECK("hicks");
+    GHOSTCHECK("Hoppla! Dieser Hickser zieht Dich ganz schoen zusammen!\n",
+      gname()+" hat anscheinend Schluckauf.\n"
+        +"Und was fuer einen! Fuer einen Moment zieht es "+QueryPronoun(WEN)
+        +" ziemlich zusammen.\n", 0);
+    if (!str)  {
+      out_sel="Hicks!";
+      out_oth="@@name@@ muss hicksen. Wahrscheinlich zu viel Alkohol...";
+    }
+    else  {
+      ParseRest(str);
+      if (!adverb)
+        Return("Hickse wie?\n");
+      out_sel="Du hickst@@adverb@@.";
+      out_oth="@@name@@ hickst@@adverb@@.";
+    }
+    return FeelIt();
+
+    /**************** Huepfen ***************/
+    case "huepf":
+    HELPCHECK("huepf");
+    GHOSTCHECK("Du schwebst durch die Gegend.\n",
+      gname()+" schwebt durch die Gegend.\n", 0);
+    if (!str)  {
+      out_sel="B O I N G !! Du huepfst in der Gegend herum.";
+      out_oth="@@name@@ huepft in der Gegend herum.";
+    }
+    else  {
+      ParseRest(str);
+      if (!who && !adverb)
+        Return("Huepfe wie oder um wen oder wie oder was oder haeh?\n");
+      out_sel="Du huepfst@@adverb@@"+(who ? " um@@ wen@@" : "")+" herum.";
+      if (who) out_vic="@@name@@ huepft@@adverb@@ um Dich herum.";
+      out_oth="@@name@@ huepft@@adverb@@"+(who ? " um@@ wen@@" : "")+" herum.";
+    }
+    return FeelIt();
+
+    /**************** Husten ***************/
+    case "hust":
+    HELPCHECK("hust");
+    GHOSTCHECK("Du verstreust ein paar Geisterbazillen im Raum.\n",
+      gname()+" macht ufff, ufff und verteilt ein paar Geister-\n"
+        +"bazillen im Raum.\n", 0);
+    if (!str)  {
+      out_sel="Hust! Keuch! Halt dir doch wenigstens die Hand vor den Mund!";
+      out_oth="@@name@@ hustet sich fast die Seele aus dem Leib.";
+    }
+    else  {
+      ParseRest(str);
+      if (!who && !adverb)
+        Return("Wenn Du schon was hinter huste tippst, dann bitte was "
+          +"vernuenftiges!\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Dir selber koennen nur andere was husten.",
+        "Bitte huste nur Lebewesen was."))
+          return 1;
+      out_sel="Du hustest@@ wem@@@@adverb@@"+(who? " was" : "")+".";
+      if (who) out_vic="@@name@@ hustet Dir@@adverb@@was.";
+      out_oth="@@name@@ hustet@@ wem@@@@adverb@@"+(who? " was" : "")+".";
+    }
+    return FeelIt();
+
+    /**************** Jubeln ***************/
+    case "jubel":
+    case "jubl":
+    HELPCHECK("jubel");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Juble wie? Oder wem zu?\n");
+    out_sel="Du jubelst@@ wem@@@@adverb@@"+(who ? " zu." : ".");
+    if (who) out_vic="@@gname@@ jubelt Dir@@adverb@@ zu.";
+    out_oth="@@gname@@ jubelt@@ wem@@@@adverb@@"+(who ? " zu." : ".");
+    return FeelIt();
+
+    /**************** Keuchen ***************/
+    case "keuch":
+    HELPCHECK("keuch");
+    if (ghost())
+      Return("Als Geist strengt Dich nix an - also wird auch nicht "
+        +"gekeucht.\n");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Keuche wie?\n");
+    out_sel="Du keuchst"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
+    out_oth="@@name@@ keucht"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
+    return FeelIt();
+
+    /**************** Kichern ***************/
+    case "kicher":
+    HELPCHECK("kicher");
+    if (!str)  {
+      out_sel="Du kicherst. (Wie albern von Dir)";
+      out_oth="@@gname@@ gibt ein albernes Kichern von sich.";
+    }
+    else  {
+      ParseRest(str);
+      if (!who && !adverb)
+        Return("Das haut so nicht hin, gib vernuenftige Parameter.\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "In diesem Fall nimm bitte nur kicher.",
+        "Musst schon etwas Lebendes angeben, nichts Totes."))
+          return 1;
+      out_sel="Du kicherst@@adverb@@"+(who ? " hinter "+who->name(WESSEN)+
+        " Ruecken." : ".");
+      if (who)  out_vic="Jemand kichert@@adverb@@ hinter deinem Ruecken.";
+      out_oth="@@gname@@ kichert@@adverb@@"+(who ? " hinter "+who->name(WESSEN)
+        +" Ruecken." : ".");
+    }
+    return FeelIt();
+
+    /**************** Kitzeln ***************/
+    case "kitzel":
+    case "kitzl":
+    HELPCHECK("kitzel");
+    GHOSTCHECK("Mit Deinen immateriellen Fingern schaffst Du das nicht.\n",
+      gname()+" muss gerade feststellen, dass man mit\n"
+        +"immateriellen Fingern nicht kitzeln kann.\n", 0);
+    ParseRest(str);
+    if (!who)
+      Return("Wen willst Du kitzeln?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Du bist doch kein Masochist! Du laesst es bleiben.",
+      "Dinge sind so selten kitzlig. Lass es bleiben."))
+        return 1;
+    if (member(({"highlander","hobo"}), who->query_real_name())>-1)
+      switch (who->query_real_name())  {
+        case "highlander": str1="unter"; str2="Federn"; break;
+        case "hobo"      : str1="an";    str2="Kinn"; break;
+      }
+    else if (who->QueryProp(P_RACE))
+      switch (lower_case(who->QueryProp(P_RACE)))  {
+        case "drache" : str1="unter";str2="Schuppen";
+          t_g=FEMALE; t_n=PLURAL; break;
+        case "greif"  : str1="unter";str2="Federn";
+          t_g=FEMALE; t_n=PLURAL; break;
+        default       : str1="an"; str2="Kinn"; t_g=NEUTER; t_n=SINGULAR;
+      }
+    else  {
+      str1="an"; str2="Kinn"; t_g=NEUTER; t_n=SINGULAR;
+    }
+    if (getuid(who)=="trest" || getuid(who)=="woelkchen")  {
+      str1="an"; str2="Fuessen"; t_g=MALE; t_n=PLURAL;
+    }
+    out_sel="Du kitzelst@@ wen@@@@adverb@@ "+str1+" "+who->QPP(t_g,WEM,t_n)
+      +" "+str2+".\n@@wer@@ versucht, sich zu beherrschen, muss aber "
+      +"doch lachen.";
+    out_vic="@@name@@ kitzelt Dich@@adverb@@ "+str1+" Deine"
+      +(t_n ? "n" : (t_g==FEMALE ? "r" : "m"))+" "+str2
+      +".\nDu versuchst, Dich zu beherrschen, musst aber doch lachen.";
+    out_oth="@@name@@ kitzelt@@ wen@@@@adverb@@ "+str1+" "
+      +who->QPP(t_g,WEM,t_n)+" "+str2
+      +".\n@@wer@@ versucht, sich zu beherrschen, muss aber doch lachen.";
+    return FeelIt();
+
+    /**************** Klatschen ***************/
+    case "klatsch":
+    HELPCHECK("klatsch");
+    GHOSTCHECK("Deine Haende sausen durcheinander durch.\n",
+      gname()+" will in die Haende klatschen - aber sie\n"
+        +"sausen durcheinander durch.\n", 0);
+    ParseRest(str);
+    if (!adverb && str)
+      Return("Klatsche wie?\n");
+    out_sel="Du klatschst@@adverb@@ in die Haende.";
+    out_oth="@@name@@ klatscht@@adverb@@ in die Haende.";
+    return FeelIt();
+
+    /**************** Klopfen ***************/
+    case "klopf":
+    HELPCHECK("klopf");
+    if (!str||sscanf(str,"%s auf schulter",sfoo)!=1)
+      if (!str||sscanf(str,"%s auf die schulter",sfoo)!=1)
+        Return("Klopfe wie wem wieso was?\n");
+    if (ghost())
+      Return("Das geht leider nicht mit durchlaessigen Haenden.\n");
+    str=sfoo;
+    if (str=="") str=0;
+    ParseRest(str);
+    if (!who)
+      Return("Klopfe wem auf die Schulter?\n");
+    out_sel="Du klopfst @@wem@@@@adverb@@ auf die Schulter.";
+    out_vic="@@name@@ klopft Dir@@adverb@@ auf die Schulter.";
+    out_oth="@@name@@ klopft @@wem@@@@adverb@@ auf die Schulter.";
+    return FeelIt();
+
+    /**************** Knabbern ***************/
+    case "knabber":
+    HELPCHECK("knabber");
+    if (ghost())
+      Return("Sorry, aber dafuer fehlt Dir im Moment der noetige "
+        +"\"Biss\"...\n");
+    ParseRest(str);
+    if (!who)
+      Return("Knabbere wen an?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Du kommst nicht an dein eigenes Ohr ran...",
+      "Noe, noe, das schmeckt bestimmt nicht gut."))
+        return 1;
+    out_sel="Du knabberst@@adverb@@ an "+who->name(WESSEN)+" Ohr.";
+    out_vic="@@name@@ knabbert@@adverb@@ an Deinem Ohr.";
+    out_oth="@@name@@ knabbert@@adverb@@ an "+who->name(WESSEN)+" Ohr.";
+    return FeelIt();
+
+    /**************** Knicksen ***************/
+    case "knicks":
+    HELPCHECK("knicks");
+    GHOSTCHECK("Du knickst in der Mitte ab, kriegst Dich aber schnell wieder "
+        +"zusammen.\n",
+      gname()+" knick(s)t in der Mitte ab, kriegt sich aber\n"
+        +"zum Glueck schnell wieder zusammen.\n", 0);
+    if (!str) {
+      out_sel="Du machst einen anmutigen Knicks.";
+      out_oth="@@name@@ macht einen anmutigen Knicks.";
+    }
+    else  {
+      ParseRest(str,"vor");
+      if (for_all)  {
+        out_sel="Du knickst@@adverb@@ vor @@alle@@.";
+        out_vic="@@name@@ knickst@@adverb@@ vor @@alle@@.";
+        return MixedOut(WEM);
+      }
+      if (!who && !adverb)
+        Return("Knickse irgendwie oder vor jemandem.\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Wie willst Du das denn schaffen?",
+        "Vor Sachen wird hier nicht geknickst!"))
+          return 1;
+      out_sel="Du knickst@@adverb@@"+(who ? " vor" : "")+"@@ wem@@.";
+      if (who ) out_vic="@@name@@ knickst@@adverb@@ vor Dir.";
+      out_oth="@@name@@ knickst@@adverb@@"+(who ? " vor" : "")+"@@ wem@@.";
+    }
+    return FeelIt();
+
+    /**************** Knirschen ***************/
+    case "knirsch":
+    HELPCHECK("knirsch");
+    if (ghost())
+      Return("Du kannst mit nichts knirschen, so als Geist. Versuche doch "
+        +"dafuer\nmal, zu rasseln...\n");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Knirsche wie?\n");
+    switch (QueryProp(P_RACE))  {
+      case "greif"  : str1="dem Schnabel."; break;
+      case "sandtiger" : str1="den Fangzaehnen."; break;
+      case "drache" : str1="den Fangzaehnen."; break;
+      default       : str1="den Zaehnen.";
+    }
+    out_sel="Du knirschst@@adverb@@ mit "+str1;
+    out_oth="@@name@@ knirscht@@adverb@@ mit "+str1;
+    return FeelIt();
+
+    /**************** Knuddeln ***************/
+    case "knuddel":
+    case "knuddl":
+    HELPCHECK("knuddel");
+    if (ghost())
+      Return("Sorry, nicht als Geist.\n");
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du knuddelst @@alle@@@@adverb@@.";
+      out_vic="@@name@@ knuddelt @@alle@@@@adverb@@.";
+      return MixedOut(WEN);
+    }
+    if (!who)
+      Return("Knuddle wen?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Das bringt doch nix, lass es halt.",
+      "Du kannst soviel ich weiss ausser Lebewesen nur Teddys knuddeln."))
+        return 1;
+    out_sel="Du knuddelst@@ wen@@@@adverb@@.";
+    out_vic="@@name@@ knuddelt Dich@@adverb@@.";
+    out_oth="@@name@@ knuddelt@@ wen@@@@adverb@@.";
+    return FeelIt();
+
+    /**************** Knurren ***************/
+    case "knurr":
+    HELPCHECK("knurr");
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du knurrst @@alle@@@@adverb@@ an.";
+      out_vic="@@gname@@ knurrt @@alle@@@@adverb@@ an.";
+      return MixedOut(WEN);
+    }
+    if (str && !who && !adverb)
+      Return("Wen anknurren oder wie knurren?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Du knurrst in Dich hinein.",
+      "Reagiert nicht. Solltest wohl besser Lebwesen anknurren."))
+        return 1;
+    out_sel="Du knurrst@@ wen@@@@adverb@@"+(who ? " an." : ".");
+    if (who) out_vic="@@gname@@ knurrt Dich@@adverb@@ an.";
+    out_oth="@@gname@@ knurrt@@ wen@@@@adverb@@"+(who ? " an." : ".");
+    return FeelIt();
+
+    /****************  Knutschen ***************/
+    case "knutsch":
+    HELPCHECK("knutsch");
+    if (ghost())
+      Return("Das kannst Du als Geist leider nicht. Irgendwie fehlt Dir "
+        +"dazu das Herz.\n");
+    ParseRest(str);
+    if (!who)
+      Return("Knutsche wen ab?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Das geht nicht.",
+      "Igitt! Lieber nicht!"))
+        return 1;
+    out_sel="Du gibst @@wem@@@@adverb@@ einen RICHTIGEN Kuss.";
+    out_vic="@@name@@ gibt Dir@@adverb@@ einen tiefen und hingebungsvollen "
+      +"Kuss.\nDu schwebst im 7. Himmel.";
+    out_oth="@@name@@ gibt @@wem@@@@adverb@@ einen tiefen und "
+      +"hingebungsvollen Kuss.";
+    return FeelIt();
+
+    /**************** Kotzen ***************/
+    case "kotz":
+    HELPCHECK("kotz");
+    if (ghost())
+      Return("Ne, das ist eins von den Sachen, die als Geist nicht gehen.\n");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Kotze wie? Kotze auf wen?\n");
+    if (who && CheckLife(NOT_SELF,0,
+      "Igitt, nein danke."))
+        return 1;
+    if(!str) {
+      out_sel="Du kotzt ueber deine Schuhe.";
+      out_oth="@@name@@ verdreht die Augen und kotzt.";
+    }
+    else  {
+      out_sel="Du kotzt@@adverb@@"+(who ? " auf @@wen@@." : ".");
+      if (who) out_vic="@@name@@ kotzt@@adverb@@ auf Dich.";
+      out_oth="@@name@@ kotzt@@adverb@@"+(who ? " auf @@wen@@." : ".");
+    }
+    return FeelIt();
+
+    /**************** Kratzen ***************/
+    case "kratz":
+    HELPCHECK("kratz");
+    ParseRest(str);
+    if (who && (who!=this_player()))
+      Return("Das mach mal schoen nur mit Dir selber.\n");
+    if (str && !adverb)
+      Return("Wie willst Du Dich kratzen?\n");
+    out_sel="Du kratzt dich@@adverb@@ am Kopp.";
+    out_oth="@@gname@@ kratzt sich@@adverb@@ am Kopp.";
+    return FeelIt();
+
+    /**************** Krieche ***************/
+    case "kriech":
+    HELPCHECK("kriech");
+    ParseRest(str);
+    out_sel="Du kriechst"+(who ? " vor @@wem@@" : "")+"@@adverb@@ im Staub.";
+    if (who) out_vic="@@gname@@ kriecht@@adverb@@ vor Dir im Staub.";
+    out_oth="@@gname@@ kriecht"+(who ? " vor @@wem@@" : "")
+      +"@@adverb@@ im Staub.";
+    return FeelIt();
+
+    /**************** Kuessen ***************/
+    case "kuess":
+    HELPCHECK("kuess");
+    if (ghost())
+      Return("Als Geist kannst Du leider niemanden kuessen.\n");
+    ParseRest(str);
+    if (!who)
+      Return("Wen willst Du kuessen?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Da hast Du aber Schwierigkeiten... Du gibst es schliesslich auf.",
+      "Nix. Absolut nix. Kuesse lieber Lebewesen - die reagieren\n"
+        +"wenigstens (und sei es, dass sie Dich fressen...)."))
+        return 1;
+    out_sel="Du kuesst@@ wen@@@@adverb@@.";
+    out_vic="@@name@@ kuesst Dich@@adverb@@.";
+    out_oth="@@name@@ kuesst@@ wen@@@@adverb@@.";
+    FeelIt();
+    if (who->QueryProp(P_FROG)&&QueryProp(P_LEVEL)>who->QueryProp(P_LEVEL)) {
+      tell_room(environment(this_player()),"PLOPP!\n");
+      write("Huch! Du wirst auf einmal so gruen und klein und kriegst auf\n"
+        +"einmal furchtbar Hunger auf Fliegen und so...\n");
+      who->Message("Auf einmal wird die Welt um Dich wieder so klein, wie sie\n"
+        +" frueher mal war - und vor Dir sitzt ein kleiner gruener Frosch.\n");
+      say(who->name(WER)+" steht auf einmal da und schaut dumm aus der "
+        +"Waesche. Dafuer fehlt\njetzt seltsamerweise "+capname()
+        +". Die Gesamtzahl an kleinen gruenen\nFroeschen im Raum hat sich "
+        +"jedoch nicht geaendert...\n",({who,this_player()}));
+      who->SetProp(P_FROG,0);
+      SetProp(P_FROG,1);
+    }
+    return 1;
+
+    /**************** Kuscheln ***************/
+    case "kuschel":
+    case "kuschl":
+    HELPCHECK("kuschel");
+    GHOSTCHECK("Dazu bist Du als Geist viel zu kalt und gar "
+        +"schroecklich anzusehen.\n",
+      gname()+" scheint Anwandlungen zu haben, sich an jemand "
+        +"ankuscheln zu wollen.\nEntsetzt springen alle zurueck, weil "
+        +"dazu ist er doch zu kalt und schroecklich\nanzusehen.\n", 0);
+    ParseRest(str);
+    if (!who)
+      Return("An wen willst Du Dich ankuscheln?\n");
+    out_sel="Du kuschelst Dich@@adverb@@ an @@wen@@ an.";
+    out_vic="@@name@@ kuschelt sich@@adverb@@ an Dich an.";
+    out_oth="@@name@@ kuschelt sich@@adverb@@ an @@wen@@ an.";
+    return FeelIt();
+
+    /**************** Lachen ***************/
+    case "lach":
+    HELPCHECK("lach");
+    GHOSTCHECK("Du lachst mit hohler Stimme. Den Umstehenden (sind doch welche"
+        +" da, oder?)\nlaeuft es kalt den Ruecken runter.\n",
+      gname()+" lacht mit hohler Stimme.\nDir laeuft es eiskalt den Ruecken"
+        +" runter.\n", 0);
+    if (!str)  {
+      out_sel="Du brichst vor Lachen zusammen.";
+      out_oth="@@name@@ bricht vor Lachen zusammen.";
+    }
+    else  {
+      ParseRest(str);
+      if (for_all)  {
+        out_sel="Du lachst@@adverb@@ ueber @@alle@@.";
+        out_vic="@@name@@ lacht@@adverb@@ ueber @@alle@@.";
+        return MixedOut(WEN);
+      }
+      if (!who && !adverb)
+        Return("Lache wie, lache ueber wen?\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Lach Dich doch nicht selber aus - das machen schon andere...",
+        "Gelacht wird nur ueber Lebewesen (die koennen sich drueber aergern)."))
+          return 1;
+      out_sel="Du lachst@@adverb@@"+(who?" ueber@@ wen@@":"")+".";
+      if (who) out_vic="@@name@@ lacht@@adverb@@ ueber Dich.";
+      out_oth="@@name@@ lacht@@adverb@@"+(who?" ueber@@ wen@@":"")+".";
+    }
+    return FeelIt();
+
+    /**************** Laecheln ***************/
+    case "laechel":
+    case "laechl":
+    HELPCHECK("laechel");
+    if (ghost()) {
+      write("Du laechelst innerlich.\n");
+      return 1;
+    }
+    if(!str) {
+      out_sel="Du laechelst.";
+      out_oth="@@name@@ laechelt.";
+    }
+    else  {
+      ParseRest(str);
+      if (for_all)  {
+        out_sel="Du laechelst @@alle@@@@adverb@@ an.";
+        out_vic="@@name@@ laechelt @@alle@@@@adverb@@ an.";
+        return MixedOut(WEN);
+      }
+      if (!who && !adverb && str)
+        Return("Wie oder wen?\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Musst schon jemand anders anlaecheln.",
+        "Bitte ein Lebewesen anlaecheln."))
+          return 1;
+      out_sel="Du laechelst@@ wen@@@@adverb@@"+(who ? " an." : ".");
+      if (who) out_vic="@@name@@ laechelt Dich@@adverb@@ an.";
+      out_oth="@@name@@ laechelt@@ wen@@@@adverb@@"+(who ? " an." : ".");
+    }
+    return FeelIt();
+
+    /**************** Liebe ***************/
+    /* These lines appear Courtesy of Angus@MorgenGrauen. So long, and thanks */
+    /* for all the fish, errr, text, Angus :) */
+    case "lieb":
+    HELPCHECK("lieb");
+    if (ghost())
+      Return("Auf diese Freuden musst Du als Geist leider verzichten.\n");
+    ParseRest(str);
+    if (!who)
+      Return("Wen hast Du lieb?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Ja, ich weiss, Du magst Dich, aber das musst Du nicht zur Schau"
+        +"stellen.",
+      "Du entwickelst seltsame Neigungen, finde ich."))
+        return 1;
+    str1=(who->QueryProp(P_GENDER)==FEMALE ? "ihr" : "ihm");
+    /* old version:
+      out_sel="Du fluesterst @@wem@@@@adverb@@ liebevolle Worte ins Ohr.";
+      out_vic=gname()+" fluestert Dir@@adverb@@ liebevolle Worte ins Ohr.";
+      out_oth=gname()+" fluestert@@adverb@@ sanfte Worte zu @@wem@@.";
+    */
+    out_sel="Du schliesst die Augen, schmiegst Dich eng an @@wen@@ und gibst"
+      +LF+str1+" einen zaertlichen und leidenschaftlichen Kuss.\n"
+      +"Um Dich herum versinkt die Welt und Du glaubst, auf Wolken zu "
+      +"schweben.";
+    out_vic="@@name@@ drueckt Dich zaertlich an sich und gibt Dir\n"
+      +"einen zaertlichen und leidenschaftlichen Kuss. Du schliesst die\n"
+      +"Augen und traeumst ein wenig......Du schwebst auf Wolken direkt\n"
+      +"in den siebten Himmel.";
+    out_oth="Du schaust dezent weg, als sich @@name@@ und "+who->name()
+      +" verliebt in die Arme\nsinken.";
+    return FeelIt();
+
+    /**************** Loben ***************/
+    case "lob":
+    HELPCHECK("lob");
+    if (!str)
+      Return("Wen oder was willst Du loben?\n");
+    ParseRest(str);
+    if (who==ME)  {
+      ofoo=clone_object("/items/furz");
+      ofoo->set_furzer(this_player());
+      ofoo->set_eigenlob();
+      ofoo->move(environment(this_player()));
+      //DEBUG Furz zum Eigenlob patchen :>
+      out_sel="Du lobst Dich selber@@adverb@@. Die Folgen kennst Du ja...";
+      out_oth="@@gname@@ lobt sich selber@@adverb@@, mit den bekannten Folgen.";
+    } else if (who) {
+      out_sel="Du lobst @@wen@@@@adverb@@.";
+      out_vic="@@gname@@ lobt Dich@@adverb@@.";
+      out_oth="@@gname@@ lobt @@wen@@@@adverb@@.";
+    } else  {
+      out_sel="Du lobst "+str+".";
+      out_oth="@@gname@@ lobt "+str+".";
+    }
+    return FeelIt();
+
+    /**************** Moppern ***************/
+    case "mopper":
+    HELPCHECK("mopper");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Moppere wie?\n");
+    out_sel="Du mopperst@@adverb@@.";
+    out_oth="@@gname@@ moppert@@adverb@@.";
+    return FeelIt();
+
+    /**************** Mustern ***************/
+    case "muster":
+    HELPCHECK("muster");
+    ParseRest(str);
+    if (!who)
+      Return("Mustere wen?\n");
+    out_sel="Du musterst @@wen@@@@adverb@@.";
+    out_vic="@@gname@@ mustert Dich@@adverb@@.";
+    out_oth="@@gname@@ mustert @@wen@@@@adverb@@.";
+    return FeelIt();
+
+    /**************** Nicken ***************/
+    case "ja":
+    case "nick":
+    HELPCHECK("nick");
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du nickst @@alle@@@@adverb@@ zu.";
+      out_vic="@@gname@@ nickt @@alle@@@@adverb@@ zu.";
+      return MixedOut(WEM);
+    }
+    if (str && !who && !adverb)
+      Return("Nicke wie oder wem zu oder wem wie zu?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Du willst Dir selber zunicken? Lieber nicht, das sieht so albern aus.",
+      "Hm. Nix passiert. Von Lebewesen bekommt man meistens mehr Feedback."))
+        return 1;
+    out_sel="Du nickst@@ wem@@@@adverb@@"
+      +(who ? " zu." : (adverb ? "." : " zustimmend."));
+    if (who) out_vic="@@gname@@ nickt Dir@@adverb@@ zu.";
+    out_oth="@@gname@@ nickt@@ wem@@@@adverb@@"
+      +(who ? " zu." : (adverb ? "." : " zustimmend."));
+    return FeelIt();
+
+    /**************** Niesen ***************/
+    case "nies":
+    HELPCHECK("nies");
+    if (ghost())
+      Return("Du hast keine Nase mehr, in der es Dich jucken koennte...\n");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Niese wie?\n");
+    out_sel="Haaaaaa-tschi! Gesundheit!"+(adverb ? " Du niest@@adverb@@." : "");
+    out_oth="Haaaaaa-tschi! @@name@@ niest@@adverb@@.";
+    return FeelIt();
+
+    /**************** Ohrfeigen ***************/
+    case "gib":
+    HELPCHECK("gib");
+    if (!str)
+      Return("Gib wem was?\n");
+    if (sscanf( str,"%s ohrfeige",str1)==0)
+      return 0;
+    ParseRest(str, ({"ohrfeige", "eine ohrfeige"}));
+    if (for_all)  {
+      out_sel="Du verpasst @@alle@@@@adverb@@ eine Ohrfeige.";
+      out_vic="@@name@@ verpasst @@alle@@@@adverb@@ eine Ohrfeige.";
+      return MixedOut(WEM);
+    }
+    if (!who)
+      Return("Gib wem eine Ohrfeige?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Dazu sind Dir Deine Backen doch zu schade.",
+      "Du wirst doch nichts schlagen, was sich nicht wehren kann?"))
+        return 1;
+    GHOSTCHECK("Deine Hand saust mit voller Wucht durch dein Opfer durch!",
+      gname()+" will "+who->name(WEM)+" eine Ohrfeige geben - aber die Hand\n"
+        +"saust mit voller Wucht durch das Opfer durch!", 0);
+    out_sel="Du verpasst @@wem@@@@adverb@@ eine schallende Ohrfeige.";
+    out_vic="@@name@@ verpasst Dir@@adverb@@ eine Watsche, dass Dir Hoeren "
+      +"und Sehen vergeht.";
+    out_oth="@@name@@ verpasst @@wem@@@@adverb@@ eine schallende Ohrfeige.";
+    return FeelIt();
+
+    /**************** Pfeifen ***************/
+    case "pfeif":
+    HELPCHECK("pfeif");
+    GHOSTCHECK("Es kommt leider nur (nicht mal heisse) Luft, aber kein "
+        +"Pfiff.\n",
+      gname()+" spitzt den Mund und pustet angestrengt. Nichts passiert.\n", 0);
+    ParseRest(str, "nach");
+    if (str && !who && !adverb)
+      Return("Pfeife wie? Pfeife wem nach? Haeh?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Was willst Du denn damit ausdruecken? Das gibt fuer mich keinen Sinn.",
+      "Ich habe keine Lust dazu."))
+        return 1;
+    out_sel="Du pfeifst@@ wen@@@@adverb@@"
+      +(who ? " nach." : (adverb ? "." : " anerkennend."));
+    if (who) out_vic="@@name@@ pfeift Dir@@adverb@@ nach.";
+    out_oth="@@name@@ pfeift@@ wen@@@@adverb@@"
+      +(who ? " nach." : (adverb ? "." :" anerkennend."));
+    return FeelIt();
+
+    /**************** Philosophieren ***************/
+    case "philosophier":
+    HELPCHECK("philosophier");
+    ParseRest(str);
+    out_sel="Du philosophierst"+(adverb ? "@@adverb@@." :
+      (str ? " ueber "+str+"." : "."));
+    out_oth="@@gname@@ philosophiert"+(adverb ? "@@adverb@@." :
+      (str ? " ueber "+str+"." : "."));
+    return FeelIt();
+
+    /**************** (Nase) Putzen ***************/
+    case "putz":
+    HELPCHECK("putz");
+    if (ghost())
+      Return("Nix da zum Putzen, so nebuloes, wie Du bist.\n");
+    ParseRest(str, ({"nase", "die nase"}));
+    if (str && str!="nase" && !adverb)
+      Return("Putze Deine Nase wie?\n");
+    out_sel="Du putzt Deine Nase@@adverb@@.";
+    out_oth="@@name@@ putzt@@adverb@@ "+QPP(FEMALE,WEN)+" Nase.";
+    return FeelIt();
+
+    /**************** Quaken ***************/
+    case "quak":
+    HELPCHECK("quak");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Quake wie?\n");
+    sfoo="";
+    flag=QueryProp(P_FROG)&&!ghost();
+    for (t_g=0; t_g<=random(flag ? 4 : 2); t_g++)  {
+      sfoo+=(flag ? " Qu" : " kw");
+      for (t_n=0; t_n<=random(flag ? 10 : 5); t_n++)
+        sfoo+="aA"[random(1)..random(1)];
+      sfoo+="k";
+    }
+    if (!flag)
+      sfoo=lower_case(sfoo);
+    else
+      sfoo+="!";
+    out_sel="Du quakst"+(adverb ? "@@adverb@@" : (flag ? " aus voller Kehle"
+      : " in etwa wie ein Frosch"))+":"+sfoo;
+    out_oth="@@gname@@ quakt"+(adverb ? "@@adverb@@" : (flag ? " aus voller Kehle"
+      : " in etwa wie ein Frosch"))+":"+sfoo;
+    return FeelIt();
+
+    /**************** Quietschen ***************/
+    case "quietsch":
+    case "quiek":
+    HELPCHECK("quiek");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Quietsche wie?\n");
+    out_sel="Du quietschst"+(adverb ? "@@adverb@@." : " vergnuegt.");
+    out_oth="@@gname@@ quietscht"+(adverb ? "@@adverb@@." : " vergnuegt.");
+    return FeelIt();
+
+    /**************** Raeuspern ***************/
+    case "raeusper":
+    HELPCHECK("raeusper");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Hm? Wie meinen?\n");
+    out_sel="Du raeusperst Dich@@adverb@@.";
+    out_oth="@@gname@@ raeuspert sich@@adverb@@.";
+    return FeelIt();
+
+    /**************** Reiben ***************/
+    case "reib":
+    HELPCHECK("reib");
+    if (ghost())
+      Return("Du hast nichts zum Reiben, aber auch gar nichts.\n");
+    if (str && (sscanf(str,"%s die Augen",sfoo)==1 || sscanf(str,"%s Augen",sfoo)==1))
+      str=sfoo;
+    else if (str && (sscanf(str,"%s die Haende",sfoo)==1
+    ||sscanf(str,"%s Haende",sfoo)==1))  {
+      flag=2;
+      str=sfoo;
+    }
+    if (str=="") str=0;
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Reibe wie die "+(flag==2 ? "Haende" : "Augen")+"?\n");
+    out_sel="Du reibst Dir"+(adverb ? "@@adverb@@"
+      : (flag==2 ? " vergnuegt" : " muede"))+" die "
+      +(flag==2 ? "Haende." : "Augen.");
+    out_oth="@@name@@ reibt sich"+(adverb ? "@@adverb@@"
+      : (flag==2 ? " vergnuegt" : " muede"))+" die "
+      +(flag==2 ? "Haende." : "Augen.");
+    return FeelIt();
+
+    /**************** Rotfln ***************/
+    case "rotfl":
+    HELPCHECK("rotfl");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Rotfl wie?\n");
+    out_sel="Du rotflst@@adverb@@.";
+    out_oth="@@gname@@ rotflt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Ruelpsen ***************/
+    case "ruelps":
+    HELPCHECK("ruelps");
+    GHOSTCHECK("Ein leichter Windhauch entfaehrt Deinem Mund, mehr nicht.\n",
+      "Dem Mund des Geistes von "+capname()
+        +" entfaehrt ein leichtes Lueftchen.\n", 0);
+    if (!str)  {
+      out_sel="BOOOOEEERRRRPP!  Entschuldige dich gefaelligst!";
+      out_oth="@@name@@ ruelpst unanstaendig.";
+    }
+    else  {
+      ParseRest(str);
+      if (!adverb)  {
+        write("Ruelpse wie (schlimm genug, dass Du Dich nicht beherrschen "
+          +"kannst!)?\n");
+        return 1;
+      }
+      out_sel="Du ruelpst@@adverb@@. Schaem Dich!";
+      out_oth="@@name@@ ruelpst@@adverb@@ und wird nicht mal rot dabei.";
+    }
+    return FeelIt();
+  }
+
+  switch (vb)  {
+    /**************** Runzeln ***************/
+    case "runzel":
+    case "runzl":
+    HELPCHECK("runzel");
+    if (ghost())
+      Return("DAS geht als Geist nun wirklich nicht.\n");
+    ParseRest(str,"stirn");
+    if (str && !adverb)
+      Return("Runzle die Stirn wie?\n");
+    out_sel="Du runzelst@@adverb@@ die Stirn.";
+    out_oth="@@name@@ runzelt@@adverb@@ die Stirn.";
+    return FeelIt();
+
+    /**************** Sabbere ***************/
+    case "sabber":
+    HELPCHECK("sabber");
+    sfoo=ghost() ? "schleim" : "sabber";
+    ParseRest(str);
+    if (str && !adverb && !who)
+      Return("Sabber wie oder wen an?\n");
+    out_sel="Du "+sfoo+"st@@ wen@@@@adverb@@ "
+      +(who ? "an." : "auf den Boden.");
+    if (who) out_vic="@@gname@@ "+sfoo+"t Dich@@adverb@@ an.";
+    out_oth="@@gname@@ "+sfoo+"t@@ wen@@@@adverb@@ "
+      +(who ? "an." : "auf den Boden.");
+    return FeelIt();
+
+    /**************** Schaemen ***************/
+    case "schaem":
+    HELPCHECK("schaem");
+    ParseRest(str);
+    if (str && !adverb && lower_case(str)!="dich")
+      Return("Schaeme Dich wie?\n");
+    out_sel="Du schaemst Dich@@adverb@@.";
+    out_oth="@@gname@@ schaemt sich@@adverb@@.";
+    return FeelIt();
+
+#ifdef SCHAU_AN
+    /**************** Schau an ***************/
+    case "schau":
+    HELPCHECK("schau");
+    if (!str || old_explode(str, " ")[sizeof(old_explode(str, " "))]!="an")
+      return 0;
+    ParseRest(str, "an");
+    if (!who)
+      Return("Schau wen an?\n");
+    out_sel="Du schaust @@wen@@@@adverb@@ an.";
+    out_vic="@@gname@@ schaut Dich@@adverb@@ an.";
+    out_oth="@@gname@@ schaut @@wen@@@@adverb@@ an.";
+    return FeelIt();
+#endif
+
+    /**************** Schluchzen ***************/
+    case "schluchz":
+    HELPCHECK("schluchz");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schluchze wie?\n");
+    out_sel="Du schluchzt"+(adverb ? "@@adverb@@." : " herzzerreissend.");
+    out_oth="@@gname@@ schluchzt"
+      +(adverb ? "@@adverb@@." : " herzzerreissend.");
+    return FeelIt();
+
+    /**************** Schmollen ***************/
+    case "schmoll":
+    HELPCHECK("schmoll");
+    GHOSTCHECK("Du schwebst beleidigt in die Ecke.\n",
+      gname()+" schwebt beleidigt in die Ecke und schmollt.\n", 0);
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schmolle wie?\n");
+    out_sel="Du schmollst@@adverb@@.";
+    out_oth="@@name@@ geht in die Ecke und schmollt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Schmunzeln ***************/
+    case "schmunzel":
+    case "schmunzl":
+    HELPCHECK("schmunzel");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schmunzle wie?\n");
+    out_sel="Du schmunzelst@@adverb@@.";
+    out_oth="@@gname@@ schmunzelt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Schnalzen ***************/
+    case "schnalz":
+    HELPCHECK("schnalz");
+    ParseRest(str, ({"zunge","mit zunge", "mit der zunge"}));
+    out_sel="Du schnalzt@@adverb@@ mit der Zunge.";
+    out_oth="@@gname@@ schnalzt@@adverb@@ mit der Zunge.";
+    return FeelIt();
+
+    /**************** Schnauben ***************/
+    case "schnaub":
+    HELPCHECK("schnaub");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schnaube wie?\n");
+    out_sel="Du schnaubst"+(adverb ? "@@adverb@@." : " entruestet.");
+    out_oth="@@gname@@ schnaubt"+(adverb ? "@@adverb@@." : " entruestet.");
+    return FeelIt();
+
+    /**************** Schnaufen ***************/
+    case "schnauf":
+    HELPCHECK("schnauf");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schnaufe wie?\n");
+    out_sel="Du schnaufst"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
+    out_oth="@@gname@@ schnauft"+(adverb ? "@@adverb@@." : " vor Anstrengung.");
+    return FeelIt();
+
+    /**************** Schnippen ***************/
+    case "schnipp":
+    case "schnipps":
+    HELPCHECK("schnipp");
+    GHOSTCHECK("Du schaffst es nicht, weil die Finger durcheinander durch "
+        +"gehen.\n",
+      gname()+" versagt beim Schnippen - die Finger\ngehen durcheinander "
+        +"durch.\n", 0);
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schnippe wie?\n");
+    out_sel="Du schnippst@@adverb@@ mit deinen Fingern.";
+    out_oth="@@name@@ schnippt@@adverb@@ mit den Fingern.";
+    return FeelIt();
+
+    /**************** Schnarchen ***************/
+    case "schnarch":
+    HELPCHECK("schnarch");
+    if (ghost())
+      Return("Ich glaube, da fehlen Dir irgendwie die physischen "
+        +"Voraussetzungen dazu.\n");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schnarche wie?\n");
+    out_sel=(str ? "Zzzzzzzzzzz..." : "Du schnarchst@@adverb@@.");
+    out_oth="@@name@@ schnarcht "+(str ? "@@adverb@@." : "laut.");
+    return FeelIt();
+
+    /**************** Schniefen ***************/
+    case "snief":
+    case "schnief":
+    HELPCHECK("schnief");
+    GHOSTCHECK("Du schniefst ganz leise.\n",
+      gname()+" schnieft ganz leise.\n", 0);
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schniefe wie?\n");
+    out_sel="Du schniefst@@adverb@@.";
+    out_oth="@@name@@ schnieft@@adverb@@.";
+    return FeelIt();
+
+    /**************** Schnurren ***************/
+    case "schnurr":
+    HELPCHECK("schnurr");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Wie willst Du schnurren?\n");
+    out_sel="MMMMIIIIIAAAAAAUUUUUUUU! Du schnurrst"
+      +(adverb ? "@@adverb@@." : " zufrieden.");
+    out_oth="@@gname@@ schnurrt"+(adverb ? "@@adverb@@." : " zufrieden.");
+    return FeelIt();
+
+    /**************** Schreien ***************/
+    case "schrei":
+    HELPCHECK("schrei");
+    GHOSTCHECK("AAAAIIIIIIIIIIIEEEEEEEEEEEEEEEEEEEEEEEEEE! Ja, nur Geister "
+        +"koennen so schreien!\n",
+      gname()+" schreit - das Blut gefriert fast in deinen Ader!\n", 0);
+    if (!str)  {
+      out_sel="AUUUAAAHHHHHH!!!!";
+      out_oth="@@name@@ schreit laut!";
+    }
+    else  {
+      ParseRest(str);
+      if (!who && !adverb)
+        Return("Schreien - wie denn? Oder wen denn anschreien?\n");
+      out_sel="Du schreist@@ wen@@@@adverb@@"+(who ? " an" : "")+".";
+      if (who) out_vic="@@name@@ schreit Dich@@adverb@@ an.";
+      out_oth="@@name@@ schreit@@ wen@@@@adverb@@"+(who? " an" : "")+".";
+    }
+    return FeelIt();
+
+    /**************** Schuetteln ***************/
+    case "schuettel":
+    case "schuettl":
+    HELPCHECK("schuettel");
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du schuettelst @@alle@@@@adverb@@ die Haende.";
+      out_vic="@@gname@@ schuettelt @@alle@@@@adverb@@ die Haende.";
+      return MixedOut(WEM);
+    }
+    if (str && !who && !adverb)
+      Return("Schuettle wie? Schuettle wem die Hand?\n");
+    if(!who) {
+      out_sel="Du schuettelst Dich@@adverb@@.";
+      out_oth="@@gname@@ schuettelt sich@@adverb@@.";
+    }
+    else  {
+      if (CheckLife(0,NOT_DEAD,
+        "", "Noe, das mach ich nur mit Lebewesen."))
+          return 1;
+      if (who == this_player())  {
+        out_sel="Du hebst"+(adverb ? "@@adverb@@" : " triumphierend")
+          +" Deine Haende ueber den Kopf und schuettelst sie.";
+        out_oth="@@gname@@ hebt"+(adverb ? "@@adverb@@" : " triumphierend")
+          +" die Haende ueber den Kopf\nund schuettelt sie.";
+      }
+      else  {
+        out_sel="Du schuettelst@@ wem@@@@adverb@@ die Haende.";
+        if (ghost()) out_sel+="\nNaja, Du versuchst es wenigstens - "
+          +"immer diese durchlaessigen Haende...";
+        out_vic="@@gname@@ schuettelt Dir@@adverb@@ die Haende.";
+        if (ghost()) out_vic+="\nNaja, Du versuchst es wenigstens - "
+          +"immer diese durchlaessigen Haende...";
+        out_oth="@@gname@@ schuettelt@@ wem@@@@adverb@@ die Haende.";
+        if (ghost()) out_oth+="\nNaja, Du versuchst es wenigstens - "
+          +"immer diese durchlaessigen Haende...";
+      }
+    }
+    return FeelIt();
+
+    /**************** Schweigen ***************/
+    case "schweig":
+    HELPCHECK("schweig");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schweige wie?\n");
+    out_sel="Du schweigst@@adverb@@.";
+    out_oth="@@gname@@ schweigt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Seufzen ***************/
+    case "seufz":
+    HELPCHECK("seufz");
+    GHOSTCHECK("Du seufzt geisterhaft.\n",
+      gname()+" seufzt geisterhaft. Naja, wie denn sonst?\n", 0);
+    ParseRest(str);
+    if (!adverb && str)
+      Return("Seufze wie?\n");
+    out_sel="Du seufzst@@adverb@@.";
+    out_oth="@@name@@ seufzt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Singen ***************/
+    case "sing":
+    HELPCHECK("sing");
+    if (!str) {
+      out_sel="Oh sole mio!";
+      out_oth="@@gname@@ singt irgendwas italienisches.";
+    }
+    else  {
+      ParseRest(str);
+      out_sel="Du singst@@adverb@@"+(adverb ? "." : " '"+capitalize(str)+"'.");
+      out_oth="@@gname@@ singt@@adverb@@"+(adverb ? "." : " '"
+        +capitalize(str)+"'.");
+    }
+    return FeelIt();
+
+    /**************** Sniffen ***************/
+    case "sniff":
+    HELPCHECK("sniff");
+    ParseRest(str);
+    if (str && !adverb && !who)
+      Return("Sniffe wie?\n");
+    out_sel="Du sniffst"+(who ? " @@wen@@" : "")
+      +(adverb ? "@@adverb@@" : " traurig")+(who ? " an." : ".");
+    if (who) out_vic="@@gname@@ snifft Dich"
+      +(adverb ? "@@adverb@@" : " traurig")+" an.";
+    out_oth="@@gname@@ snifft"+(who ? " @@wen@@" : "")
+      +(adverb ? "@@adverb@@" : " traurig")+(who ? " an." : ".");
+    return FeelIt();
+
+    /**************** Spucken ***************/
+    case "spuck":
+    HELPCHECK("spuck");
+    GHOSTCHECK("Du bringst nicht genug Spucke zusammen.\n",
+      gname()+" stellt gerade fest, dass man ohne Spucke nicht\n"
+        +"spucken kann.\n", 0);
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Spucke wen wie an?\n");
+    if (who && CheckLife(NOT_SELF,0,
+      "Hast Du Dich so schlecht benommen? Lass es lieber bleiben."))
+        return 1;
+    out_sel="Du spuckst@@ wen@@@@adverb@@ "+(who ? "an." : "auf den Boden.");
+    if (who) out_vic="@@name@@ spuckt Dich@@adverb@@ an.";
+    out_oth="@@name@@ spuckt@@ wen@@@@adverb@@ "
+      +(who ? "an." : "auf den Boden.");
+    return FeelIt();
+
+    /**************** Stampfen ***************/
+    case "stampf":
+    HELPCHECK("stampf");
+    ParseRest(str, "auf");
+    out_sel="Du stampfst@@adverb@@ mit dem Fuss auf.";
+    out_oth="@@gname@@ stampft@@adverb@@ mit dem Fuss auf.";
+    return FeelIt();
+
+    /**************** Starren ***************/
+    case "starr":
+    HELPCHECK("starr");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Starre wie bzw. wen an?\n");
+    if (who && CheckLife(NOT_SELF,0,
+      "Wie willst Du in Deine eigenen Augen starren? "
+        +"(Spiegel gelten nicht...)"))
+        return 1;
+    out_sel="Du starrst"+(!str ? " ins Leere." : (who ? "@@ wen@@" : "")
+      +(adverb ? "@@adverb@@" : " vertraeumt")+(who ? " an." : "."));
+    if (who) out_vic="@@gname@@ starrt"+(adverb ? "@@adverb@@" : " tief")
+      +" in Deine Augen.";
+    out_oth="@@gname@@ starrt"+(!str ? " ins Leere." : (who ? "@@ wen@@" : "")
+      +(adverb ? "@@adverb@@" : " vertraeumt")+(who ? " an." : "."));
+    return FeelIt();
+
+    /**************** Staunen ***************/
+    case "staun":
+    HELPCHECK("staun");
+    if (!str)  {
+      out_sel="Du bist erstaunt.";
+      out_oth="@@gname@@ ist erstaunt.";
+    }
+    else  {
+      ParseRest(str, "ueber");
+      if (!who && !adverb)
+        Return("Bla bla. Wenn Du nach staune noch was tippst, sollte "
+          +"das ein\nLebewesen sein.\n");
+      if (who == this_player())  {
+        out_sel="Du staunst@@adverb@@ ueber Dich selber.";
+        out_oth="@@gname@@ staunt@@adverb@@ ueber sich selber.";
+      }
+      else  {
+        out_sel="Du staunst@@adverb@@"+(who ? " ueber @@wen@@." : ".");
+        if (who) out_vic="@@gname@@ staunt@@adverb@@ ueber Dich.";
+        out_oth="@@gname@@ staunt@@adverb@@"+(who ? " ueber @@wen@@." : ".");
+      }
+    }
+    return FeelIt();
+
+    /**************** Stieren ***************/
+    case "stier":
+    HELPCHECK("stier");
+    GHOSTCHECK("Du stierst mit hohlem Blick in die Gegend.\n",
+      gname()+" stiert mit hohlem Blick in die Gegend.\n", 0);
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Stiere wie oder wen an?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Du kannst Dich nicht selber anstieren.",
+      "Bitte nur Lebewesen anstieren."))
+        return 1;
+    out_sel="Du stierst@@ wen@@@@adverb@@"
+      +(who ? " an." : " in der Gegend herum.");
+    if (who) out_vic="@@gname@@ stiert Dich@@adverb@@ an.";
+    out_oth="@@gname@@ stiert@@ wen@@@@adverb@@"
+      +(who ? " an." : " in der Gegend herum.");
+    return FeelIt();
+
+    /**************** Stimme zu ***************/
+    case "stimm":
+    HELPCHECK("stimm");
+    ParseRest(str, "zu");
+    if (str && !who && !adverb)
+      Return("Stimme wem zu?\n");
+    out_sel="Du stimmst@@ wem@@@@adverb@@ zu.";
+    if (who) out_vic="@@gname@@ stimmt Dir@@adverb@@ zu.";
+    out_oth="@@gname@@ stimmt@@ wem@@@@adverb@@ zu.";
+    return FeelIt();
+
+    /**************** Stoehnen ***************/
+    case "stoehn":
+    HELPCHECK("stoehn");
+    GHOSTCHECK("Du stoehnst schauderlich.\n",
+      gname()+" stoehnt schauderlich. Zum Glueck\nhast Du ziemlich "
+        +"gute Nerven.\n", 0);
+    ParseRest(str);
+    if (!adverb && str)
+      Return("Wie willst Du stoehnen?\n");
+    out_sel="Du stoehnst@@adverb@@.";
+    out_oth="@@name@@ stoehnt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Stossen ***************/
+    case "stoss":
+    HELPCHECK("stoss");
+    ParseRest(str);
+    if (!who)
+      Return("Stosse wen?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Was soll der Unsinn? Lass das!",
+      "Das gibt nur bei Lebewesen Sinn."))
+        return 1;
+    GHOSTCHECK("Dein Ellenbogen versinkt in "+who->name(WEM)+".\n",
+      gname()+" will "+who->name(WEM)+" in die Rippen stossen, aber "
+        +QPP(MALE,WER,PLURAL)+"\nEllenbogen verteilen keinen Stoss, "
+        +"sondern versinken.\n",
+      gname()+" will Dich in die Rippen stossen, aber "+QPP(MALE,WER,PLURAL)
+        +" Ellenbogen versinken.\n");
+    out_sel="Du stoesst@@ wen@@@@adverb@@ in die Rippen.";
+    out_vic="@@name@@ stoesst Dir@@adverb@@ in die Rippen.";
+    out_oth="@@name@@ stoesst@@ wen@@@@adverb@@ in die Rippen.";
+    return FeelIt();
+
+    /**************** Streicheln ***************/
+    case "streichel":
+    case "streichl":
+    HELPCHECK("streichel");
+    ParseRest(str);
+    if (!who)
+      Return("Streichle wen?\n");
+    if (for_all)  {
+      out_sel="Du streichelst @@alle@@@@adverb@@.";
+      out_vic="@@gname@@ streichelt @@alle@@@@adverb@@.";
+      return MixedOut(WEN);
+    }
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Lass Dich von anderen streicheln.",
+      "Ich streichle nur Lebewesen."))
+        return 1;
+    GHOSTCHECK("Du willst "+who->name(WEN,2)+" streicheln, aber Deine "
+      +"Haende koennen\nnichts beruehren.\n",
+    gname()+" will "+who->name(WEN,2)+" streicheln, aber diese\n"
+      +"Geisterhaende koennen halt nix beruehren...\n",
+    gname()+" will Dich streicheln, scheitert aber wie so oft an\n"
+      +"diesen dummen durchlaessigen Geisterhaenden.\n");
+    out_sel="Du streichelst @@wen@@@@adverb@@.";
+    out_vic="@@name@@ streichelt Dich@@adverb@@.";
+    out_oth="@@name@@ streichelt @@wen@@@@adverb@@.";
+    return FeelIt();
+
+    /**************** Stupsen ***************/
+    case "stups":
+    HELPCHECK("stups");
+    if (ghost())
+      Return("Das geht nicht ohne Ellenbogen,..\n");
+    ParseRest(str);
+    if (!who)
+      Return("Stupse wen an?\n");
+    out_sel="Du stupst @@wen@@@@adverb@@ an.";
+    out_vic="@@name@@ stupst Dich@@adverb@@ an.";
+    out_oth="@@name@@ stupst @@wen@@@@adverb@@ an.";
+    return FeelIt();
+
+    /**************** Stutzen ***************/
+    case "stutz":
+    HELPCHECK("stutz");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Stutze wie?\n");
+    out_sel="Du stutzt@@adverb@@.";
+    out_oth="@@gname@@ stutzt@@adverb@@.";
+    return FeelIt();
+
+    /**************** Taetscheln ***************/
+    case "taetschel":
+    case "taetschl":
+    HELPCHECK("taetschel");
+    ParseRest(str);
+    if (!who)
+      Return("Taetschle wen?\n");
+    if (CheckLife(NOT_SELF,NOT_DEAD,
+      "Das sieht zu doof aus, das mache ich nicht.",
+      "Ich taetschle nur Lebewesen."))
+        return 1;
+     GHOSTCHECK("Du willst "+who->name(WEN)+" taetscheln - aber Deine "
+        +"Haende gehen\nglatt durch den Kopf durch.\n",
+      gname()+" will "+who->name(WEN)+" den Kopf taetscheln, aber "
+        +"die Geister-\nhaende gehen glatt durch den Kopf durch.\n",
+      gname()+" will Deinen Kopf taetscheln, aber diese Geisterhaende "
+        +"gehen\nglatt durch Deinen Kopf durch - Du hast ein seltsames "
+        +"Gefuehl dabei.\n");
+    out_sel="Du taetschelst @@wem@@@@adverb@@ den Kopf.";
+    out_vic="@@name@@ taetschelt Dir@@adverb@@ den Kopf.";
+    out_oth="@@name@@ taetschelt @@wem@@@@adverb@@ den Kopf.";
+    return FeelIt();
+
+    /**************** Tanzen ***************/
+    case "tanz":
+    HELPCHECK("tanz");
+    GHOSTCHECK("Du tanzt den klassischen GeisterTanz (tm).\n",
+      gname()+" tanzt den klassischen GeisterTanz (tm).\n", 0);
+    if (!str) {
+      out_sel="Kommst Du Dir nicht irgendwie bloed vor? Du tanzt "
+        +"den Ententanz.";
+      out_oth="@@name@@ tanzt den Ententanz.";
+    }
+    else  {
+      taenze=({"Walzer","Polka","Rumba","Tango","Cha cha cha","Foxtrott",
+        "Mambo","Salsa","Slowfox","Breakdance","Pogo","Merengue",
+        "Rock'n'Roll","Ballett","Regentanz","Hexentanz"});
+      ParseRest(str,"mit");
+      if (!who)
+        Return("Mit wem willst Du tanzen?\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Mit Dir selber kannst Du nicht tanzen.",
+        "Keine Reaktion - will wahrscheinlich nicht tanzen."))
+          return 1;
+      ifoo=random(sizeof(taenze));
+      out_sel="Du tanzt@@adverb@@ mit @@wem@@ eine Runde "+taenze[ifoo]+".";
+      out_vic="@@name@@ reisst Dich an sich und tanzt@@adverb@@ eine Runde "
+        +taenze[ifoo]+" mit Dir.";
+      out_oth="@@name@@ schnappt sich @@wen@@ und die beiden tanzen"
+        +"@@adverb@@ eine Runde "+taenze[ifoo]+".";
+    }
+    return FeelIt();
+
+    /**************** Traeumen ***************/
+    case "traeum":
+    HELPCHECK("traeum");
+    if (!str)
+      Return("Traeume wovon oder von wem?\n");
+    ParseRest(str);
+    out_sel="Du traeumst"+(who ? "@@adverb@@ von @@wem@@."
+      : (adverb ? "@@adverb@@." : " "+str+"."));
+    if (who) out_vic="@@gname@@ traeumt@@adverb@@ von Dir.";
+    out_oth="@@gname@@ traeumt"+(who ? "@@adverb@@ von @@wem@@."
+      : (adverb ? "@@adverb@@." : " "+str+"."));
+    return FeelIt();
+
+    /**************** Treten (tritt) ***************/
+    case "tritt":
+    case "tret":
+    HELPCHECK("tritt");
+    if (!str)  {
+      GHOSTCHECK("Dein Fuss faehrt durch die beruehmte langvergessene "
+          +"unsichtbare Schildkroete\nhindurch.\n",
+        gname()+" will die beruehmte langvergessene unsichtbare\n"
+          +"Schildkroete treten, aber "+QPP(MALE,WER)
+          +" Fuss faehrt durch sie hindurch.\n", 0);
+      out_sel="Du trittst die beruehmte langvergessene unsichtbare "
+        +"Schildkroete.";
+      out_oth="@@gname@@ tritt die beruehmte langvergessene unsichtbare "
+        +"Schildkroete.";
+    }
+    else  {
+      ParseRest(str);
+      if (for_all)  {
+        out_sel="Du trittst @@alle@@@@adverb@@. Solltest Du nicht langsam "
+          +"an Flucht denken?";
+        out_vic="@@name@@ tritt @@alle@@@@adverb@@. Traut sich ganz "
+          +"schoen was!";
+        return MixedOut(WEN);
+      }
+      if (!who && !adverb)
+        Return("Wenn Du schon was nach tritt tippst, dann sag mir, wen "
+          +"oder wie ich das soll.\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Du schaffst es nicht, Dir selber in den Hintern zu treten.",
+        "Tote Sachen tritt man nicht auch noch!"))
+          return 1;
+      if (who)  {
+        out_sel="Du trittst@@ wen@@@@adverb@@.";
+        if (who) out_vic="@@gname@@ tritt Dich@@adverb@@.";
+        out_oth="@@gname@@ tritt@@ wen@@@@adverb@@.";
+      }
+      else  {
+        out_sel="Du trittst die beruehmte langvergessene unsichtbare "
+          +"Schildkroete@@adverb@@.";
+        out_oth="@@gname@@ tritt die beruehmte langvergessene unsichtbare "
+          +"Schildkroete\n@@adverb@@.";
+      }
+    }
+    return FeelIt();
+
+    /**************** Troesten ***************/
+    case "troest":
+    HELPCHECK("troest");
+    ParseRest(str);
+    if (!who)
+      Return("Wen willst Du troesten?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Trost musst Du bei jemand anders suchen.",
+      "Das Teil musst Du nicht troesten, das fuehlt nix."))
+        return 1;
+    out_sel="Du troestest@@ wen@@@@adverb@@.";
+    out_vic="@@gname@@ troestet Dich@@adverb@@.";
+    out_oth="@@gname@@ troestet@@ wen@@@@adverb@@.";
+    return FeelIt();
+
+    /**************** Umarmen ***************/
+    case "umarm":
+    HELPCHECK("umarm");
+    ParseRest(str);
+    if (!who)
+      Return("Wen willst Du umarmen?\n");
+    if (who && CheckLife(0,NOT_DEAD,0,"Bitte umarme nur Lebewesen."))
+      return 1;
+    if (ghost() && CheckLife(NOT_SELF,0,
+      "Du kannst Dich als Geist nicht selber waermen."))
+        return 1;
+    str1=who->QueryProp(P_NAME);
+    if(pointerp(str1))str1=(string)str1[0]; // Rumata
+    str2=who->QueryPronoun(WEN);
+    GHOSTCHECK("Du willst "+str1+" umarmen, aber Deine Arme gehen durch "
+        +str2+" durch.\n",
+      gname()+" will "+str1+" umarmen, aber "+QPP(MALE,WER,PLURAL)
+        +" Arme gehen\ndurch "+str2+" hindurch.\n",
+      gname()+" will Dich umarmen, aber "+QPP(MALE,WER,PLURAL)
+        +" Arme gehen durch Dich hindurch.\n");
+    if (for_all)  {
+      out_sel="Du umarmst @@alle@@@@adverb@@.";
+      out_vic="@@name@@ umarmt @@alle@@@@adverb@@.";
+      return MixedOut(WEN);
+    }
+    if (who==this_player())  {
+      out_sel="Du legst Deine Arme um Dich und waermst Dich "
+        +"ein bisschen selber.";
+      out_oth="@@name@@ legt "+QPP(MALE,WER,PLURAL)
+        +" Arme um sich und waermt sich ein bisschen selber.";
+    }
+    else  {
+      out_sel="Du umarmst@@ wen@@@@adverb@@.";
+      out_vic="@@name@@ umarmt Dich@@adverb@@.";
+      out_oth="@@name@@ umarmt@@ wen@@@@adverb@@.";
+    }
+    return FeelIt();
+
+    /**************** Verfluchen ***************/
+    case "verfluch":
+    HELPCHECK("verfluch");
+    if (!str)
+      Return("Wen oder was willst Du denn verfluchen?\n");
+    ParseRest(str);
+    if (!who)  {
+      out_sel="Du verfluchst "+str+".";
+      out_oth="@@gname@@ verflucht "+str+".";
+    }
+    else  {
+      if (who==this_player())
+        Return("Sich selber verflucht man besser nicht...\n");
+      if (!adverb)  {
+        flag=sscanf(str, "%s %s", str1,str2);
+        out_sel="Du verfluchst@@ wen@@"+(flag==2 ? " "+str2 : "")+".";
+        out_vic="@@gname@@ verflucht Dich"+(flag==2?" "+str2 : "")+".";
+        out_oth="@@gname@@ verflucht@@ wen@@"+(flag==2 ? " "+str2 : "")+".";
+      }
+      else  {
+        out_sel="Du verfluchst@@ wen@@@@adverb@@.";
+        out_vic="@@gname@@ verflucht Dich@@adverb@@.";
+        out_oth="@@gname@@ verflucht@@ wen@@@@adverb@@.";
+      }
+    }
+    return FeelIt();
+
+    /**************** Verneigen / Verbeugen ***************/
+    case "verneig":
+    case "verbeug":
+    HELPCHECK("verneig");
+    GHOSTCHECK("Du verneigst Dich ein bisschen heftig - Dein Kopf taucht "
+        +"kurz in den Boden.\n",
+      gname()+" verneigt sich. Ein bisschen heftig - "+QPP(MALE,WER)
+        +" Kopf\ntaucht kurz in den Boden ein.\n", 0);
+    if ((!str) || (str == "dich")) {
+      out_sel="Du verneigst Dich vor den Anwesenden.";
+      out_oth="@@name@@ verneigt sich anmutig.";
+    }
+    else  {
+      ParseRest(str);
+      if (for_all)  {
+        out_sel="Du verneigst Dich@@adverb@@ vor @@alle@@.";
+        out_vic="@@name@@ verneigt sich@@adverb@@ vor @@alle@@.";
+        return MixedOut(WEM);
+      }
+      if (!who && !adverb)
+        Return("Verneige dich irgendwie oder vor jemandem.\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Wie willst Du das denn schaffen?",
+        "Vor Sachen wird hier nicht verneigt, klar?\n"))
+          return 1;
+      out_sel="Du verneigst Dich@@adverb@@"+(who ? " vor" : "")+"@@ wem@@.";
+      if (who ) out_vic="@@name@@ verneigt sich@@adverb@@ vor Dir.";
+      out_oth="@@name@@ verneigt sich@@adverb@@"+(who ? " vor" : "")
+        +"@@ wem@@.";
+    }
+    return FeelIt();
+
+    /**************** Verneinen ***************/
+    case "nein":
+    case "noe":
+    HELPCHECK("nein");
+    GHOSTCHECK("Du schuettelst Deinen Kopf so heftig, dass er kurz "
+        +"davonschwebt.\n",
+      gname()+" schuettelt heftig den Kopf.\nSo heftig, dass dieser "
+        +"kurz davonschwebt und wieder eingefangen werden muss.\n", 0);
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Schuettle wie den Kopf?\n");
+    out_sel="Du schuettelst@@adverb@@ den Kopf.";
+    out_oth="@@name@@ schuettelt@@adverb@@ den Kopf.";
+    return FeelIt();
+
+    /**************** Wackeln ***************/
+    case "wackel":
+    case "wackl":
+    HELPCHECK("wackel");
+    if (ghost())
+      Return("Da gibt es nichts mehr, womit Du wackeln kannst.\n");
+    if (str)
+      if (strstr(str, "mit ")==0)
+        sscanf(str, "mit %s", sfoo);
+      else if (strstr(str,"mit ")>0)  {
+        sscanf(str, "%s mit %s", sfoo, sfoo);
+        flag=1;
+      }
+    if (sfoo=="") sfoo=0;
+    ParseRest(str, (sfoo ? (flag ? " mit " : "mit ")+sfoo : 0));
+    if (str && !adverb && !sfoo)
+      Return("Wackle wie oder womit?\n");
+    out_sel="Du wackelst@@adverb@@ mit "+(sfoo ? sfoo+"." : "dem Hintern.");
+    out_oth="@@name@@ wackelt@@adverb@@ mit "
+      +(sfoo ? sfoo+"." : QPP(MALE,WEM)+" Hintern.");
+    return FeelIt();
+
+    /**************** Waelzen ***************/
+    case "waelz":
+    HELPCHECK("waelz");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Waelze Dich wie auf dem Boden?\n");
+    out_sel="Du waelzt Dich"+(adverb ? "@@adverb@@" : " vor Lachen")
+      +" auf dem Boden.";
+    out_oth="@@gname@@ waelzt sich"+(adverb ? "@@adverb@@" : " vor Lachen")
+      +(ghost() ? " im" : " auf dem")+" Boden.";
+    return FeelIt();
+
+    /**************** Warten ***************/
+    case "wart":
+    HELPCHECK("wart");
+    ParseRest(str);
+    if (!str)  {
+      out_sel="Du tippst mit dem Fuss auf den Boden.";
+      out_oth="@@gname@@ tippt mit dem Fuss auf den Boden.";
+    } else if (!who && adverb)  {
+      out_sel="Du wartest@@adverb@@.";
+      out_oth="@@gname@@ wartet@@adverb@@.";
+    } else  {
+      out_sel="Du wartest@@adverb@@ auf "+(who ? "@@wen@@." : str+".");
+      if (who) out_vic="@@gname@@ wartet@@adverb@@ auf Dich.";
+      out_oth="@@gname@@ wartet@@adverb@@ auf "+(who ? "@@wen@@." : str+".");
+    }
+    return FeelIt();
+
+#ifdef WECKE
+    /**************** Wecken ***************/
+    case "weck":
+    HELPCHECK("weck");
+    if (ParseRemote(str))
+      return 1;
+//    ParseRest(str);
+    if (!who)
+      Return("Wen willst Du wecken?\n");
+    if (sscanf(str, "%s %s", sfoo, sfoo)==2)
+      flag=1;
+    out_sel="Dein Wecker klingelt bei @@wem@@@@adverb@@"
+      +(adverb ? "." : (flag ? ": "+sfoo : "."));
+    out_vic=" "+name(WESSEN)+" Wecker klingelt bei Dir@@adverb@@"
+      +(adverb ? "." : (flag ? ": "+sfoo : "."));
+    out_oth="@@gname@@ wirft "+QPP(MALE, WEN)
+      +" Wecker@@adverb@@ nach @@wem@@.";
+          if (!who->QueryProp(P_VISUALBELL))
+         out_vic[0]=7; // chr(7)==BEL
+      else out_vic=out_vic[1..];
+    return FeelIt();
+#endif
+
+    /**************** Weinen ***************/
+    case "wein":
+    HELPCHECK("wein");
+    GHOSTCHECK("Es reicht leider nur fuer ein paar winzige Nebelwoelkchen, "
+        +"nicht fuer Traenen.\n",
+      gname()+" verzieht das Gesicht und ein paar winzige Nebel-\n"
+        +"woelkchen entfernen sich von seinen \"Augen\".\n", 0);
+    if (!str)  {
+      out_sel="Waaaaah! Du weinst bitterlich.";
+      out_oth="@@name@@ bricht in Traenen aus und weint bitterlich.";
+    }
+    else  {
+      ParseRest(str);
+      if (!who && !adverb)
+        Return("Weine Dich irgendwie bei irgendwem aus, aber nicht so.\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Bei sich selber kann man sich so schlecht ausweinen.",
+        "Bei wem willst Du Dich ausweinen???"))
+          return 1;
+      if (who)  {
+        out_sel="Du weinst Dich@@adverb@@ bei@@ wem@@ aus.";
+        out_vic="@@name@@ weint sich@@adverb@@ bei Dir aus.";
+        out_oth="@@name@@ weint sich@@adverb@@ bei@@ wem@@ aus.";
+      }
+      else  {
+        out_sel="Du brichst in Traenen aus und weinst@@adverb@@.";
+        out_oth="@@name@@ bricht in Traenen aus und weint@@adverb@@.";
+      }
+    }
+    return FeelIt();
+
+    /**************** Winken ***************/
+    case "wink":
+    HELPCHECK("wink");
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du winkst @@alle@@@@adverb@@ zu.";
+      out_vic="@@name@@ winkt @@alle@@@@adverb@@ zu.";
+      return MixedOut(WEM);
+    }
+    if (!who && !adverb && str)
+      Return("Vielleicht solltest Du auch sagen, wem oder wie Du "
+        +"(zu)winken willst.\n");
+    if (who && CheckLife(NOT_SELF, NOT_DEAD,
+      "Wink Dir nicht selber zu.",
+      "Du musst schon einem Lebewesen zuwinken."))
+        return 1;
+    out_sel="Du winkst@@ wem@@@@adverb@@"+(who ? " zu" : "")+".";
+    if (who) out_vic="@@gname@@ winkt Dir@@adverb@@ zu.";
+    out_oth="@@gname@@ winkt@@ wem@@@@adverb@@"+(who ? " zu" : "")+".";
+    return FeelIt();
+
+    /**************** Wuergen ***************/
+    case "wuerg":
+    HELPCHECK("wuerg");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Wuerge wen oder wie?\n");
+    if (!who)  {
+      out_sel="Du faengst@@adverb@@ an zu wuergen.";
+      out_oth="@@gname@@ faengt@@adverb@@ an zu wuergen.";
+    } else if (CheckLife(NOT_SELF, NOT_DEAD,
+          "Du wuergst ein bischen an Dir rum. Dir wird schnell langweilig.",
+	  "Wuerg lieber ein Lebewesen.")) {
+      return 1;
+    } else {
+      out_sel="Du springst @@wen@@ an und faengst an, "+who->QueryPronoun(WEN)
+        +"@@adverb@@ zu wuergen.";
+      out_vic="@@gname@@ springt Dich auf einmal an und wuergt Dich@@adverb@@.";
+      out_oth="@@gname@@ springt auf einmal @@wen@@ an und wuergt "
+        +who->QueryPronoun(WEN)+"@@adverb@@.";
+    }
+    return FeelIt();
+
+    /**************** Wundern ***************/
+    case "wunder":
+    HELPCHECK("wunder");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Wie oder ueber wen willst Du Dich wundern?\n");
+    out_sel="Du wunderst Dich@@adverb@@"+(who ? " ueber @@wen@@." : ".");
+    if (who) out_vic="@@gname@@ wundert sich@@adverb@@ ueber Dich.";
+    out_oth="@@gname@@ wundert sich@@adverb@@"+(who ? " ueber @@wen@@." : ".");
+    return FeelIt();
+
+    /**************** Wuscheln ***************/
+    case "wuschel":
+    case "wuschl":
+    HELPCHECK("wuschel");
+    ParseRest(str);
+    if (!who)
+      Return("Wen willst Du denn wuscheln?\n");
+    if (CheckLife(0,NOT_DEAD,
+      "", "Hmm, sehr tot. Ne, lieber nicht."))
+        return 1;
+    if (who->QueryProp(P_FROG))  {
+      write("Du verwuschelst...  aeh... hm. Ein Frosch hat wohl nix "
+        +"zum Wuscheln.\n");
+      return 1;
+    };
+    GHOSTCHECK("Du willst "+who->name(WEN)+" wuscheln - aber Deine "
+        +"Haende gehen\nglatt durch den Kopf durch.\n",
+      gname()+" will "+who->name(WEN)+" den Kopf wuscheln, aber "
+        +"die Geister-\nhaende gehen glatt durch den Kopf durch.\n",
+      gname()+" will Dich wuscheln, aber diese Geisterhaende "
+        +"gehen\nglatt durch Deinen Kopf durch - Du hast ein seltsames "
+        +"Gefuehl dabei.\n");
+    if (member(({"highlander","boing","mieze","freund"}), who->query_real_name())>-1)
+      switch (who->query_real_name())  {
+        case "highlander": str1="Federn"; break;
+        case "freund"    :
+        case "mieze"     :
+        case "boing"     : str1="Fell"; break;
+      }
+    else if (who->is_class_member(({CL_DRAGON, CL_FISH, CL_REPTILE})))
+      str1="Schuppen";
+    else if (who->is_class_member(({CL_BIRD, "elster","greif"})))
+      str1="Federn";
+    else if (who->is_class_member(({CL_MAMMAL_LAND,CL_FELINE,"tiger",
+                                    "steinbeisser","knuddeleisbaer"})))
+      str1="Fell";
+    else str1="Haare";
+    out_sel="Du verwuschelst@@adverb@@ @@wessen@@ "+str1+".";
+    out_vic="@@name@@ verwuschelt@@adverb@@ Dein"
+      +(str1=="Fell" ? " " : "e ")+str1+".";
+    out_oth="@@name@@ verwuschelt@@adverb@@ @@wessen@@ "+str1+".";
+    return FeelIt();
+
+    /**************** Zitieren ***************/
+    case "zitier":
+    HELPCHECK("zitier");
+    ParseRest(str);
+    if (!str)
+      Return("Zitiere was oder wen womit?\n");
+    sfoo=implode(explode(str, " ")[1..], " ");
+    if (sfoo=="") sfoo=0;
+    if (who)  {
+      out_sel="Du zitierst @@wen@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
+      out_vic="@@gname@@ zitiert Dich"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
+      out_oth="@@gname@@ zitiert @@wen@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
+    }
+    else  {
+      sfoo=explode(str, "/")[0];
+      out_sel="Du zitierst@@adverb@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
+      out_oth="@@gname@@ zitiert@@adverb@@"+(sfoo ? ": \""+sfoo+"\"" : "")+".";
+    }
+    return FeelIt();
+
+    /**************** Zittern ***************/
+    case "zitter":
+    HELPCHECK("zitter");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Zittere wie?\n");
+    out_sel="Du zitterst"+(adverb ? "@@adverb@@." : " vor Angst.");
+    out_oth="@@gname@@ zittert"+(adverb ? "@@adverb@@." : " vor Angst.");
+    return FeelIt();
+
+    /**************** Schulterzucken ***************/
+    case "zuck" :
+    HELPCHECK("zuck");
+          if (str)
+      if (sscanf(str,"%s mit den schultern",sfoo))
+        str=sfoo;
+    else if (sscanf(str,"%s den schultern",sfoo))
+      str=sfoo;
+    else
+      if (sscanf(str,"%s schultern",sfoo))
+        str=sfoo;
+    if (str=="") str=0;
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Zucke wie mit den Schultern?\n");
+    out_sel="Du zuckst@@adverb@@ mit den Schultern.";
+    out_oth="@@gname@@ zuckt"+(adverb ? "@@adverb@@" : " ratlos")
+            +" mit den Schultern.";
+    return FeelIt();
+
+    /**************** Zwinkern ***************/
+    case "zwinker":
+    HELPCHECK("zwinker");
+    if (ghost())
+      Return("Vergiss es - das ist als Geist viel zu unauffaellig, als dass\n"
+        +"es andere Leute sehen wuerden.\n");
+    ParseRest(str);
+    if (str && !who && !adverb)
+      Return("Zwinkere wie? Zwinkere wem zu?\n");
+    if (who && CheckLife(NOT_SELF,NOT_DEAD,
+      "Du kannst Dir nicht selber zuzwinkern.",
+      "Wieso reagiert das Ding da nicht auf Dein Zwinkern? Ist es etwa tot?"))
+        return 1;
+    out_sel="Du zwinkerst@@ wem@@@@adverb@@"+(who ? " zu." : ".");
+    if (who) out_vic="@@name@@ zwinkert Dir@@adverb@@ zu.";
+    out_oth="@@name@@ zwinkert@@ wem@@@@adverb@@"+(who ? " zu." : ".");
+    return FeelIt();
+
+    /**************** Zunge rausstrecken ***************/
+    case "streck":
+    HELPCHECK("streck");
+    GHOSTCHECK("Sorry, Du hast keine Zunge zum Rausstrecken.\n","",0);
+    if (!str)
+      Return("Strecke was wie wem wo wann wieso?\n");
+    str=lower_case(str);
+    if (sscanf(str, "%s zunge raus", str1)!=1 &&
+    sscanf(str, "%s die zunge raus", str1)!=1)
+      Return("Strecke was wie wem wo wann wieso?\n");
+    ParseRest(str1);
+    if (for_all)  {
+      out_sel="Du streckst @@alle@@@@adverb@@ die Zunge raus.";
+      out_vic="@@name@@ streckt @@alle@@@@adverb@@ die Zunge raus.";
+      return MixedOut(WEM);
+    }
+    out_sel="Du streckst@@ wem@@@@adverb@@ die Zunge raus.";
+    if (who) out_vic="@@name@@ streckt Dir@@adverb@@ die Zunge raus.";
+    out_oth="@@name@@ streckt@@ wem@@@@adverb@@ die Zunge raus.";
+    return FeelIt();
+
+    // Spezialsachen - Geisterverben und Magierverben
+
+    /**************** Rasseln ***************/
+    case "rassel":
+    case "rassl":
+    if (!ghost())
+      Return("Das ist nicht Dein Fachgebiet - Du bist doch kein Geist!\n");
+    HELPCHECK("rassel");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Rassel wie?\n");
+    out_sel="Du rasselst"+(adverb ? "@@adverb@@" : " fuerchterlich")
+      +" mit einer rostigen Rasselkette,\n"
+      +"die Du auf einmal fuer einen Moment in der Hand haeltst.";
+    out_oth="@@gname@@ holt auf einmal eine rostige Rasselkette aus\n"
+      +"dem Nichts und faengt an,"+(adverb ? "@@adverb@@" : " fuerchterlich")
+      +" damit zu rasseln.\n"
+      +"Danach ist die Kette auf einmal wieder verschwunden.";
+    return FeelIt();
+
+    /**************** Heulen ***************/
+    case "heul":
+    if (!ghost())
+      Return("Lass das mal den Fachleuten (also den Geistern).\n");
+    HELPCHECK("heul");
+    ParseRest(str);
+    if (str && !adverb)
+      Return("Heule wie?\n");
+    out_sel="Du heulst"+(adverb ? "@@adverb@@." : " schauerlich.");
+    out_oth="@@gname@@ heult"+(adverb ? "@@adverb@@." : " schauerlich.");
+    return FeelIt();
+
+    /**************** Treten (tretet) ***************/
+    case "kick":
+    if (!IS_WIZARD(this_player()))
+      return 0;
+    HELPCHECK("kick");
+    if (!str)  {
+      GHOSTCHECK("Dein Fuss faehrt durch die beruehmte langvergessene "
+          +"unsichtbare Schildkroete\nhindurch.\n",
+        gname()+" will die beruehmte langvergessene unsichtbare\n"
+          +"Schildkroete treten, aber "+QPP(MALE,WER)
+          +" Fuss faehrt durch sie hindurch.\n", 0);
+      out_sel="Du tretest die beruehmte langvergessene unsichtbare "
+        +"Schildkroete.";
+      out_oth="@@name@@ tretet die beruehmte langvergessene unsichtbare "
+        +"Schildkroete.";
+    }
+    else  {
+      ParseRest(str);
+      if (for_all)  {
+        out_sel="Du tretest @@alle@@@@adverb@@.";
+        out_vic="@@name@@ tretet @@alle@@@@adverb@@.";
+        return MixedOut(WEN);
+      }
+      if (!who && !adverb)
+        Return("Wenn Du schon was nach kick tippst, dann sag mir wen "
+          +"oder wie ichdas soll.\n");
+      if (who && CheckLife(NOT_SELF,NOT_DEAD,
+        "Du schaffst es nicht, Dir selber in den Hintern zu treten.",
+        "Tote Sachen tritt man nicht auch noch!"))
+          return 1;
+      if (who)  {
+        out_sel="Du tretest@@ wen@@@@adverb@@.";
+        if (who) out_vic="@@gname@@ tretet Dich@@adverb@@.";
+        out_oth="@@gname@@ tretet@@ wen@@@@adverb@@.";
+      }
+      else  {
+        out_sel="Du tretest die beruehmte langvergessene unsichtbare "
+          +"Schildkroete@@adverb@@.";
+        out_oth="@@gname@@ tretet die beruehmte langvergessene unsichtbare "
+          +"Schildkroete\n@@adverb@@.";
+      }
+    }
+    return FeelIt();
+
+    /************* Nassspritzen ***************/
+    case "splash":
+    if (!IS_WIZARD(this_player()) &&
+    !(IS_SEER(this_player()) && present("SEHER\nspritzpistole",this_player())))
+      return 0;
+    HELPCHECK("splash");
+    ParseRest(str);
+    if (for_all)  {
+      out_sel="Du ziehst Deine Wasserpistole und spritzt @@alle@@@@adverb@@ "
+        +"patschnass.";
+      out_vic="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt\n"
+        +"@@alle@@@@adverb@@ patschnass.";
+      return MixedOut(WEN);
+    }
+    if (!who)
+      Return("Wen willst Du denn nassmachen?\n");
+    if (who == this_player())  {
+      out_sel="Sag mal, kommst Du Dir nicht ein bisschen doof vor?\n"
+        +"Du ziehst Deine Wasserpistole und spritzt Dich@@adverb@@ selber patschnass.";
+      out_oth="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
+        +"sich@@adverb@@ aus unerfindlichen Gruenden selbst patschnass.";
+    }
+    else  {
+      out_sel="Du ziehst Deine Wasserpistole und spritzt @@wen@@@@adverb@@ "
+        +"patschnass.";
+      out_vic="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
+        +"Dich@@adverb@@ patschnass.";
+      out_oth="@@gname@@ zieht "+QPP(FEMALE,WEN)+" Wasserpistole und spritzt "
+        +"@@wen@@@@adverb@@ patschnass.";
+    }
+    return FeelIt();
+
+    /**************** Anflammen ***************/
+    case "flam":
+    if (!IS_WIZARD(this_player()) &&
+    !(IS_SEER(this_player()) && present("SEHER\nflammenwerfer",this_player())))
+      return 0;
+    HELPCHECK("flame");
+    if (ghost())
+      Return("Du hast leider grade Deinen Flammenwerfer nicht dabei.\n");
+    ParseRest(str);
+    ifoo=!random(7);
+    if (for_all)  {
+      out_sel="Du holst aus Deinen tiefsten Taschen (oder was weiss denn "
+        +"ich woher) Deinen\nMorgenGrauen handgearbeiteten Mini-Flammenwerfer "
+        +"(tm), richtest ihn aus und...\n"
+        +(ifoo ? "schaust leicht frustriert auf das Streichholz, in das "
+          +"er sich verwandelt hat."
+        : "feuerst@@adverb@@ einen riesigen Feuerball auf @@alle@@ ab.\n"
+          +"Es riecht auf einmal so verbrannt hier...");
+      out_vic="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
+        +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn aus und...\n"
+        +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
+          +"sich das Ding verwandelt hat."
+        : "feuert@@adverb@@ einen riesigen Feuerball auf @@alle@@ ab.\n"
+          +"Dir wird so warm um's Herz...");
+      return MixedOut(WEN);
+    }
+    if (!who)
+      Return("Wen willst Du denn ankokeln?\n");
+    out_sel="Du holst aus Deinen tiefsten Taschen (oder was weiss denn "
+      +"ich woher) Deinen\nMorgenGrauen handgearbeiteten Mini-Flammenwerfer "
+      +"(tm), richtest ihn aus und...\n"
+      +(ifoo ? "schaust leicht frustriert auf das Streichholz, in das er "
+        +"sich verwandelt hat."
+      : "feuerst@@adverb@@ einen riesigen Feuerball auf @@wen@@ ab.\n"
+        +"Es riecht auf einmal so verbrannt hier...");
+    out_vic="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
+      +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn auf Dich "
+      +"aus und...\n"
+      +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
+        +"sich das Ding\nverwandelt hat."
+      : "feuert@@adverb@@ einen riesigen Feuerball auf Dich ab.\n"
+        +"Dir wird so warm ums Herz...");
+    out_oth="@@name@@ holt auf einmal irgendwoher einen MorgenGrauen "
+      +"handgearbeiteten\nMini-Flammenwerfer (tm), richtet ihn "
+      +"auf@@ wen@@ aus und...\n"
+      +(ifoo ? "schaut ziemlich frustriert auf das Streichholz, in das "
+        +"sich das Ding\nverwandelt hat."
+      : "feuert@@adverb@@ einen riesigen Feuerball auf@@ wen@@ ab.\nEs "
+        +"riecht auf einmal irgendwie verbrannt hier ...");
+    return FeelIt();
+
+    // Special 2: remote verbs
+
+    /**************** Remote knuddeln ***************/
+    case "rknuddel":
+    case "rknuddl":
+    HELPCHECK("rknuddel");
+    if (ParseRemote(str))
+      return 1;
+    if (!who)
+      Return("Knuddle wen?\n");
+    if (CheckLife(NOT_SELF,0,
+      "Das bringt doch nix, lass es halt.",
+      0))
+        return 1;
+    if (present(who, environment()))
+      Return("Wenn jemand neben Dir steht, nimm knuddel.\n");
+    out_sel="Du knuddelst @@wen@@@@adverb@@ aus der Ferne.";
+    out_vic="@@gname@@ knuddelt Dich@@adverb@@ aus der Ferne.";
+    return FeelIt();
+
+    /**************** Remote winken ***************/
+    case "rwink":
+    HELPCHECK("rwink");
+    if (ParseRemote(str))
+      return 1;
+    if (!who)
+      Return("Winke wem zu?\n");
+    if (CheckLife(NOT_SELF,0,
+      "Sehr witzig. Pah.", 0))
+        return 1;
+    if (present(who, environment()))
+      Return("Wenn jemand neben Dir steht, nimm wink.\n");
+    out_sel="Du winkst @@wem@@@@adverb@@ aus der Ferne zu.";
+    out_vic="@@gname@@ winkt Dir@@adverb@@ aus der Ferne zu.";
+    return FeelIt();
+
+    /**************** Verbenliste ***************/
+    case "verb":
+    case "verben":
+    HELPCHECK("verb");
+    More(SOULHELP->Help());
+    return 1;
+
+    /**************** Adverbienverwaltung ***************/
+    case "adverb":
+    case "adverben":
+    case "adverbien": {   /* Das ist die richtige Form, aber wer weiss das? */
+    string f1,f2;
+    HELPCHECK("adverb");
+    if (!str || str=="#" || str=="$")
+      return zeige_adverbs((str=="#" ? 1 : (str=="$" ? 2 : 0)));
+    if (sscanf(str, "%s %s", f1,f2)==2)  {
+      f1 = lower_case(f1); // kleingeschrieben speichern, spart Umwandlung
+      if (f1=="")
+        Return("Hm, da muss wohl ein Leerzeichen zu viel gewesen sein. Bitte "
+          +"nochmal,\naber ohne zuviele Leerzeichen.\n");
+      if (f1=="?")  {
+        f2 = lower_case(f2);
+        string match;
+        if ((match=QueryStdAdverbs()[f2] || plr_adverbs[f2]))
+          write("Die Abkuerzung "+f2+" gehoert zu dem Adverb:\n"+match+LF);
+        else
+          write("Diese Abkuerzung ist bisher nicht definiert.\n");
+        return 1;
+      }
+      if (QueryStdAdverbs()[f1])
+        Return("Die Standardabkuerzungen koennen nicht neu definiert "
+          +"werden.\n");
+      if (sizeof(plr_adverbs)>=100) 
+      {
+        write("Mehr als 100 eigene Adverbien kannst Du nicht definieren.\n");
+        return 1;
+      }
+      if (plr_adverbs[f1])  {
+        plr_adverbs[f1]=f2;
+        write("OK, Adverb mit der Abkuerzung \""+f1+"\" auf \""+f2
+          +"\" gesetzt.\n");
+      }
+      else  {
+        if (sizeof(f1) > 6)
+          Return("Die Abkuerzung ist zu lang, bitte nicht mehr als "
+            +"6 Zeichen.\n");
+        plr_adverbs[f1]=f2;
+        write("OK, neues Adverb \""+f2+"\" mit der Abkuerzung \""+f1+"\".\n");
+      }
+    }
+    else  {
+      str = lower_case(str);
+      if (QueryStdAdverbs()[str])
+        Return("Die Standardadverben koennen nicht geloescht werden.\n");
+      else if (!plr_adverbs[str])
+        Return("Du hast kein Adverb mit dieser Abkuerzung.\n"
+          +"Syntax: adverb, um die Adverbien anzuzeigen,\n"
+          +"        adverb #, um nur Deine Adverbien anzuzeigen,\n"
+          +"        adverb $, um nur die Standardadverbien anzuzeigen,\n"
+          +"        adverb ? <Abkuerzung>, um nachzusehen, ob <Abkuerzung> "
+            +"definiert ist,\n"
+          +"        adverb <Abkuerzung> <Adverb>, um der <Abkuerzung> das "
+            +"<Adverb>\n"
+          +"               zuzuordnen,\n"
+          +"        adverb <Abkuerzung>, um das Adverb mit der <Abkuerzung> "
+            +"zu loeschen,\n");
+      else  {
+        write("OK, Adverb \""+plr_adverbs[str]+"\" geloescht.\n");
+        plr_adverbs=m_copy_delete(plr_adverbs, str);
+      }
+    }
+    return 1; 
+    }
+  }
+  return(0);  //fallthrough
+}
+