/
LIB3/
LIB3/D/ADMIN/
LIB3/D/ADMIN/OBJ/
LIB3/D/ADMIN/ROOM/W/
LIB3/D/HOME/
LIB3/D/HOME/CITY/ARENA/
LIB3/D/HOME/CITY/ITEMS/
LIB3/D/HOME/CITY/POSTOFFI/
LIB3/DOC/
LIB3/GLOBAL/SPECIAL/
LIB3/GLOBAL/VIRTUAL/
LIB3/NET/
LIB3/NET/CONFIG/
LIB3/NET/DAEMON/CHARS/
LIB3/NET/GOPHER/
LIB3/NET/INHERIT/
LIB3/NET/OBJ/
LIB3/NET/SAVE/
LIB3/NET/VIRTUAL/
LIB3/OBJ/B_DAY/
LIB3/OBJ/HANDLERS/TERM_TYP/
LIB3/PLAYERS/B/
LIB3/PLAYERS/N/
LIB3/ROOM/
LIB3/SAVE/
LIB3/SAVE/BOARDS/
LIB3/SAVE/ENVIRON/
LIB3/SAVE/POST/
LIB3/STD/COMMANDS/SHADOWS/
LIB3/STD/CREATOR/
LIB3/STD/DOM/
LIB3/STD/EFFECTS/
LIB3/STD/EFFECTS/HEALING/
LIB3/STD/EFFECTS/OTHER/
LIB3/STD/EFFECTS/POISONS/
LIB3/STD/ENVIRON/
LIB3/STD/GUILDS/
LIB3/STD/LIQUIDS/
LIB3/STD/ROOM/
LIB3/STD/TRIGGER/SHADOW/
LIB3/W/
LIB3/W/BANNOR/
LIB3/W/NEWSTYLE/
inherit "std/object";

/*
**                 PLEASE NOTE !!!
**
**   If you are modifying this file, be sure
**   to define SOUL_ERROR_CHECKS in /global/psoul.c until
**   you are sure your modifications work.
**
**   ALSO NOTE:  If you do not log your modifications in soul.log, it
**   is more likely than not that your changes will be overwritten.
**
**
** MODIFICATIONS:
** 93-08-06: Phretys
**   Header comments were modified so that they're more understandable.
**   Lots of misspellings and typos have been fixed!
**   Long adjective/adverb/whatever lists have been alphabetized for easy
**     reference.
**   Commands ending in ! ? " . should no longer get a . appended to it.
**
** 93-08-30: Bannor
**   Merged new Discworld soul.c with current New Moon code.  I think
**   I got all the mods that Phretys did in this new code.  This mainly
**   adds functionality to soul_command() so that responsive monsters
**   will work.
*/

/*
 * Ok format...
 *
 * Non-targeted version (i.e. "sigh"):
 *   name ({ your str, everyone str })
 * Targeted-only version (i.e. "admire"):
 *   name ({ your str, target str, everyone str })
 * One or two args (i.e. "ack"):
 *   name ({ your str, everyone str, your str, target str, everyone str })
 *
 * For cases where the male and female versions are different:
 * [I don't think this case is even used -- Phretys]
 *   name ({ ({ as above }), ({ as above }) })
 * works on target's gender.  Should really be the two arg only version.
 * hmmm going to need some actual processing.
 *
 * 0 == search for living name only
 * 1 == search for extra arg and living name
 * 2 == search for living name and extra arg
 * 3 == search for extra arg only
 *
 *                                     Subject      Target
 *                                     ----------   ----------
 *                 Capitalized name:   $mcname$     $hcname$
 *                             Name:   $mname$      $hname$
 *   Subjective pronoun [he/she/it]:   $mpronoun$   $hpronoun$
 * Possessive pronoun [his/her/its]:   $mposs$      $hposs$
 *   Objective pronoun [him/her/it]:   $mobj$       $hobj$
 */

#define PUNCT ({ "!", "?", "\"", "." })
mapping soul_data;
string  lastarg, calc_long, global_adj;


mapping query_soul_data()
{
   return soul_data + ([ ]);
}


int query_soul_command( string str )
{
   if( !str )
      str = "I've got a luvverly bunch of coconuts";
   return !undefinedp( soul_data[ str ] );
}


create()
{
   ::create();
   set_name( "soul" );
   set_short( 0 );
   move( "/room/void" );
   global_adj = ",absentmindedly,angrily,brightly,broadly,carefully,"+
      "cattily,coldly,completely,condescendingly,crookedly,curtly,cutely,"+
      "demonically,differently,disappointedly,disturbingly,dreamily,"+
      "drunkenly,enthusiastically,excitedly,"+
      "faintly,fishily,fleetingly,frogily,garishly,happily,humbly,"+
      "idiotically,imaginatively,incandescently,innocently,insanely,"+
      "insolently,ironically,in triumph,"+
      "lazily,like a train,lividly,lopsidedly,loudly,lovingly,"+
      "maliciously,manically,maybe,nastily,nervously,"+
      "paradoxically,paranoiacally,patiently,plastically,pleasantly,"+
      "quietly,quirkily,radiantly,"+
      "sadistically,sadly,sarcastically,sardonically,seductively,"+
      "serenely,slightly,slowly,slyly,softly,spasmodically,strangely,"+
      "stupidly,sweetly,tightly,unbelievably,unconsciously,"+
      "viciously,warily,warmly,weakly,winningly,with forced patience,"+
      "with menace,wryly,gosh there are lots of arguments";
  soul_data =
([
  "911":     ({ 0, ({
      "You dial 911",
      "$mcname$ dials 911", }) }),
  "accuse":  ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "%s of %s" }), ({
      "$ifarg:You accuse $arg:#$$else$The butler did it!~$",
      "$mcname$ $ifarg:accuses $lastarg$$else$accuses the butler~$",
      "You accuse $hcname$$ifarg: of $arg:#$~$",
      "$mcname$ accuses you$ifarg: of $lastarg$~$",
      "$mcname$ accuses $hcname$$ifarg: of $lastarg$~$" }) }),
  "ack":     ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You ack$ifarg: $arg:carefully,happily,seductively$~$",
      "$mcname$ acks$ifarg: $lastarg$~$",
      "You ack$ifarg: $arg:carefully,happily,seductively$~$ at "+
        "$hcname$",
      "$mcname$ acks$ifarg: $lastarg$~$ at you",
      "$mcname$ acks$ifarg: $lastarg$~$ at $hcname$", }) }),
  "admire":  ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You admire $hcname$$ifarg: $arg:from afar,#$~$",
      "$mcname$ admires you$ifarg: $lastarg$~$",
      "$mcname$ admires $hcname$$ifarg: $lastarg$~$", }), }),
  "afk":     ({ ({ 3, "%s", 3, "for %s", 0, "%s", 2, "%s %s",
                   2, "%s for %s" }), ({
      "You say, \"I'll be away from the keyboard "+
        "$arg:for a while,#$...\"",
      "$mcname$ says, \"I'll be away from the keyboard "+
        "$lastarg$...\"",
      "You say, \"$hcname$, I'll be away from the keyboard "+
        "$arg:for a while,#$...\"",
      "$mcname$ says, \"$hcname$, I'll be away from the keyboard "+
        "$lastarg$...\"",
      "$mcname$ says, \"$hcname$, I'll be away from the keyboard "+
        "$lastarg$...\"" }) }),
  "agree":   ({ ({ 3, "%s", 0, "%s", 0, "with %s", 2, "%s %s",
                   2, "with %s %s", 1, "%s %s", 1, "%s with %s" }), ({
      "You agree $arg:wholeheartedly,partially,wearily$",
      "$mcname$ agrees $lastarg$",
      "You agree$ifarg: $arg:wholeheartedly,partially,wearily$~$"+
        " with $hcname$",
      "$mcname$ agrees$ifarg: $lastarg$~$ with you",
      "$mcname$ agrees$ifarg: $lastarg$~$ with $hcname$" }) }),
  "apologize":({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "to %s %s",
                    1, "%s %s", 1, "%s to %s" }), ({
      "You apologize $arg:profusely,carefully,curtly,drunkenly,"+
        "facetiously,fishily,happily,humbly,partially,"+
        "perfunctorily,pompously,professionally,reservedly,"+
        "sadly,slowly,spontaneously,sulkily,thoroughly,twice,"+
        "unhappily,unnecessarily,viciously,wearily,wholeheartedly$",
      "$mcname$ apologizes $lastarg$",
      "You apologize $arg:profusely,carefully,curtly,drunkenly,"+
        "facetiously,fishily,happily,humbly,partially,"+
        "perfunctorily,pompously,professionally,reservedly,"+
        "sadly,slowly,spontaneously,sulkily,thoroughly,twice,"+
        "unhappily,unnecessarily,viciously,wearily,wholeheartedly$"+
        " to $hcname$",
      "$mcname$ apologizes $lastarg$ to you",
      "$mcname$ apologizes $lastarg$ to $hcname$" }) }),
  "applaud": ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You applaud $arg:wholeheartedly,briefly,loudly,softly,vaguely$",
      "$mcname$ applauds $lastarg$",
      "You applaud $hcname$ $arg:wholeheartedly,briefly,loudly,softly,"+
        "vaguely$",
      "$mcname$ applauds you $lastarg$",
      "$mcname$ applauds $hcname$ $lastarg$" }) }),
  "astound": ({ ({ 0, "%s", 2, "%s with %s", 2, "%s %s" }), ({
      "You are astounded!",
      "$mcname$ is astounded!",
      "You astound $hcname$$ifarg: with your $arg:cleverness,stupidity,"+
        "thoughtfulness$~$!",
      "$mcname$ astounds you$ifarg: with $mposs$ $lastarg$~$!",
      "$mcname$ astounds $hcname$$ifarg: with $mposs$ $lastarg$~$" }) }),
  "back":    ({ ({ 0, "%s" }), ({
      "You say, \"I'm back!\"",
      "$mcname$ says, \"I'm back!\"",
      "You say, \"$hcname$, I'm back!\"",
      "$mcname$ says, \"$hcname$, I'm back!\"",
      "$mcname$ says, \"$hcname$, I'm back!\"" }) }),
  "bark":    ({ ({ 3, "%s", 3, "like a %s" }), ({
      "You bark like a $arg:dog,bull terrier,cat,german shepherd,"+
        "hunting dog,labrador,train,tree,wolf,something else that barks$",
      "$mcname$ barks like a $lastarg$", }) }),
  "bbl":     ({ ({ 0, "%s" }), ({
      "You say, \"I'll be back later!\"",
      "$mcname$ says, \"I'll be back later!\"",
      "You say, \"$hcname$, I'll be back later!\"",
      "$mcname$ says, \"$hcname$, I'll be back later!\"",
      "$mcname$ says, \"$hcname$, I'll be back later!\"" }) }),
  "beam":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You beam $arg:brightly,admiringly,ecstatically,fishily,happily,"+
        "strangely,like a train$",
      "$mcname$ beams $lastarg$",
      "You beam at $hcname$$ifarg: $arg:brightly,admiringly,"+
        "ecstatically,fishily,happily,strangely,like a train$~$",
      "$mcname$ beams at you$ifarg: $lastarg$~$",
      "$mcname$ beams at $hcname$$ifarg: $lastarg$~$", }) }),
  "beep":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s" }), ({
      "You beep $arg:happily,#$",
      "$mcname$ beeps $arg:happily,#$",
      "You beep $hcname$ $arg:on the nose,with your horn$",
      "$mcname$ beeps you $lastarg$",
      "$mcname$ beeps $hcname$ $lastarg$" }) }),
  "beg":     ({ ({ 3, "%s", 3, "like a %s", 0, "%s", 0, "at %s",
                   2, "%s %s", 2, "at %s %s", 2, "at %s like a %s",
                   1, "%s %s", 1, "%s at %s", 1, "like a %s at %s" }), ({
      "You beg like a $arg:dog,alsatian,banshee,beggar,bloodhound,"+
        "cannibal,cat,chicken,chihuahua,chimpanzee,cow,dingo,dolphin,"+
        "fish,frisbee,frog,german shepherd,husky,labrador,large bear,"+
        "lassie,librarian,noble man,poodle,orangutan,saint bernard,"+
        "train,virgin mary,wolf$",
      "$mcname$ begs like a $lastarg$",
      "You beg like a $arg:dog,alsatian,banshee,beggar,bloodhound,"+
        "cannibal,cat,chicken,chihuahua,chimpanzee,cow,dingo,dolphin,"+
        "fish,frisbee,frog,german shepherd,husky,labrador,large bear,"+
        "lassie,librarian,noble man,poodle,orangutan,saint bernard,"+
        "train,virgin mary,wolf$"+
        " at $hcname$",
      "$mcname$ begs like a $lastarg$ at you",
      "$mcname$ begs like a $lastarg$ at $hcname$", }) }),
  "belch":   ({ ({ 3, "%s" }), ({
      "You belch $arg:loudly,disgustingly,faintly,rudely$",
      "$mcname$ belches $lastarg$" }) }),
  "bing":    ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You bing $arg:happily,balefully,brightly,carefully,excitedly,"+
        "grumpily,joyfully,knowingly,loudly,nervously,quickly,"+
        "sadly,sagely,threateningly,uncertainly$",
      "$mcname$ bings $lastarg$",
      "You bing $arg:happily,balefully,brightly,carefully,excitedly,"+
        "grumpily,joyfully,knowingly,loudly,nervously,quickly,"+
        "sadly,sagely,threateningly,uncertainly$"+
        " at $hcname$",
      "$mcname$ bings $lastarg$ at you",
      "$mcname$ bings $lastarg$ at $hcname$" }) }),
  "bird":    ({ ({ 0, "%s" }), ({
      "You raise your middle finger and give $hcname$ the bird",
      "$mcname$ raises $mposs$ middle finger and gives you the bird",
      "$mcname$ raises $mposs$ middle finger and gives $hcname$ the "+
        "bird" }) }),
  "bite":    ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You bite yourself",
      "$mcname$ bites $mobj$self",
      "You bite $hcname$$ifarg: $arg:hard,carefully,casually,excitedly,"+
        "gently,happily,hungrily,like a dog,lovingly,mercilessly,"+
        "mischievously,nastily,objectively,pointlessly,politely,"+
        "professionally,refreshingly,ruthlessly,softly,sulkily,sweetly,"+
        "thoughtfully,uncertainly,wolfishly,"+
        "on the ankle,on the arm,on the ear,on the finger,on the leg,"+
        "on the neck,on the nose,on the toe$~$!",
      "$mcname$ bites you$ifarg: $lastarg$~$!",
      "$mcname$ bites $hcname$$ifarg: $lastarg$~$!", }) }),
  "blame":   ({ ({ 0, "%s", 2, "%s for %s", 2, "%s %s", 1, "%s %s" }), ({
      "You blame $ifarg:$hcname$ for $arg:#$$else$it all on $hcname$~$",
      "$mcname$ blames $ifarg:you for $lastarg$"+
        "$else$it all on you~$",
      "$mcname$ blames $ifarg:$hcname$ for $lastarg$"+
        "$else$it all on $hcname$~$", }), }),
  "bleah":   ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s at %s", 1, "%s %s" }), ({
      "You bleah$ifarg: $arg:disgustedly,resignedly,sadly,tiredly$~$",
      "$mcname$ bleahs$ifarg: $lastarg$~$",
      "You bleah$ifarg: $arg:disgustedly,resignedly,sadly,tiredly$~$"+
        " at $hcname$",
      "$mcname$ bleahs$ifarg: $lastarg$~$ at you",
      "$mcname$ bleahs$ifarg: $lastarg$~$ at $hcname$" }) }),
  "bleat":   ({ ({ 3, "%s", }), ({
      "You bleat $arg:like a lamb,helplessly,painfully,quietly,"+
        "rapidly,sadly,slowly,for breakfast$",
      "$mcname$ bleats $lastarg$" }), }),
  "bleed":   ({ ({ 3, "%s" }), ({
      "$ifarg:Your $arg:heart,leg,arm,head,ear,nose$ bleeds profusely"+
        "$else$You bleed~$",
      "$ifarg:$mcname$'s $lastarg$ bleeds profusely"+
        "$else$$mcname$ bleeds~$", }) }),
  "blink":   ({ ({ 3, "%s" }), ({
      "You blink$ifarg: $arg:carefully,owlishly,slowly,in disbelief$~$",
      "$mcname$ blinks$ifarg: $lastarg$~$" }) }),
  "blush":   ({ ({ 3, "%s" }), ({
      "You blush $arg:in embarrassment,comfortably,redly,slightly$",
      "$mcname$ blushes $lastarg$" }) }),
  "boggle":  ({ ({ 3, "%s", 0, "%s", 0, "at %s" }), ({
      "You boggle at $arg:the concept,#$",
      "$mcname$ boggles at $lastarg$",
      "You boggle at $hcname$",
      "$mcname$ boggles at you",
      "$mcname$ boggles at $hcname$", }) }),
  "bonk":    ({ ({ 0, "%s", 2, "%s %s", 2, "%s on %s",
                   2, "%s on the %s" }), ({
      "You bonk yourself on the head",
      "$mcname$ bonks $mobj$self on the head",
      "You bonk $hcname$ on the $arg:head,arm,cabbage$",
      "$mcname$ bonks you on the $lastarg$",
      "$mcname$ bonks $hcname$ on the $lastarg$" }) }),
  "bop":     ({ ({ 0, "%s" }), ({
      "You bop to the beat",
      "$mcname$ bops to the beat",
      "You bop $hcname$ on the head",
      "$mcname$ bops you on the head",
      "$mcname$ bops $hcname$ on the head" }) }),
  "bounce":  ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s",
                   1, "%s around %s" }), ({
      "$ifarg:You bounce around $arg:excitedly,fearfully,happily$"+
        "$else$You bounce around.\nB O I N G ! !~$",
      "$mcname$ bounces around$ifarg: $lastarg$~$",
      "You bounce around $hcname$"+
        "$ifarg: $arg:happily,carefully,excitedly,happily,joyfully,"+
        "once,sarcasticaly,slowly,suggestively,viciously,wildly$~$",
      "$mcname$ bounces around you$ifarg: $lastarg$~$",
      "$mcname$ bounces around $hcname$$ifarg: $lastarg$~$", }) }),
  "bow":     ({ ({ 3, "%s", 0, "%s", 0, "to %s", 2, "%s %s",
                   2, "to %s %s", 1, "%s %s", 1, "%s to %s" }), ({
      "You bow $arg:gracefully,clumsily,colorfully,deeply,dextrously,"+
        "disgustedly,flamboyantly,floridly,formally,hastily,"+
        "insolently,slightly,solemnly,wildly,with a flourish$",
      "$mcname$ bows $lastarg$",
      "You bow $arg:gracefully,clumsily,colorfully,deeply,dextrously,"+
        "disgustedly,flamboyantly,floridly,formally,hastily,"+
        "insolently,slightly,solemnly,wildly,with a flourish$"+
        " to $hcname$",
      "$mcname$ bows $lastarg$ to you",
      "$mcname$ bows $lastarg$ to $hcname$" }) }),
  "brb":     ({ ({ 0, "%s" }), ({
      "You hold up a finger and say, \"I'll be right back...\"",
      "$mcname$ holds up a finger and says, \"I'll be right back...\"",
      "You hold up a finger and say, \"$hcname$, I'll be right back...\"",
      "$mcname$ hold up a finger and says, \"$hcname$, I'll be right "+
        "back...\"",
      "$mcname$ hold up a finger and says, \"$hcname$, I'll be right "+
        "back...\"" }) }),
  "breakdance":({ 0, ({
      "You do a really complicated break-dance maneuver",
      "$mcname$ does a really complicated break-dance maneuver", }) }),
  "breathe": ({ ({ 3, "%s", }), ({
      "You breathe $arg:deeply,carefully,heatedly,heavily,nastily,once,"+
        "painfully,quickly,seductively,slowly$",
      "$mcname$ breathes $lastarg$", }) }),
  "bubble":  ({ ({ 0, "%s", 0, "at %s" }), ({
      "I'm forever blowing bubbles!",
      "$mcname$ starts to blow bubbles",
      "You blow bubbles at $hcname$",
      "$mcname$ blows bubbles at you",
      "$mcname$ blows bubbles at $hcname$" }) }),
  "burn":    ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You set fire to yourself",
      "$mcname$ sets fire to $mobj$self",
      "You set fire to $mhcname$ $arg:hair,leg,arm,nose,teeth,frog,carpet,"+
        "net lag,fish,invis,bed,ego,eyes,house,furniture,tongue,keyboard,"+
        "brain,code,ideas,hopes,dreams,cat,personality,desires,beliefs$",
      "$mcname$ sets fire to your $lastarg$",
      "$mcname$ sets fire to $mhcname$ $lastarg$", }), }),
  "burp":    ({ ({ 3, "%s" }), ({
      "You burp$ifarg: $arg:disgustingly,faintly,loudly,rudely$~$",
      "$mcname$ burps$ifarg: $lastarg$~$" }) }),
  "cackle":  ({ ({ 3, "%s" }), ({
      "You cackle $ifarg:$arg:despairingly,evilly,maniacally,"+
        "mischievously,nastily,like an old hag$"+
        "$else$with glee!~$",
      "$mcname$ $ifarg:cackles $lastarg$"+
        "$else$throws back $mposs$ head and cackles with glee!~$" }) }),
  "calm":    ({ ({ 0, "%s", 0, "%s down" }), ({
      "You calm down",
      "$mcname$ calms down",
      "You calm $hcname$ down",
      "$mcname$ calms you down",
      "$mcname$ calms down $hcname$", }) }),
  "caper":   ({ ({ 3, "%s", 3, "like a %s" }), ({
      "You caper around$ifarg: like a $arg:bimbo,blonde,blubbering idiot,"+
        "chicken,fool,frog on the run,gorilla,happy bum,jester,man,"+
        "madman,madperson,madwoman,maniac,seductress,woman$"+
        "$else$ madly~$",                /* giggle */
      "$mcname$ capers around$ifarg: like a $lastarg$$else$ madly~$", }) }),
  "caress":  ({ ({ 0, "%s", 2, "%s %s", }), ({
      "You caress $hcname$$ifarg: $arg:eagerly,gently,firmly,"+
        "lovingly,politely,reluctantly,seductively,sensually,slightly,"+
        "strangely,suggestively,vigorously,violently,vivaciously$"+
        "$else$ gently on $hposs$ cheek~$",
      "$mcname$ caresses you$ifarg: $lastarg$"+
        "$else$ gently on the cheek~$",
      "$mcname$ caresses $hcname$$ifarg: $lastarg$"+
        "$else$ gently on $hposs$ cheek~$", }) }),
  "challenge": ({ ({ 0, "%s", }), ({
      "Make your own challenges to $hcname$",
      "You turn $mcname$ into a fish",
      "$hcname$ turns $mcname$ into a fish", }) }),
  "chastise": ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You chastise $hcname$$ifarg: $arg:absolutely,argumentatively,"+
        "calmly,carefully,cunningly,destructively,eagerly,"+
        "enthusiasticaly,excitedly,firmly,imaginatively,insanely,"+
        "insistantly,irrationaly,loudly,lovingly,madly,offhandedly,"+
        "politely,rationaly,reluctantly,suggestively,thoughtlessly,"+
        "understandably,unexpectedly,unmercifully$~$",
      "$mcname$ chastises you$ifarg: $lastarg$~$",
      "$mcname$ chastises $hcname$$ifarg: $lastarg$~$", }), }),
  "cheer":   ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You cheer $ifarg:$arg:calmly,carefully,enthusiastically,"+
        "excitedly,happily,loudly,politely,quietly,unconvincingly,"+
        "slightly,up$"+
        "$else$wildly!~$",
      "$mcname$ cheers $ifarg:$lastarg$$else$wildly!~$",
      "You cheer $ifarg:$arg:enthusiastically at,calmly at,carefully at,"+
        "excitedly at,happily at,loudly at,politely at,quietly at,"+
        "slightly at,wildly at,unconvincingly at$$else$up~$ $hcname$",
      "$mcname$ cheers $ifarg:$lastarg$ you$else$you up~$",
      "$mcname$ cheers $ifarg:$lastarg$ $hcname$$else$you up~$", }) }),
  "choke":   ({ ({ 0, "%s" }), ({
      "You choke",
      "$mcname$ chokes",
      "You choke $hcname$!",
      "$mcname$ chokes you!",
      "$mcname$ chokes $hcname$$force#breathe pain#2$" }) }),
  "chortle": ({ ({ 3, "%s" }), ({
      "You chortle$ifarg: $arg:in joy$~$",
      "$mcname$ chortles$ifarg: $lastarg$~$", }), }),
  "chuckle": ({ ({ 3, "%s" }), ({
      "You chuckle $arg:politely,demonically,nastily$",
      "$mcname$ chuckles $lastarg$" }) }),
  "clap":    ({ ({ 3, "%s" }), ({
      "You clap your hands $arg:briefly,enthusiasticaly,halfheartedly,loudly$",
      "$mcname$ claps $mposs$ hands $lastarg$" }) }),
  "clasp":   ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You clasp$ifarg: $mhcname$ hand $arg:tightly,happily,loosely,"+
        "lovingly,passionately,prudently,seductively,wetly$"+
        "$else$ $hcname$~$",
      "$mcname$ clasps$ifarg: your hand $lastarg$$else$ you~$",
      "$mcname$ clasps$ifarg: $mhcname$ hand $lastarg$$else$ $hcname$~$",
    }), }),
  "click":   ({ ({ 3, "%s" }), ({
      "You click your $arg:fingers,heels,teeth$",
      "$mcname$ clicks $mposs$ $lastarg$", }), }),
  "collapse":({ ({ 3, "%s" }), ({
      "You collapse $arg:in a heap,from exhaustion,onto the floor$",
      "$mcname$ collapses $lastarg$" }), }),
  "comfort": ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You comfort $hcname$$ifarg: $arg:anxiously,carefully,completely,"+
        "delicately,eagerly,gently,halfheartedly,lovingly,"+
        "mischievously,sadly,sincerely,tenderly,twice,vaguely,"+
        "wholeheartly,in earnest,like someone else,with your frog$~$",
      "$mcname$ comforts you$ifarg: $lastarg$~$",
      "$mcname$ comforts $hcname$$ifarg: $lastarg$~$" }) }),
  "confess": ({ ({ 3, "%s" }), ({
      "You confess $ifarg:$arg:#$$else$to being a witch~$",
      "$mcname$ confesses $ifarg:$lastarg$$else$to being a witch!\n"+
        "Burn $mobj$!~$", }), }),
  "congrat": ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You$ifarg: $arg:heartily,warmly$~$ congratulate everyone",
      "$mcname$$ifarg: $lastarg$~$ congratulates everyone",
      "You$ifarg: $arg:heartily,warmly$~$ congratulate $hcname$",
      "$mcname$$ifarg: $lastarg$~$ congratulates you",
      "$mcname$$ifarg: $lastarg$~$ congratulates $hcname$" }) }),
  "congratulate": ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You$ifarg: $arg:heartily,warmly$~$ congratulate everyone",
      "$mcname$$ifarg: $lastarg$~$ congratulates everyone",
      "You$ifarg: $arg:heartily,warmly$~$ congratulate $hcname$",
      "$mcname$$ifarg: $lastarg$~$ congratulates you",
      "$mcname$$ifarg: $lastarg$~$ congratulates $hcname$" }) }),
  "cough":   ({ ({ 3, "%s" }), ({
      "You cough$ifarg: $arg:incessantly,noisily,up a lung$~$",
      "$mcname$ coughs$ifarg: $lastarg$~$" }) }),
  "cower":   ({ ({ 3, "%s" }), ({
      "You cower $arg:in fear,fearfully,nastily,pitifully,"+
        "shyly,slyly,in a corner,in shame$",
      "$mcname$ cowers $lastarg$", }), }),
  "cringe":  ({ ({ 3, "%s" }), ({
      "You cringe$ifarg: in $arg:terror,anticipation,disgust,"+
        "embarrassment,fear$~$",
      "$mcname$ cringes$ifarg: in $lastarg$~$" }) }),
  "croak":   ({ 0, ({
      "\"Ribbit!\"",
      "$mcname$ croaks, \"Ribbit!\"" }) }),
  "cross":   ({ ({ 3, "%s", 3, "my %s" }), ({
      "You cross your $arg:fingers,arms,eyes,heart,legs$",
      "$mcname$ crosses $mposs$ $lastarg$", }) }),
  "crowd":   ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "%s into %s",
                   1, "%s %s" }), ({
      "The crowd goes $arg:wild,#$",
      "The crowd goes $arg:wild,#$",
      "You crowd $hcname$ into $arg:a corner,#$",
      "$mcname$ crowds you into $lastarg$",
      "$mcname$ crowds $hcname$ into $lastarg$" }) }),
  "cry":     ({ 0, ({ "Waaahhhhhh!", "$mcname$ bursts into tears" }) }),
  "cuddle":  ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You cuddle $hcname$$ifarg: $arg:comfortingly,dreamily,happily,"+
        "innocently,lovingly,protectively,softly$~$",
      "$mcname$ cuddles you$ifarg: $lastarg$~$",
      "$mcname$ cuddles $hcname$$ifarg: $lastarg$~$" }) }),
  "curse":   ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s",  1, "%s at %s" }), ({
      "You curse$ifarg: $arg:loudly,rudely,strongly,unashamedly,#$~$",
      "$mcname$ curses$ifarg: $lastarg$~$",
      "You curse$ifarg: $arg:loudly,rudely,strongly,unashamedly,#$~$ at "+
        "$hcname$",
      "$mcname$ curses$ifarg: $lastarg$ at~$ you",
      "$mcname$ curses$ifarg: $lastarg$~$ at $hcname$" }) }),
  "curtsey": ({ ({ 3, "%s", 0, "%s", 0, "to %s", 0, "before %s",
                   2, "before %s %s", 2, "to %s %s", 2, "%s %s",
                   1, "%s to %s", 1, "%s before %s", 1, "%s %s" }), ({
      "You curtsy$ifarg: $arg:gracefully,humbly,quickly,low,slightly$~$",
      "$mcname$ curtsies$ifarg: $lastarg$~$",
      "You curtsy$ifarg: $arg:gracefully,humbly,quickly,low,slightly$~$"+
        " to $hcname$",
      "$mcname$ curtsies$ifarg: $lastarg$~$ before you",
      "$mcname$ curtsies$ifarg: $lastarg$~$ to $hcname$" }) }),
  "curtsy":  ({ ({ 3, "%s", 0, "%s", 0, "to %s", 0, "before %s",
                   2, "before %s %s", 2, "to %s %s", 2, "%s %s",
                   1, "%s to %s", 1, "%s before %s", 1, "%s %s" }), ({
      "You curtsy $arg:gracefully,humbly,low,quickly,slightly$",
      "$mcname$ curtsies $lastarg$",
      "You curtsy $arg:gracefully,humbly,low,quickly,slightly$"+
        " to $hcname$",
      "$mcname$ curtsies $lastarg$ before you",
      "$mcname$ curtsies $lastarg$ to $hcname$" }) }),
  "dance":   ({ ({ 0, "%s", 0, "with %s" }), ({
      "You do the disco duck.\nFeels silly, doesn't it?",
      "$mcname$ dances the disco duck",
      "You sweep $hcname$ across the dance floor",
      "$mcname$ sweeps you across the dance floor",
      "$mcname$ sweeps $hcname$ across the dance floor" }) }),
  "daydream": ({ ({ 3, "%s", 3, "of %s", }), ({
      "You daydream$ifarg: of $arg:#$~$",
      "$mcname$ daydreams$ifarg: of $lastarg$~$", }) }),
  "die":     ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You die $arg:an excruciating death,dramatically,gracefully,"+
        "laughing,painfully,pathetically,senselessly,slowly,stupidly,"+
        "suddenly,tragically,of anticipation,of boredom,of hunger$",
      "$mcname$ dies $lastarg$",
      "You die$ifarg: $arg:an excruciating death,dramatically,gracefully,"+
        "laughing,painfully,pathetically,senselessly,slowly,stupidly,"+
        "suddenly,tragically,of anticipation,of boredom,of hunger$~$"+
        " in $mhcname$ general direction",
      "$mcname$ dies$ifarg: $lastarg$~$ in your general direction",
      "$mcname$ dies$ifarg: $lastarg$~$ in $mhcname$ general direction" }) }),
  "disagree": ({ ({ 0, "%s", 0, "with %s" }), ({
      "You disagree with $hcname$",
      "$mcname$ disagrees with you",
      "$mcname$ disagrees with $hcname$", }), }),
  "dribble": ({ ({ 0, "%s", 0, "on %s", 0, "all over %s" }), ({
      "You start to dribble all over the front of your shirt",
      "$mcname$ starts to dribble all over the front of $mposs$ shirt",
      "You start dribbling on $hcname$",
      "$hcname$ starts dribbling all over your best shirt",
      "$mcname$ starts dribbling all over $hcname$" }) }),
  "drool":   ({ ({ 0, "%s", 0, "on %s" }), ({
      "You start to drool",
      "$mcname$ starts to drool",
      "You drool all over $hcname$",
      "$mcname$ drools all over you",
      "$mcname$ drools all over $hcname$" }) }),
  "duck":    ({ ({ 3, "%s" }), ({
      "You duck $arg:for cover,badly,carefully,inappropriately,"+
        "pointlessly,quickly,sadly,slowly,the snowball$",
      "$mcname$ ducks $lastarg$" }) }),
  "duh":     ({ 0, ({
      "You slap your forehead and scream, \"Duh!\"",
      "$mcname$ slaps $mposs$ forehead and screams, \"Duh!\"", }) }),
  "eek":     ({ ({ 3, "%s" }), ({
      "You eek$ifarg: $arg:brightly,carefully,happily,in amazement,"+
        "in shock,loudly,sadly$$else$!!!~$",
      "$mcname$ eeks$ifarg: $lastarg$$else$!!!~$", }), }),
  "envy":    ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s", }), ({
      "You turn green with envy",
      "$mcname$ turns green with envy",
      "You envy $mhcname$ $arg:frog,#$",
      "$mcname$ envies your $lastarg$",
      "$mcname$ envies $mhcname$ $lastarg$", }), }),
  "exp":     ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You raise yourself to the power of $ifarg:$arg:#$$else$2~$",
      "$mcname$ raises $mobj$self to a random power",
      "You raise $hcname$ to the power of $ifarg:$arg:#$$else$2~$",
      "$mcname$ raises you to the power of $ifarg:$lastarg$$else$2~$",
      "$mcname$ raises $hcname$ to the power of $ifarg:$lastarg$"+
        "$else$2~$" }) }),
  "expect":  ({ ({ 0, "%s", 0, "at %s" }), ({
      "You look expectantly at $hcname$",
      "$mcname$ looks expectantly at you",
      "$mcname$ looks expectantly at $hcname$" }) }),
  "explode": ({ 0, ({
      "You explode into thousands of tiny pieces",
      "$mcname$ explodes into thousands of tiny pieces", }) }),
  "eye":     ({ ({ 0, "%s" }), ({
      "You eye $hcname$ over",
      "$mcname$ eyes you over",
      "$mcname$ eyes $hcname$ over", }), }),
  "faint":   ({ ({ 3, "%s", 0, "%s", 0, "on %s" }), ({
      "You faint$ifarg: $arg:tiredly,from exhaustion,out of boredom$~$"+
        ".\nTHUNK!",
      "$mcname$ faints$ifarg: $lastarg$~$.\nTHUNK!",
      "You faint into $mhcname$ arms",
      "$mcname$ faints into your arms",
      "$mcname$ faints into $mhcname$ arms" }) }),
  "fall":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "on %s %s",
                   1, "%s %s", 1, "%s on %s" }), ({
      /*
       * NOTE: non-targeted fall was coded this way deliberately! hehehe
       */
      "You fall over$ifarg: $arg:accidentally,awkwardly,backwards,"+
        "happily,painfully,purposefully,quickly,rapidly,sadly$~$",
      "You fall over$ifarg: $lastarg$~$",
      "You fall $ifarg:$arg:accidentally,happily,heavily,quickly,"+
        "slowly,twice$ on $hcname$$else$for $hcname$~$",
      "$mcname$ falls $ifarg:$lastarg$ on you$else$for you~$",
      "$mcname$ falls $ifarg:$lastarg$ on $hcname$"+
        "$else$for $hcname$~$", }), }),
  "fart":    ({ 0, ({
      "You fart",
      "$mcname$ farts" }) }),
  "fiddle":  ({ ({ 3, "%s", 3, "with %s" }), ({
      "You fiddle with $ifarg:$arg:#$$else$something~$",
      "$mcname$ fiddles with $ifarg:$arg:#$$else$something~$", }), }),
  "fish":    ({ ({ 3, "%s", 3, "for %s", 0, "%s", 0, "in %s",
                   0, "in %s's pockets", 2, "%s %s",
                   2, "in %s's pockets for %s", 1, "for %s in %s's pockets",
                   1, "for %s in %s", 1, "%s in %s" }), ({
      "You fish around in your pockets$ifarg: for $arg:#$~$",
      "$mcname$ fishes around in $mposs$ pockets$ifarg: for $lastarg$~$",
      "You fish around in $mhcname$ pockets$ifarg: for $arg:#$~$",
      "$mcname$ fishes around in your pockets$ifarg: for $lastarg$~$",
      "$mcname$ fishes around in $mhcname$ pockets"+
        "$ifarg: for $lastarg$~$" }) }),
  "flap":    ({ ({ 3, "%s" }), ({
      "You flap your $arg:ears,arms,wings,eyelashes$",
      "$mcname$ flaps $mposs$ $lastarg$" }) }),
  "flash":   ({ ({ 0, "%s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You flash your naughty bits at $hcname$$ifarg: $arg:gratuitously,"+
        "naughtily,seductively,like a Worzel,#$~$",
      "$mcname$ flashes $mposs$ naughty bits at you$ifarg: $lastarg$~$",
      "$mcname$ flashes $mposs$ naughty bits at $hcname$$ifarg: $lastarg$~$"
    }) }),
  "flex":    ({ ({ 3, "%s" }), ({
      "You flex your $arg:muscles,biceps,triceps,legs,brain,nose,ears$."+
        "\nEveryone is impressed",
      "$mcname$ flexes $mposs$ $lastarg$.\nEveryone is impressed", }) }),
  "flip":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You flip $arg:head over heels,around,awkwardly,backwards,"+
        "carefully,digustingly,disturbingly,doggily,forwards,"+
        "gracefully,over,quickly,sideways,slowly,twice,over the moon,"+
        "around in a really complicated double back roll flip,"+
        "half way around and land on your head...ouch!$",
      "$mcname$ flips $lastarg$",
      "You flip $hcname$ $arg:over,dangerously,off,spectacularly,"+
        "viciously,head over heels,into the garbage bin$",
      "$mcname$ flips you $lastarg$",
      "$mcname$ flips $hcname$ $lastarg$" }) }),
  "flop":    ({ ({ 3, "%s", 0, "%s" }), ({
      "You flop about $arg:helplessly,badly,carefully,happily,"+
        "impressively,lazily,once,pensively,rudely,suggestively,"+
        "wonderfully,a bit,like a gherkin,like a fish out of water$",
      "$mcname$ flops about $lastarg$",
      "You flop on $hcname$",
      "$mcname$ flops on you",
      "$mcname$ flops on $hcname$" }) }),
  "fluster": ({ 0, ({
      "You look flustered",
      "$mcname$ looks flustered", }) }),
  "flutter": ({ ({ 0, "%s" }), ({
      "You flutter your eyelids",
      "$mcname$ flutters $mposs$ eyelids",
      "You flutter your eyelids at $hcname$",
      "$mcname$ flutters $mposs$ eyelids at you",
      "$mcname$ flutters $mposs$ eyelids at $hcname$", }) }),
  "fold":    ({ ({ 3, "%s" }), ({
      "You fold your arms$ifarg: $arg:arrogantly,carefully,decisively,"+
        "half-heartedly,menacingly,quickly,slowly,snappily$~$",
      "$mcname$ folds $mposs$ arms$ifarg: $lastarg$~$" }), }),
  "fondle":  ({ ({ 0, "%s", 2, "%s %s", 2, "%s's %s", 1, "%s %s" }), ({
      "You fondle $ifarg:$mhcname$ $arg:#$$else$$hcname$~$",
      "$mcname$ fondles$ifarg: with your $lastarg$$else$ you~$",
      "$mcname$ fondles $ifarg:with $mhcname$ $lastarg$"+
        "$else$$hcname$~$" }) }),
  "foo":     ({ ({ 3, "%s" }), ({
      "You $ifarg:foo $arg:vaguely,carefully,dangerously,slowly$"+
        "$else$go, \"Foo!\"~$",
      "$mcname$ $ifarg:foos $lastarg$$else$goes, \"Foo!\"~$", }), }),
  "forgive": ({ ({ 0, "%s", 2, "%s %s", 2, "%s for %s", }), ({
      "You forgive $hcname$$ifarg: $arg:#$~$",
      "$mcname$ forgives you$ifarg: $lastarg$~$",
      "$mcname$ forgives $hcname$$ifarg: $lastarg$~$", }), }),
  "french":  ({ ({ 0, "%s" }), ({
      "You give $hcname$ a deep and passionate kiss.\n"+
        "It seems to last forever...",
      "$mcname$ gives you a deep and passionate kiss.\n"+
        "It seems to last forever...",
      "$mcname$ gives $hcname$ a deep and passionate kiss.\n"+
        "It seems to last forever..." }) }),
  "frog":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You frog around $arg:mindlessly,carefully,happily,silently,#$",
      "$mcname$ frogs around $lastarg$",
      "You $ifarg:$arg:slowly,carefully,excruciatingly,gleefully,"+
        "happily,magically$ ~$turn $hcname$ into a frog!",
      "$mcname$ $ifarg:$lastarg$ ~$turns you into a frog!",
      "$mcname$ $ifarg:$lastarg$ ~$turns $hcname$ into a frog!"+
        "$force#croak#3$" }) }),
  "froth":   ({ 0, ({
      "You froth at the mouth",
      "$mcname$ froths at the mouth" }) }),
  "frown":   ({ ({ 3, "%s", 3, "in %s", 0, "%s" }), ({
      "$ifarg:You frown in $arg:anger,concentration,depression,"+
        "happiness,thought,like a cat,#$$else$Whats the problem?~$",
      "$ifarg:$mcname$ frowns in $lastarg$$else$$mcname$ frowns~$",
      "You frown at $hcname$",
      "$mcname$ frowns at you",
      "$mcname$ frowns at $hcname$" }) }),
  "fume":    ({ ({ 3, "%s", }), ({
      "You fume $arg:quietly,despairingly,insultingly,in anger,"+
        "in frustration$",
      "$mcname$ fumes $lastarg$", }) }),
  "gasp":    ({ ({ 3, "%s", 3, "in %s", }), ({
      "You gasp in $arg:astonishment,exasperation,excitement,terror,"+
        "fear,fright,pain$",
      "$mcname$ gasps in $lastarg$" }) }),
  "gesture": ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You gesture $arg:wildly,carefully,deliberately,insanely,lovingly,"+
        "mindlessly,mystically,nastily,oddly,pompously,ponderously,"+
        "rapidly,slowly,strangely,suggestively,off into the distance,"+
        "without moving$",
      "$mcname$ gestures $lastarg$",
      "You gesture $arg:wildly,carefully,deliberately,insanely,lovingly,"+
        "mindlessly,mystically,nastily,oddly,pompously,ponderously,"+
        "rapidly,slowly,strangely,suggestively,off into the distance,"+
        "without moving$ at $hcname$",
      "$mcname$ gestures $lastarg$ at you",
      "$mcname$ gestures $lastarg$ at $hcname$", }) }),
  "gesticulate": ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                       1, "%s %s", 1, "%s at %s" }), ({
      "You gesticulate $arg:wildly,carefully,deliberately,insanely,lovingly,"+
        "mindlessly,mystically,nastily,oddly,pompously,ponderously,"+
        "rapidly,slowly,strangely,suggestively,off into the distance,"+
        "without moving$",
      "$mcname$ gesticulates $lastarg$",
      "You gesticulate $arg:wildly,carefully,deliberately,insanely,lovingly,"+
        "mindlessly,mystically,nastily,oddly,pompously,ponderously,"+
        "rapidly,slowly,strangely,suggestively,off into the distance,"+
        "without moving$ at $hcname$",
      "$mcname$ gesticulates $lastarg$ at you",
      "$mcname$ gesticulates $lastarg$ at $hcname$", }) }),
  "gibber":  ({ 0, ({
      "You gibber madly",
      "$mcname$ gibbers madly", }) }),
  "giggle":  ({ ({ 3, "%s" }), ({
      "You giggle$ifarg: $arg:cutely,fiendishly,idiotically,inanely,"+
        "insanely,loudly,quietly,sarcastically,stupidly$~$",
      "$mcname$ giggles$ifarg: $lastarg$~$" }) }),
  "gigglesnort": ({ 0, ({
      "You gigglesnort",
      "$mcname$ gigglesnorts", }) }),
  "glare":   ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You glare $arg:stonily,evilly,hotly,idiotically,intently,solemnly,"+
        "sternly$ at the world in general",
      "$mcname$ glares $lastarg$ around $mobj$self",
      "You glare $arg:stonily,evilly,hotly,idiotically,intently,solemnly,"+
        "sternly$ at $hcname$",
      "$mcname$ glares $lastarg$ at you",
      "$mcname$ glares $lastarg$ at $hcname$", }) }),
  "gnash":   ({ ({ 0, "%s", }), ({
      "You gnash your teeth",
      "$mcname$ gnashes $mposs$ teeth",
      "You gnash you teeth at $hcname$",
      "$mcname$ gnashes $mposs$ teeth at you",
      "$mcname$ gnashes $mposs$ teeth at $hcname$" }), }),
  "grammar": ({ ({ 0, "%s", }), ({
      "You bad grammar has",
      "$mcname$ bad grammar has",
      "You think $hcname$ bad grammar has",
      "$mcname$ thinks you bad grammar has",
      "$mcname$ thinks $hcname$ bad grammar has" }), }),
  "grate":   ({ ({ 3, "%s" }), ({
      "You grate your teeth $arg:in annoyance,annoyingly,in anger,"+
        "angrily,noisily,painfully,seductively,suggestively,in terror,"+
        "together$",
      "$mcname$ grates $mposs$ teeth $lastarg$", }) }),
  "greet":   ({ ({ 0, "%s", 2, "%s %s" }), ({
      "You greet $hcname$ $arg:warmly,absentmindedly,carefully,coldly,"+
        "courteously,curtly,ecstatically,happily,hysterically,"+
        "insolently,reservedly,sadly,with open arms$",
      "$mcname$ greets you $lastarg$",
      "$mcname$ greets $hcname$ $lastarg$", }) }),
  "grimace": ({ ({ 3, "%s" }), ({
      "You grimace in $arg:disgust,anger,despair,power,thought$",
      "$mcname$ grimaces in $lastarg$", }), }),
  "grin":    ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You grin$ifarg: $arg:cheekily,cheesily,devilishly,evilly,"+
        "idiotically,impishly,insanely,madly,maniacally,mischievously,"+
        "sheepishly,skeptically,tentatively,wickedly,widely,wryly$~$",
      "$mcname$ grins$ifarg: $lastarg$~$",
      "You grin$ifarg: $arg:cheekily,devilishly,evilly,idiotically,"+
        "impishly,insanely,madly,maniacally,mischievously,sheepishly,"+
        "skeptically,tentatively,wickedly,widely,wryly$~$ at $hcname$",
      "$mcname$ grins$ifarg: $lastarg$~$ at you",
      "$mcname$ grins$ifarg: $lastarg$~$ at $hcname$" }) }),
  "grind":   ({ ({ 3, "%s" }), ({
      "You grind your teeth $arg:noisily,angrily,annoyingly,"+
        "painfully,seductively,suggestively,in terror,together$",
      "$mcname$ grinds $mposs$ teeth $lastarg$", }) }),
  "groan":   ({ ({ 3, "%s" }), ({
      "You groan$ifarg: $arg:loudly,in disappointment,resignedly,tiredly$~$",
      "$mcname$ groans$ifarg: $lastarg$~$" }) }),
  "grope":   ({ ({ 0, "%s", 2, "%s's %s", 2, "%s %s" }), ({
      "You grope $ifarg:$mhcname$ $arg:#$$else$$hcname$~$",
      "$mcname$ gropes you$ifarg:r $lastarg$~$",
      "$mcname$ gropes $ifarg:$mhcname$ $lastarg$$else$$hcname$~$" }) }),
  "grovel":  ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You grovel$ifarg: $arg:shamelessly,unashamedly,violently$~$",
      "$mcname$ grovels$ifarg: $lastarg$~$",
      "You grovel$ifarg: $arg:shamelessly,unashamedly,violently$~$ at "+
        "$mhcname$ feet",
      "$mcname$ grovels$ifarg: $lastarg$~$ at your feet",
      "$mcname$ grovels$ifarg: $lastarg$~$ at $mhcname$ feet" }) }),
  "growl":   ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You growl $arg:menacingly,loudly,nastily,playfully$",
      "$mcname$ growls $lastarg$",
      "You growl $arg:menacingly,loudly,nastily,playfully$ at $hcname$",
      "$mcname$ growls $lastarg$ at you",
      "$mcname$ growls $lastarg$ at $hcname$" }) }),
  "grumble": ({ ({ 3, "%s", }), ({
      "You grumble $arg:quietly,annoyingly,bitterly,carefully,"+
        "devastatingly,halfheartedly,loudly,menacingly,seductively,"+
        "suggestively,wildly,more or less$",
      "$mcname$ grumbles $lastarg$", }) }),
  "gurgle":  ({ ({ 3, "%s" }), ({
      "You gurgle $arg:noisily,carefully,disgustingly,loudly,"+
        "happily,mischievously,quickly,rudely,slowly,in surprise,"+
        "like a train$",
      "$mcname$ gurgles $lastarg$" }) }),
  "hang":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You hang your head in $arg:shame,despair,happiness,sorrow$",
      "$mcname$ hangs $mposs$ head in $lastarg$",
      "You hang onto $hcname$ $arg:tightly,fearfully,paranoiacally,"+
        "passionately,possessively$",
      "$mcname$ hangs onto you $lastarg$",
      "$mcname$ hangs onto $hcname$ $lastarg$", }) }),
  "hassle":  ({ ({ 0, "%s", 2, "%s %s", 2, "%s about %s", 1, "%s %s" }), ({
      "You hassle $hcname$$ifarg: about $arg:frogs,chickens,something,#$~$",
      "$mcname$ hassles you$ifarg: about $lastarg$~$",
      "$mcname$ hassles $hcname$$ifarg: about $lastarg$~$", }), }),
  "headbutt": ({ ({ 0, "%s" }), ({
      "You headbutt $hcname$",
      "$mcname$ headbutts you!",
      "$mcname$ headbutts $hcname$!" }) }),
  "headstand": ({ 0, ({
      "You stand on your head",
      "$mcname$ stands on $mposs$ head" }) }),
  "heh":     ({ ({ 0, "%s" }), ({
      "You grin and say, \"Heh heh heh.\"",
      "$mcname$ grins and says, \"Heh heh heh.\"",
      "You grin at $hcname$ and say, \"Heh heh heh.\"",
      "$mcname$ grins at you and says, \"Heh heh heh.\"",
      "$mcname$ grins at $hcname$ and says, \"Heh heh heh.\"" }) }),
  "hiccup":  ({ 0, ({                 /* exciting stuff */
      "You hiccup",
      "$mcname$ hiccups" }) }),
  "high5":   ({ ({ 0, "%s" }), ({
      "Nope",
      "$mcname$ is stupid, isn't $mpronoun$?",
      "Nope, sorry.  Absolutely not",
      "Ignore $mcname$; $mpronoun$'s actually pretty stupid",
      "Ignore $mcname$; $mpronoun$'s actually pretty stupid" }) }),
/*
  "hold":    ({ ({ 3, "%s", 0, "%s", 0, "onto %s", 2, "%s %s",
                   1, "%s %s" }), ({
      "You hold your $arg:nose,#$",
      "$mcname$ holds $mposs$ $lastarg$",
      "You hold $hcname$$ifarg: $arg:close,back,down,gently,lovingly,"+
        "tightly,up,warmly$~$",
      "$mcname$ holds you$ifarg: $lastarg$~$",
      "$mcname$ holds $hcname$$ifarg: $lastarg$~$" }) }),
*/
  "hop":     ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s", }), ({
      "You hop around a bit",
      "$mcname$ hops around a bit",
      "You hop into $mhcname$ $arg:arms,bed,car,house,pool,television$",
      "$mcname$ hops into your $lastarg$",
      "$mcname$ hops into $mhcname$ $lastarg$", }) }),
  "hoot":    ({ ({ 3, "%s" }), ({
      "You hoot $arg:like an owl,absentmindedly,annoyingly,derisively,"+
        "distractedly,loudly,obviously,pointlessly,rudely,silently,"+
        "tunelessly,vaguely,whilst you work,with laughter$",
      "$mcname$ hoots $lastarg$" }), }),
  "howl":    ({ ({ 3, "%s" }), ({
      "$ifarg:You howl $arg:at the moon,in pain,#$"+
        "$else$HOOOOOWWWWWWWWWLLLLLL!!~$",
      "$mcname$ howls$ifarg: $lastarg$~$" }) }),
  "hug":     ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You hug $hcname$$ifarg: $arg:closely,gently,tightly,warmly$~$",
      "$mcname$ hugs you$ifarg: $lastarg$~$",
      "$mcname$ hugs $hcname$$ifarg: $lastarg$~$" }) }),
  "huggle":  ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You huggle $hcname$$ifarg: $arg:excitedly,happily,tightly,"+
        "warmly,to death,#$~$",
      "$mcname$ huggles you$ifarg: $lastarg$~$",
      "$mcname$ huggles $hcname$$ifarg: $lastarg$~$" }) }),
  "hum":     ({ ({ 3, "%s" }), ({
      "You hum $arg:a merry tune,absentmindedly,annoyingly,distractedly,"+
        "loudly,pointlessly,rudely,silently,tunelessly,vaguely,"+
        "whilst you work$",
      "$mcname$ hums $lastarg$" }), }),
  "idle":    ({ ({ 3, "%s", 0, "%s" }), ({
      "You idle $arg:nonchalantly,around,artfully,hyperactively,"+
        "intensely,quickly,upside-down,like a gherkin,"+
        "like everyone else is,like pinkfish,like sloths do,"+
        "unbelievably well,without using your hands,"+
        "standing still,$",
      "$mcname$ idles $lastarg$",
      "You idle like $hcname$",
      "$mcname$ idles like you",
      "$mcname$ idles like $hcname$", }), }),
  "ignore":  ({ ({ 0, "%s" }), ({
      "You ignore the world",
      "$mcname$ ignores the world",
      "You ignore $hcname$",
      "$mcname$ ignores you",
      "$mcname$ ignores $hcname$", }) }),
  "james":   ({ 0, ({
      "Ow!  I feel good!  Da na da na da na da!  I knew that I would!",
      "$mcname$ feels good, da na da na da na da!" }) }),
  "juggle":  ({ ({ 3, "%s" }), ({
      "You juggle some $arg:balls,arms,battons,bottles,cats,"+
        "chainsaws,chickens,dogs,fire,frogs,guppies,knives,ladies,"+
        "legs,logs,men,people,rhinos,sticks,swords,torches,"+
        "trees,tree stumps,water,wine glasses,zoroasters$ around",
      "$mcname$ juggles some $lastarg$ around", }) }),
  "jump":    ({ ({ 3, "%s", 0, "%s", 0, "on %s", 2, "%s %s",
                   2, "on %s %s", 1, "%s %s", 1, "%s on %s" }), ({
      "You jump up and down $arg:excitedly,absentmindedly,carefully,"+
        "ecstatically,happily,joyfully,sideways,slowly,unsteadily,"+
        "worriedly,in pain,like a maniac,like a prancing piranha$",
      "$mcname$ jumps up and down $lastarg$",
      "You jump up and down on $hcname$$ifarg: $arg:"+
        "absentmindedly,carefully,ecstatically,excitedly,happily,"+
        "joyfully,unsteadily,worriedly,sideways,slowly,"+
        "like a maniac$~$",
      "$mcname$ jumps up and down on you$ifarg: $lastarg$~$",
      "$mcname$ jumps up and down on $hcname$$ifarg: $lastarg$~$" }) }),
  "kick":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You kick yourself$ifarg: $arg:#$~$",
      "$mcname$ kicks $mobj$self$ifarg: $lastarg$~$",
      "You kick $hcname$$ifarg: $arg:#$~$",
      "$mcname$ kicks you$ifarg: $lastarg$~$",
      "$mcname$ kicks $hcname$$ifarg: $lastarg$~$" }) }),
  "kiss":    ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You kiss $hcname$$ifarg: $arg:carefully,deeply,demandingly,"+
        "gently,lovingly,lengthily,passionately,sensuously,tenderly,"+
        "on the cheek,on the hand$~$",
      "$mcname$ kisses you$ifarg: $lastarg$~$",
      "$mcname$ kisses $hcname$$ifarg: $lastarg$~$" }) }),
  "knee":    ({ ({ 0, "%s", 2, "%s %s" }), ({
      "You knee $hcname$$ifarg: $arg:#$$else$ in the groin~$",
      "$mcname$ knees you$ifarg: $lastarg$$else$ in the groin~$",
      "$mcname$ knees $hcname$$ifarg: $lastarg$"+
        "$else$ in the groin~$" }) }),
  "lag":     ({ 0, ({
      "You tell everyone you're experiencing a bad case of lag.",
      "$mcname$ is experiencing a bad case of lag...", }) }),
  "laugh":   ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You laugh$ifarg: $arg:demonically,ecstatically,happily,"+
        "heartily,heartlessly,maniacally,nastily,nicely,politely,quietly,"+
        "tauntingly,uncontrollably$~$",
      "$mcname$ laughs$ifarg: $lastarg$~$",
      "You laugh$ifarg: $arg:demonically,ecstatically,happily,"+
        "heartily,heartlessly,maniacally,nastily,nicely,politely,quietly,"+
        "tauntingly,uncontrollably$~$ at $hcname$",
      "$mcname$ laughs$ifarg: $lastarg$~$ at you",
      "$mcname$ laughs$ifarg: $lastarg$~$ at $hcname$" }) }),
  "leap":    ({ ({ 3, "%s" }), ({
      "You leap$ifarg: $arg:awkwardly,excitedly,high,longingly,"+
        "noisily,politely,quickly,quietly,slowly$~$ into the air",
      "$mcname$ leaps$ifarg: $lastarg$~$ into the air", }) }),
  "leer":    ({ ({ 0, "%s", 0, "at %s" }), ({
      "You leer at $hcname$",
      "$mcname$ leers at you",
      "$mcname$ leers at $hcname$", }), }),
  "lick":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You lick your lips$ifarg: $arg:carefully,excitedly,expectantly,"+
        "seductively,sensuously,slowly,suggestively,in hunger$~$",
      "$mcname$ licks $mposs$ lips$ifarg: $lastarg$~$",
      "You lick $hcname$$ifarg: $arg:absentmindedly,carefully,"+
        "excitedly,happily,loudly,lustily,quickly,silently,slowly,"+
        "all over$~$",
      "$mcname$ licks you$ifarg: $lastarg$~$",
      "$mcname$ licks $hcname$$ifarg: $lastarg$~$" }) }),
  "lie":     ({ ({ 3, "%s" }), ({
      "You lie$ifarg: $arg:badly,blatantly,seductively,uncontrollably,"+
        "at length,like a dog$$else$ through your teeth~$",
      "$mcname$ lies$ifarg: $lastarg$"+
        "$else$ through $mposs$ teeth~$", }) }),
  "listen":  ({ ({ 3, "%s", 0, "%s", 0, "to %s", 2, "%s %s",
                   2, "to %s %s", 1, "%s %s", 1, "%s to %s" }), ({
      "You listen $arg:carefully,boredly,halfheartedly,patiently,"+
        "rudely,silently$",
      "$mcname$ listens $lastarg$",
      "You listen $arg:intently,boredly,carefully,halfheartedly,"+
        "patiently,rudely,silently$ to $hcname$",
      "$mcname$ listens $lastarg$ to you",
      "$mcname$ listens $lastarg$ to $hcname$", }), }),
  "loom":    ({ ({ 0, "%s", 0, "over %s" }), ({
      "You loom over $hcname$",
      "$mcname$ looms over you",
      "$mcname$ looms over $hcname$", }) }),
  "love":    ({ ({ 0, "%s" }), ({
      "You whisper sweet words of love into $mhcname$ ear",
      "$mcname$ whispers sweet words of love in your ear",
      "$mcname$ whispers into $mhcname$ ear" }) }),
  "massage": ({ ({ 0, "%s", 2, "%s %s", }), ({
      "You give $hcname$ a$ifarg: $arg:back,bad,deep,different,"+
        "economic,ergonomic,foot,full-body,good,happy,head,leg,long,"+
        "meaningful,memorable,neck,painful,painless,professional,"+
        "quick,refreshing,sad,seductive,sensuous,shoulder,sneaky,"+
        "strange,trained,unprofessional,unprovoked,untrained,"+
        "unwanted,unwarranted,unwieldly$~$ massage",
      "$mcname$ gives you a$ifarg: $lastarg$~$ massage.\n"+
        "You feel very relaxed...",
      "$mcname$ gives $hcname$ a$ifarg: $lastarg$~$ massage" }) }),
  "melt":    ({ ({ 0, "%s", 3, "%s" }), ({
      "You melt$ifarg: $arg:carefully,quickly,seductively,slowly,"+
        "submissively,a little,in anticipation,in ecstasy,"+
        "into a nice puddle$~$",
      "$mcname$ melts$ifarg: $lastarg$~$",
      "You melt in $mhcname$ arms",
      "$mcname$ melts in your arms",
      "$mcname$ melts in $mhcname$ arms" }) }),
  "moan":    ({ ({ 3, "%s" }), ({
      "You moan$ifarg: $arg:agonizingly,deeply,gently,loudly,"+
        "sensually,in pain,in terror$~$",
      "$mcname$ moans$ifarg: $lastarg$~$" }) }),
  "moon":    ({ ({ 0, "%s" }), ({
      "You drop your pants and moon everyone",
      "$mcname$ drops $mposs$ pants and moons everyone",
      "You drop your pants and moon $hcname$",
      "$mcname$ drops $mposs$ pants and moons you",
      "$mcname$ drops $mposs$ pants and moons $hcname$" }) }),
  "mosh":    ({ ({ 3, "%s" }), ({
      "You mosh $arg:violently,angrily,carefully,insanely,loudly,"+
        "thoughtfully,vigorously,wonderingly$ around the room",
      "$mcname$ moshes $lastarg$ around the room" }) }),
  "mourn":   ({ ({ 3, "%s", 0, "%s" }), ({
      "You mourn $arg:in sorrow,the slow death of frogs,#$",
      "$mcname$ mourns $lastarg$",
      "You mourn $hcname$",
      "$mcname$ mourns you",
      "$mcname$ mourns $hcname$" }) }),
  "muss":    ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s", }), ({
      "You muss $mhcname$ hair$ifarg: $arg:badly,lovingly,"+
        "patronizingly,playfully,slowly,suggestively$~$",
      "$mcname$ musses your hair$ifarg: $lastarg$~$",
      "$mcname$ musses $mhcname$ hair$ifarg: $lastarg$~$" }) }),
  "mutter":  ({ ({ 3, "%s" }), ({
      "You mutter$ifarg: $arg:#$~$ under your breath",
      "$mcname$ mutters$ifarg: $arg:#$~$ under $mposs$ breath" }) }),
  "nestle":  ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You nestle up to $hcname$ $arg:affectionately,curiously,lovingly$",
      "$mcname$ nestles up to you $lastarg$",
      "$mcname$ nestles up to $hcname$ $lastarg$" }) }),
  "nibble":  ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You nibble on $mhcname$ $arg:ear,arm,fingers,leg,lip,neck,"+
        "nose,toes,tongue$",
      "$mcname$ nibbles on your $lastarg$",
      "$mcname$ nibbles on $mhcname$ $lastarg$" }) }),
  "nod":     ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You nod$ifarg: $arg:brightly,curtly,eagerly,emphatically,"+
        "expectantly,firmly,happily,in agreement,knowingly,"+
        "patiently,sadly,sagely,slowly,solemnly,tentatively,vigorously$~$",
      "$mcname$ nods$ifarg: $lastarg$~$",
      "You nod$ifarg: $arg:brightly,curtly,eagerly,emphatically,"+
        "expectantly,firmly,in agreement,happily,knowingly,"+
        "patiently,sadly,sagely,slowly,solemnly,tentatively,vigorously$~$"+
        " at $hcname$",
      "$mcname$ nods$ifarg: $lastarg$~$ at you",
      "$mcname$ nods$ifarg: $lastarg$~$ at $hcname$" }) }),
  "noise":   ({ ({ 3, "%s" }), ({
      "You make a $arg:funny,bungle,burble,chicken,cow,disgusting,"+
        "flurgle,frog,gong,gumby,guppy,hairy,kangaroo,koala,loud,moo,"+
        "mouse,pop,rabbit,rat,schwing,strange,train,twisted,weird,"+
        "whirr,wop,zongle-wop$ noise",
      "$mcname$ makes a $lastarg$ noise" }) }),
  "nudge":   ({ ({ 0, "%s", }), ({
      "You nudge $hcname$",
      "$mcname$ nudges you",
      "$mcname$ nudges $hcname$", }) }),
  "nuzzle":  ({ ({ 0, "%s" }), ({
      "You nuzzle $hcname$ affectionately",
      "$mcname$ nuzzles you affectionately",
      "$mcname$ nuzzles $hcname$ affectionately" }) }),
  "oops":    ({ 0, ({
      "You cover your mouth with your hands and say, \"Oops!\"",
      "$mcname$ covers $hposs$ mouth with $hposs$ hands and says, "+
        "\"Oops!\"" }) }),
  "ouch":    ({ 0, ({
      "Oooouuuuuchhhh!",
      "$mcname$ screams, \"Ouch!\" in pain" }) }),
  "panic":   ({ 0, ({
      "You panic",
      "$mcname$ panics" }) }),
  "pat":     ({ ({ 0, "%s", 2, "%s %s", 2, "%s on %s", 1, "%s %s" }), ({
      "You pat $hcname$ on the $arg:head,back,arm,leg,nose,bottom$",
      "$mcname$ pats you on the $lastarg$",
      "$mcname$ pats $hcname$ on the $lastarg$" }) }),
  "patronize": ({ ({ 0, "%s" }), ({
      "You patronize $hcname$",
      "$mcname$ patronizes you",
      "$mcname$ patronizes $hcname$" }) }),
  "pet":     ({ ({ 0, "%s" }), ({
      "You pet $hcname$",
      "$mcname$ pets you",
      "$mcname$ pets $hcname$" }) }),
  "peer":    ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You peer$ifarg: $arg:anxiously,carefully,curiously,dazedly,"+
        "desperately,disappointedly,expectantly,fearfully,fishily,"+
        "happily,intently,lazily,lopsidedly,nervously,owlishly,"+
        "quizzically,rudely,sadly,strangely,stupidly,suspiciously,"+
        "tentatively,tiredly,uncertainly,warily,warningly,"+
        "worriedly$~$ around the room",
      "$mcname$ peers$ifarg: $lastarg$~$ around the room",
      "You peer$ifarg: $arg:anxiously,carefully,curiously,dazedly,"+
        "desperately,disappointedly,expectantly,fearfully,fishily,"+
        "happily,intently,lazily,lopsidedly,nervously,owlishly,"+
        "quizzically,rudely,sadly,strangely,stupidly,suspiciously,"+
        "tentatively,tiredly,uncertainly,warily,warningly,"+
        "worriedly$~$ at $hcname$",
      "$mcname$ peers$ifarg: $lastarg$~$ at you",
      "$mcname$ peers$ifarg: $lastarg$~$ at $hcname$" }) }),
  "pick":    ({ ({ 3, "%s" }), ({
      "You pick your $arg:nose,ear,#$",
      "$mcname$ picks $mposs$ $lastarg$" }) }),
  "pinch":   ({ ({ 0, "%s", 2, "%s %s", 2, "%s on the %s",
                   1, "%s %s" }), ({
      "You pinch yourself",
      "$mcname$ pinches $mobj$self",
      "You pinch $hcname$$ifarg: on the $arg:bottom,leg,arm,cheek$~$",
      "$mcname$ pinches you$ifarg: on the $lastarg$~$",
      "$mcname$ pinches $hcname$$ifarg: on the $lastarg$~$" }) }),
  "ping":    ({ ({ 0, "%s" }), ({
      "You ping $hcname$",
      "$mcname$ pings you$force#ack $mname$#2$",
      "$mcname$ pings $hcname$" }) }),
  "plead":   ({ ({ 3, "%s", }), ({
      "$mcname$ pleads for $arg:mercy,creators,insanity,"+
        "money,lots of money,a weapon$",
      "$mcname$ pleads for $lastarg$" }) }),
  "point":   ({ ({ 0, "%s", 0, "at %s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You point$ifarg: $arg:accusingly,straight$~$ at $hcname$",
      "$mcname$ points$ifarg: $lastarg$~$ at you",
      "$mcname$ points$ifarg: $lastarg$~$ at $hcname$" }) }),
  "poke":    ({ ({ 0, "%s", 2, "%s %s", 2, "%s in the %s",
                   2, "%s in %s", 1, "%s %s" }), ({
      "You poke $hcname$ in the $arg:ribs,arm,ear,eye,leg,nose,"+
        "stomach,#$",
      "$mcname$ pokes you in the $arg:ribs,arm,ear,eye,leg,nose,"+
        "stomach,#$",
      "$mcname$ pokes $hcname$ in the $arg:ribs,arm,ear,eye,leg,nose,"+
        "stomach,#$" }) }),
  "ponder":  ({ ({ 3, "%s", }), ({
      "You ponder$ifarg: $arg:life,the universe,everything,"+
        "the meaning of life,the question,the situation$~$",
      "$mcname$ ponders$ifarg: $lastarg$~$" }) }),
  "pounce":  ({ ({ 0, "%s", 0, "on %s", 2, "%s %s", 2, "on %s %s",
                   1, "%s %s", 1, "%s on %s" }), ({
      "You pounce on $hcname$$ifarg: $arg:appreciatively,carefully,"+
        "excitedly,madly,playfully,seductively$~$",
      "$mcname$ pounces on you$ifarg: $lastarg$~$",
      "$mcname$ pounces on $hcname$$ifarg: $lastarg$~$" }) }),
  "pout":    ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You pout$ifarg: $arg:childishly,resignedly,silently,#$~$",
      "$mcname$ pouts$ifarg: $lastarg$~$",
      "You pout$ifarg: $arg:childishly,resignedly,silently,#$~$ at $hcname$",
      "$mcname$ pouts$ifarg: $lastarg$~$ at you",
      "$mcname$ pouts$ifarg: $lastarg$~$ at $hcname$" }) }),
  "praise":  ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You praise $arg:the Goddess,#$",
      "$mcname$ praises $lastarg$",
      "You praise $ifarg:$mhcname$ $arg:great daring and cunning,"+
        "method of jogging on the spot,\"je ne sais quoi.\","+
        "conversational tactics,#$$else$$hcname$~$",
      "$mcname$ praises $ifarg:your $lastarg$$else$you~$",
      "$mcname$ praises $ifarg:$mhcname$ $lastarg$"+
        "$else$$hcname$~$" }) }),
  "protest": ({ ({ 3, "%s" }), ({
      "You protest$ifarg: $arg:vehemently,annoyingly,loudly,noisily,"+
        "pointlessly,strongly,weakly,#$~$",
      "$mcname$ protests$ifarg: $lastarg$~$" }) }),
  "puke":    ({ ({ 0, "%s", 0, "on %s", 0, "at %s"  }), ({
      "You brighten up the place",
      "$mcname$ does a technicolor yawn",
      "You puke on $hcname$",
      "$mcname$ pukes on you",
      "$mcname$ pukes on $hcname$" }) }),
  "punch":   ({ ({ 0, "%s" }), ({
      "You punch yourself",
      "$mcname$ punches $mobj$self",
      "You punch $hcname$",
      "$mcname$ punches you",
      "$mcname$ punches $hcname$", }) }),
  "purr":    ({ ({ 3, "%s" }), ({
      "You purr $arg:contentedly,loudly,happily,sensuously,like a kitten$",
      "$mcname$ purrs $lastarg$" }) }),
  "push":    ({ ({ 0, "%s", }), ({
      "You push yourself over",
      "$mcname$ pushes $mobj$self over",
      "You push $hcname$ over",
      "$mcname$ pushes you over",
      "$mcname$ pushes $hcname$ over", }) }),
  "puzzle":  ({ ({ 3, "%s" }), ({
      "$ifarg:You puzzle over $arg:#$$else$You look puzzled~$",
      "$mcname$ $ifarg:puzzles over $lastarg$$else$looks puzzled~$", }) }),
  "quirk":   ({ 0, ({
      "You quirk one eyebrow",
      "$mcname$ quirks one eyebrow" }) }),
  "quiver":  ({ ({ 3, "%s" }), ({
      "You quiver$ifarg: $arg:in fear,from the cold,#$~$",
      "$mcname$ quivers$ifarg: $lastarg$~$" }), }),
  "raise":   ({ 0, ({
      "You raise an eyebrow",
      "$mcname$ raises an eyebrow" }) }),
  "ram":     ({ ({ 0 ,"%s", 3, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You ram $ifarg:$arg:#$$else$the nearest turtle~$",
      "$mcname$ rams $ifarg:$lastarg$$else$the nearest turtle.  <thwok>~$",
      "You ram $ifarg:$mhcname$ $arg:#$$else$$hcname$~$",
      "$mcname$ $ifarg:rams into your $arg:#$$else$rams into you~$",
      "$mcname$ $ifarg:rams into $mhcname$ $arg:#$$else$rams into $hcname$~$"
    }), }),
  "razz":    ({ ({ 0, "%s" }), ({
      "You stick your thumb on your nose and razz $hcname$",
      "$mcname$ sticks $mposs$ thumb on $mposs$ nose and razzes you",
      "$mcname$ sticks $mposs$ thumb on $mposs$ nose and razzes "+
        "$hcname$" }) }),
  "rock":    ({ ({ 3, "%s" }), ({
      "You rock on your $arg:heels,feet,nose$",
      "$mcname$ rocks on $mposs$ $lastarg$" }) }),
  "roll":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You roll $arg:your eyes,backwards,fearfully,sideways,slowly,tightly,"+
        "around on the floor laughing,like a spy through an imaginary door,"+
        "over and play dead,up into a ball,your own cigarette,#$",
      "$mcname$ rolls $lastarg$",
      "You roll $ifarg:$arg:carefully,excitedly,lovingly,painfully,quickly,"+
        "slowly,#$ ~$over $hcname$",
      "$mcname$ rolls $ifarg:$lastarg$ ~$over you",
      "$mcname$ rolls $ifarg:$lastarg$ ~$over $hcname$" }) }),
  "rotfl":   ({ ({ 3, "%s", 0, "%s" }), ({
      "You start rolling on the floor, laughing hysterically",
      "$mcname$ starts rolling on the floor, laughing hysterically",
      "You point at $hcname$ and start laughing hysterically",
      "$mcname$ points at you and starts laughing hysterically",
      "$mcname$ points at $hcname$ and starts laughing hysterically" }) }),
  "rtfm":    ({ ({ 0, "%s" }), ({
      "You say, \"Read the f***ing manual.\"",
      "$mcname$ says, \"Read the f***ing manual.\"",
      "You tell $hcname$, \"Read the f***ing manual.\"",
      "$mcname$ tells you, \"Read the f***ing manual.\"",
      "$mcname$ tells $hcname$, \"Read the f***ing manual.\"" }) }),
  "rub":     ({ ({ 3, "%s", 0, "%s" }), ({
      "You rub your $arg:hands together,arm,eyes,eyebrows,head,leg,nose"+
        "tummy,#$",
      "$mcname$ rubs $mposs$ $lastarg$",
      "You rub $hcname$ the wrong way",
      "$mcname$ rubs you the wrong way",
      "$mcname$ rubs $hcname$ the wrong way" }) }),
  "ruffle":  ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You ruffle $mhcname$ hair $arg:playfully,affectionately$",
      "$mcname$ ruffles your hair $lastarg$",
      "$mcname$ ruffles $mhcname$ hair $lastarg$" }) }),
  "salute":  ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You salute$ifarg: $arg:crisply,playfully,respectfully,weakly$~$"+
        " at the air",
      "$mcname$ salutes$ifarg: $lastarg$~$ at the air",
      "You salute$ifarg: $arg:crisply,playfully,respectfully,weakly$~$"+
        " to $hcname$",
      "$mcname$ salutes$ifarg: $lastarg$ to you~$",
      "$mcname$ salutes$ifarg: $lastarg$ to $hcname$"+
        "$else$scratches $hcname$~$" }) }),
  "scratch": ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You scratch your $arg:head,arm,bum,butt,ear,finger,leg,nose,"+
        "cat behind the ears$",
      "$mcname$ scratches $mposs$ $lastarg$",
      "You $ifarg:$arg:playfully,slightly,viciously$ scratch $mhcname$ "+
        "head$else$scratch $hcname$~$",
      "$mcname$ $ifarg:$lastarg$ scratches your head"+
        "$else$scratches you~$",
      "$mcname$ $ifarg:$lastarg$ scratches $mhcname$ head"+
        "$else$scratches $hcname$~$" }) }),
  "scream":  ({ ({ 3, "%s", 3, "in %s" }), ({
      "$ifarg:You scream in $arg:anger,despair,fear,fright,frustration,"+
        "pain,surprise,terror$"+
        "$else$Arrggghhhhh!!!!~$",
      "$mcname$ screams$ifarg: in $lastarg$$else$ loudly!~$" }) }),
  "scoff":   ({ ({ 3, "%s", }), ({
      "You scoff$ifarg: $arg:loudly,sarcastically,sardonically,sweetly$~$",
      "$mcname$ scoffs$ifarg: $lastarg$~$", }) }),
  "scold":   ({ ({ 0, "%s", 1, "%s %s", 2, "%s %s" }), ({
      "You scold $hcname$$ifarg: $arg:playfully,endlessly,emphatically,"+
        "irritatedly,loudly,lovingly,mercilessly,pointlessly,sneakily,"+
        "uselessly,whilst stifling a giggle$~$",
      "$mcname$ scolds you$ifarg: $lastarg$~$",
      "$mcname$ scolds $hcname$$ifarg: $lastarg$~$", }), }),
  "scowl":   ({ ({ 0, "%s" }), ({
      "You scowl",
      "$mcname$ scowls",
      "You scowl at $hcname$",
      "$mcname$ scowls at you",
      "$mcname$ scowls at $hcname$" }) }),
  "shake":   ({ ({ 3, "%s", 3, "my %s", 0, "%s", 2, "%s %s",
                   1, "%s %s", 1, "%s with %s", 1, "%s at %s" }), ({
      "You shake your head$ifarg: $arg:carefully,completely,curtly,"+
        "once,quickly,sadly,slowly,sorrowfully,tentatively,"+
        "vigorously,in agreement,in disbelief$~$",
      "$mcname$ shakes $mposs$ head$ifarg: $lastarg$~$",
      "You shake$ifarg: $arg:hands with,your head at,fins with,fingers with,"+
        "legs with,pinkies with,tentacles with,your fist at$~$ $hcname$",
      "$mcname$ shakes$ifarg: $lastarg$~$ you",
      "$mcname$ shakes$ifarg: $lastarg$~$ $hcname$" }) }),
  "shiver":  ({ ({ 3, "%s" }), ({
      "You shiver$ifarg: $arg:in fear,with cold,slightly,#$~$",
      "$mcname$ shivers$ifarg: $lastarg$~$" }) }),
  "shrug":   ({ ({ 3, "%s", }), ({
      "You shrug$ifarg: $arg:happily,noncommittally,resignedly,"+
        "tiredly,uncaringly,in confusion,#$~$",
      "$mcname$ shrugs$ifarg: $lastarg$~$", }) }),
  "shudder": ({ ({ 3, "%s" }), ({
      "You shudder $ifarg:in $arg:disappointment,ecstasy,fear,revulsion"+
        "$$else$from horror~$",
      "$mcname$ shudders $ifarg:in $lastarg$$else$from horror~$", }) }),
  "shuffle": ({ 0, ({
      "You shuffle your feet in embarrassment",
      "$mcname$ shuffles $mposs$ feet in embarrassment", }), }),
  "sigh":    ({ ({ 3, "%s" }), ({
      "You sigh$ifarg: $arg:deeply,contentedly,desperately,dramatically,"+
        "dreamily,happily,heavily,in relief,melodramatically,"+
        "sadly,sarcastically,silently,slowly,suggestively,"+
        "tiredly,wistfully,with relief$~$",
      "$mcname$ sighs$ifarg: $lastarg$~$" }) }),
  "simper":  ({ 0, ({
      "You simper insipidly",
      "$mcname$ simpers insipidly", }) }),
  "sing":    ({ ({ 3, "%s", 0, "%s" }), ({
      "You $ifarg:sing, \"$arg:#$\"$else$burst into song~$",
      "$mcname$ $ifarg:sings, \"$lastarg$\"$else$bursts into song~$",
      "You serenade $hcname$",
      "$mcname$ serenades you",
      "$mcname$ serenades $hcname$" }) }),
  "sit":     ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You sit down$ifarg: $arg:carefully,clumsily,gracefully,gratefully,"+
        "inconsiderately,quickly,quietly,slowly,thoughtfully,in anger,"+
        "in shock,with one hand tied behind your back,#$~$",
      "$mcname$ sits down$ifarg: $lastarg$~$",
      "You sit on $mhcname$ $arg:lap,arm,chest,cat,computer,dinner,"+
        "face,head,leg,keyboard,sofa,#$",
      "$mcname$ sits on your $lastarg$",
      "$mcname$ sits on $mhcname$ $lastarg$", }), }),
  "skip":    ({ ({ 0, "%s", }), ({
      "You skip around happily",
      "$mcname$ skips around happily",
      "You skip around $hcname$",
      "$mcname$ skips around you",
      "$mcname$ skips around $hcname$", }), }),
  "slap":    ({ ({ 0, "%s" }), ({
      "You slap your forehead",
      "$mcname$ slaps $mposs$ forehead",
      "You slap $hcname$$ifarg: $arg:carefully,hard,harder,really hard,"+
        "incredibly hard,lovingly,twice,viciously,across the face,"+
        "across the room,with a frog,with a gauntlet,with a fish,$~$",
      "$mcname$ slaps you$ifarg: $lastarg$~$",
      "$mcname$ slaps $hcname$$ifarg: $lastarg$~$" }) }),
  "sleep":   ({ ({ 0, "%s" }), ({
      "You curl up into a ball and go to sleep",
      "$mcname$ curls up into a ball and goes to sleep",
      "You go to sleep in $mhcname$ arms",
      "$mcname$ go to sleep in your arms",
      "$mcname$ goes to sleep in $mhcname$ arms", }) }),
  "slobber": ({ ({ 0, "%s" }), ({
      "You slobber all over the place",
      "$mcname$ slobbers all over the place",
      "You slobber all over $hcname$",
      "$mcname$ slobbers all over you",
      "$mcname$ slobbers all over $hcname$", }), }),
  "smack":   ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You smack your lips",
      "$mcname$ smacks $mposs$ lips",
      "You smack $hcname$$ifarg: $arg:excitedly,furiously,happily,"+
        "nastily,twice,lots of times,upside the head,with gusto,"+
        "without a care$~$",
      "$mcname$ smacks you$ifarg: $lastarg$~$",
      "$mcname$ smacks $hcname$$ifarg: $lastarg$~$", }), }),
  "smirk":   ({ ({ 0, "%s" }), ({
      "You smirk",
      "$mcname$ smirks",
      "You smirk at $hcname$",
      "$mcname$ smirks at you",
      "$mcname$ smirks at $hcname$", }) }),
  "smirkle": ({ ({ 0, "%s", 1, "%s %s", 2, "%s %s" }), ({
      "You smirkle$ifarg: $arg:happily,sadly,like truilkan,sardonicaly$~$",
      "$mcname$ smirkles$ifarg: $lastarg$~$",
      "You smirkle$ifarg: $arg:happily,sadly,like truilkan,sardonicaly$~$ at $hcname$",
      "$mcname$ smirkles$ifarg: $lastarg$~$ at you",
      "$mcname$ smirkles$ifarg: $lastarg$~$ at $hcname$", }), }),
  "smile":   ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s", }), ({
      "You smile$ifarg: $arg:brightly,broadly,condescendingly,contentedly,"+
        "crookedly,cutely,demonically,drunkenly,enthusiastically,excitedly,"+
        "faintly,garishly,grimly,happily,humbly,idiotically,innocently,"+
        "insanely,lopsidedly,lovingly,maliciously,nastily,nervously,"+
        "paradoxicaly,paranoically,pertly,pleasantly,quirkily,radiantly,"+
        "sadistically,sarcastically,sardonically,seductively,slightly,"+
        "slyly,smugly,softly,strangely,stupidly,sweetly,"+
        "viciously,warily,warmly,weakly,wickedly,winningly,wryly,"+
        "manically,in triumph,with forced patience,with menace,#$~$",
      "$mcname$ smiles$ifarg: $lastarg$~$",
      "You smile$ifarg: $arg:brightly,broadly,condescendingly,contentedly,"+
        "crookedly,cutely,demonically,drunkenly,enthusiastically,excitedly,"+
        "faintly,garishly,grimly,happily,humbly,idiotically,innocently,"+
        "insanely,lopsidedly,lovingly,maliciously,nastily,nervously,"+
        "paradoxicaly,paranoically,pertly,pleasantly,quirkily,radiantly,"+
        "sadistically,sarcastically,sardonically,seductively,slightly,"+
        "slyly,smugly,softly,strangely,stupidly,sweetly,"+
        "viciously,warily,warmly,weakly,wickedly,winningly,wryly,"+
        "manically,in triumph,with forced patience,with menace,#$~$"+
        " at $hcname$",
      "$mcname$ smiles$ifarg: $lastarg$~$ at you",
      "$mcname$ smiles$ifarg: $lastarg$~$ at $hcname$" }) }),
  "smoke":   ({ 0, ({
      "You light up a cigarette",
      "$mcname$ lights up a cigarette", }) }),
  "smug":    ({ 0, ({
      "You look smug",
      "$mcname$ looks smug", }) }),
  "snap":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 1, "%s %s",
                   1, "%s at %s", 1, "my %s at %s" }), ({
      "You snap your $arg:fingers,leg,arm in a quick salute$",
      "$mcname$ snaps $mposs$ $lastarg$",
      "You snap your $arg:fingers,leg,arm in a quick salute$ at $hcname$",
      "$mcname$ snaps $mposs$ $lastarg$ at you",
      "$mcname$ snaps $mposs$ $lastarg$ at $hcname$" }) }),
  "snarl":   ({ ({ 0, "%s", 2, "at %s %s", 1, "%s at %s", 1, "%s %s" }), ({
      "You snarl $arg:viciously,demonicaly,happily,nastily,sadly,"+
        "suddenly,unexpectedly$ at $hcname$",
      "$mcname$ snarls $lastarg$ at you",
      "$mcname$ snarls $lastarg$ at $hcname$", }) }),
  "sneer":   ({ ({ 0, "%s" }), ({
      "You sneer at $hcname$",
      "$mcname$ sneers at you",
      "$mcname$ sneers at $hcname$", }) }),
  "sneeze":  ({ ({ 3, "%s", 0, "at %s", 2, "%s at %s" }), ({
      "You sneeze$ifarg: $arg:loudly,quietly,silently,suddenly,"+
        "unexpectedly,violently$~$",
      "$mcname$ sneezes$ifarg: $lastarg$~$",
      "You sneeze$ifarg: $arg:loudly,quietly,silently,suddenly,"+
        "unexpectedly,violently$~$ at $hcname$",
      "$mcname$ sneezes$ifarg: $lastarg$~$ at you",
      "$mcname$ sneezes$ifarg: $lastarg$~$ at $hcname$" }) }),
  "snicker": ({ ({ 3, "%s" }), ({
      "You snicker$ifarg: $arg:inanely,mischievously,nastily,a bit,$~$",
      "$mcname$ snickers$ifarg: $lastarg$~$" }) }),
  "sniff":   ({ ({ 3, "%s" }), ({
      "You sniff$ifarg: $arg:dejectedly,loudly,noisily,silently,in disdain$~$",
      "$mcname$ sniffs$ifarg: $lastarg$~$" }) }),
  "snigger": ({ 0, ({
      "You snigger",
      "$mcname$ sniggers", }) }),
  "snore":   ({ 0, ({
      "You snore loudly",
      "$mcname$ snores loudly" }) }),
  "snort":   ({ ({ 3, "%s" }), ({
      "You snort $arg:derisively,loudly,like a pig,with disdain$",
      "$mcname$ snorts $lastarg$", }) }),
  "snuggle": ({ ({ 0, "%s", 1, "%s %s", 2, "%s %s" }), ({
      "You snuggle up to $hcname$ $arg:affectionately,warmly,gently$",
      "$mcname$ snuggles up to you $lastarg$",
      "$mcname$ snuggles up to $hcname$ $lastarg$" }) }),
  "sob":     ({ ({ 3, "%s", 0, "%s", 0, "on %s" }), ({
      "You sob$ifarg: $arg:cheekily,loudly,despairingly,forlornly,happily,"+
        "quietly,silently,unexpectedly,#$$else$ wretchedly.\nWhy, why?~$",
      "$mcname$ sobs$ifarg: $lastarg$$else$ wretchedly.\nWhy, why?~$",
      "You sob on $mhcname$ shoulder",
      "$mcname$ sobs on your shoulder",
      "$mcname$ sobs on $mhcname$ shoulder", }) }),
  "sorry":   ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You apologize$ifarg: $arg:profusely,reservedly,#$~$ to $hcname$",
      "$mcname$ apologizes$ifarg: $lastarg$~$ to you",
      "$mcname$ apologizes$ifarg: $lastarg$~$ to $hcname$", }) }),
  "spank":   ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You spank $hcname$$ifarg: $arg:carefully,gently,painfully,"+
        "politely,professionaly,seductively,sensuously,sneakily,"+
        "uncontrollably,unexpectedly,vigorously,with an evil smirk,#$"+
        "$else$!~$",
      "$mcname$ spanks you$ifarg: $lastarg$$else$!~$",
      "$mcname$ spanks $hcname$$ifarg: $lastarg$$else$!~$", }) }),
  "speel":   ({ 0, ({
      "You try to speel, but fail miseribibly",
      "$mcname$ tries to speel, but fails miseribibly" }) }),
  "spin":    ({ ({ 3, "%s", }), ({
      "You spin $arg:around like a top,about deliriously$",
      "$mcname$ spins $lastarg$", }), }),
  "spit":    ({ ({ 3, "%s", 0, "%s", 0, "at %s" }), ({
      "You spit$ifarg: $arg:#$~$",
      "$mcname$ spits$ifarg: $arg:#$~$",
      "You spit in $mhcname$ face",
      "$mcname$ spits in your face",
      "$mcname$ spits in $mhcname$ face" }) }),
  "spock":   ({ 0, ({
      "You raise one eyebrow",
      "$mcname$ raises one eyebrow", }) }),
  "spook":   ({ ({ 0, "%s" }), ({
      "You spook $hcname$!",
      "$mcname$ spooks you!\nYou jump in fear!",
      "$mcname$ spooks $hcname$!", }) }),
  "squeal":  ({ ({ 3, "%s" }), ({
      "You squeal in $arg:delight,terror,pain,mortal fear$",
      "$mcname$ squeals in $lastarg$", }), }),
  "squeeze": ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You squeeze $hcname$ $arg:fondly,gently,tightly$",
      "$mcname$ squeezes you $lastarg$",
      "$mcname$ squeezes $hcname$ $lastarg$" }) }),
  "stagger": ({ ({ 3, "%s" }), ({
      "You stagger around$ifarg: $arg:#$~$",
      "$mcname$ staggers around$ifarg: $lastarg$~$" }) }),
  "stamp":   ({ ({ 3, "%s", }), ({
      "You stamp your foot$ifarg: $arg:angrily,frighteningly,impatiently,"+
        "warningly$~$",
      "$mcname$ stamps $mposs$ foot$ifarg: $lastarg$~$" }) }),
  "stand":   ({ ({ 3, "%s", }), ({
      "You stand $arg:up,about,patiently,in uffish thought,on one hand$",
      "$mcname$ stands $lastarg$" }) }),
  "stare":   ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You stare$ifarg: $arg:absent-mindedly,annoyingly,continuously,"+
        "dazedly,desperately,dreamily,enviously,expectantly,fanatically,"+
        "happily,hungrily,intently,jealously,lazily,listlessly,longingly,"+
        "lovingly,mindlessly,politely,respectfully,romantically,rudely,"+
        "sadly,sternly,tentatively,worriedly,#$~$ into space",
      "$mcname$ stares$ifarg: $lastarg$~$ into space",
      "You stare$ifarg: $arg:absent-mindedly,annoyingly,continuously,"+
        "dazedly,desperately,dreamily,enviously,expectantly,fanatically,"+
        "happily,hungrily,intently,jealously,lazily,listlessly,longingly,"+
        "lovingly,mindlessly,politely,respectfully,romantically,rudely,"+
        "sadly,sternly,tentatively,worriedly,#$~$ at $hcname$",
      "$mcname$ stares$ifarg: $lastarg$~$ at you",
      "$mcname$ stares$ifarg: $lastarg$~$ at $hcname$" }) }),
  "stifle":  ({ 0, ({
      "You stifle a giggle",
      "$mcname$ stifles a giggle", }) }),
  "strangle": ({ ({ 0, "%s", 2, "%s %s", 2, "%s about %s", 1, "%s %s" }), ({
      "You strangle yourself",
      "$mcname$ strangles $mobj$self",
      "You strangle $hcname$$ifarg: about $arg:#$~$",
      "$mcname$ strangles you$ifarg: about $arg:#$~$",
      "$hcname$ strangles $mcname$$ifarg: about $arg:#$~$", }) }),
  "stretch": ({ ({ 3, "%s" }), ({
      "You stretch$ifarg: $arg:carefully,excitedly,happily,lazily,sadly,"+
        "seductively,sleepily,slowly,your legs,your arms,your eyebrows$"+
        "$else$ languidly~$",
      "$mcname$ stretches$ifarg: $lastarg$$else$ languidly~$", }), }),
  "stroke":  ({ ({ 0, "%s" }), ({
      "You stroke your chin and say, \"Hmm...\"",
      "$mcname$ strokes $mposs$ chin and says, \"Hmm...\"",
      "You stroke $hcname$",
      "$mcname$ strokes you",
      "$mcname$ strokes $hcname$", }) }),
  "strut":   ({ 0, ({
      "You strut your stuff",
      "$mcname$ struts proudly around the room" }) }),
  "stumble": ({ ({ 3, "%s" }), ({
      "You stumble $ifarg:$arg:#$$else$around the room~$",
      "$mcname$ stumbles $ifarg:$arg:#$$else$around the room~$" }) }),
  "suck":    ({ ({ 3, "%s" }), ({
      "You suck your $arg:thumb,pen,#$",
      "$mcname$ sucks $mposs$ $lastarg$" }) }),
  "sulk":    ({ 0, ({
      "You sulk in the corner",
      "$mcname$ sulks in the corner" }) }),
  "swear":   ({ ({ 3, "%s" }), ({
      "You swear $arg:violently,loudly,on $mposs$ mothers grave$",
      "$mcname$ swears $lastarg$", }), }),
  "sweat":   ({ ({ 3, "%s", 0, "%s", 2, "%s %s",
                   1, "%s %s", 1, "%s on %s" }), ({
      "You sweat $arg:profusely,anxiously,bricks,buckets,hotly,"+
        "patiently,rudely,silently,vigorously,wetly$",
      "$mcname$ sweats $lastarg$",
      "You sweat $arg:profusely,anxiously,bricks,buckets,hotly,"+
        "patiently,rudely,silently,vigorously,wetly$ on $hcname$",
      "$mcname$ sweats $lastarg$ on you",
      "$mcname$ sweats $lastarg$ at $hcname$", }), }),
  "swim":    ({ 0, ({
      "You give a good imitation of swimming",
      "$mcname$ swims around" }) }),
  "tackle":  ({ ({ 0, "%s", 2, "%s %s", 2, "%s in the %s", 1, "%s %s" }), ({
      "You tackle $hcname$ $ifarg:in the $arg:chest,leg,arm,nose,knee,head,"+
        "foot,toe,finger$$else$to the ground!~$",
      "$mcname$ tackles you $ifarg:in the $lastarg$$else$to the ground!~$",
      "$mcname$ tackles $hcname$ $ifarg:in the $lastarg$"+
        "$else$to the ground!~$", }) }),
  "tap":     ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "%s on %s",
                   2, "%s on the %s", 1, "%s %s" }), ({  /* this is furry's */
      "You tap your $arg:foot,arm,fingers,head,nose,shoulder,teeth,"+
        "left leg,right leg$ impatiently",
      "$mcname$ taps $mposs$ $lastarg$ impatiently",
      "You tap $hcname$ on the $arg:shoulder,arm,ear,foot,head,leg,nose,"+
        "teeth$",
      "$mcname$ taps you on the $lastarg$",
      "$mcname$ taps $hcname$ on the $lastarg$" }) }),
  "taunt":   ({ ({ 0, "%s" }), ({
      "You taunt yourself",
      "$mcname$ taunts $mobj$self.  How strange",
      "You taunt $hcname$",
      "$mcname$ taunts you",
      "$mcname$ taunts $hcname$" }) }),
  "tease":   ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s", }), ({
      "You tease yourself",
      "$mcname$ teases $mobj$self, and $mpronoun$ appears to enjoy it",
      "You tease $hcname$ $arg:mercilessly,annoyingly,carefully,"+
        "halfheartedly,idly,insistently,lovingly,mischievously,"+
        "obnoxiously,quickly,rudely,slowly$",
      "$mcname$ teases you $lastarg$",
      "$mcname$ teases $hcname$ $lastarg$", }) }),
  "thank":   ({ ({ 0, "%s", 2, "%s %s" }), ({
      "You thank $hcname$$ifarg: $arg:anyway,graciously,gratuitously,"+
        "profusely,reservedly$~$",
      "$mcname$ thanks you$ifarg: $lastarg$~$",
      "$mcname$ thanks $hcname$$ifarg: $lastarg$~$" }) }),
  "think":   ({ ({ 3, "%s", }), ({
      "You think $arg:carefully,#$",
      "$mcname$ thinks $lastarg$" }) }),
  "throw":   ({ ({ 0, "%s" }), ({
      "You throw $hcname$ to the floor.  \"Hi yyyyaaa!\"",
      "$mcname$ throws you to the floor",
      "$mcname$ throws $hcname$ to the floor in a happy embrace"+
        "$force#smile h at $mname$#2$" }) }),
  "thwok":   ({ ({ 0, "%s" }), ({
      "T H W O K K ! !",
      "$mcname$ \"T H W O K K ! !\"s",
      "You thwok $hcname$",
      "You are summarily thwokked by $mcname$",
      "$mcname$ thwoks $hcname$" }) }),
  "tickle":  ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s" }), ({
      "You tickle $hcname$$ifarg: $arg:carefully,fearlessly,gently,harshly,"+
        "incessantly,inconceivably,mercilessly,ruthlessly,quickly,slowly,"+
        "sneakily,weakly$~$",
      "$mcname$ tickles you$ifarg: $lastarg$~$$force#giggle#2$",
      "$mcname$ tickles $hcname$$ifarg: $lastarg$~$" }) }),
  "tip":     ({ ({ 0, "%s" }), ({
      "You give a stylish tip of your hat",
      "$mcname$ gives a stylish tip of $mposs$ hat",
      "You give a stylish tip of your hat to $hcname$",
      "$mcname$ gives a stylish tip of $mposs$ hat to you",
      "$mcname$ gives a stylish tip of $mposs$ hat to $hcname$" }) }),
  "titter":  ({ ({ 3, "%s" }), ({
      "You titter$ifarg: $arg:falsely,quietly,sarcastically,silently$~$",
      "$mcname$ titters$ifarg: $lastarg$~$", }), }),
  "tongue":  ({ ({ 0, "%s", }), ({
      "You poke your tongue out at $hcname$",
      "$mcname$ pokes $mposs$ tongue out at you",
      "$mcname$ pokes $mposs$ tongue out at $hcname$", }) }),
  "tousle":  ({ ({ 0, "%s" }), ({
      "You tousle $mhcname$ hair",
      "$mcname$ tousles your hair",
      "$mcname$ tousles $mhcname$ hair", }), }),
  "tower":   ({ ({ 0, "%s", 0, "over %s", 2, "%s %s", 2, "over %s %s" }), ({
      "You tower over $hcname$$ifarg: $arg:ominously,threateningly$~$",
      "$mcname$ towers over you$ifarg: $lastarg$~$",
      "$mcname$ towers over $hcname$$ifarg: $lastarg$~$", }), }),
  "tremble": ({ ({ 3, "%s" }), ({
      "You tremble $arg:in fear,insistently,carefully,lightly,violently,"+
        "in anticip.......ation,in nervousness,in pain$",
      "$mcname$ trembles $lastarg$", }), }),
  "trip":    ({ ({ 0, "%s" }), ({
      "You trip up",
      "$mcname$ trips up",
      "You trip $hcname$",
      "$mcname$ trips you",
      "$mcname$ trips $hcname$" }) }),
  "tumble":  ({ 0, ({
      "You tumble head over heels",
      "$mcname$ tumbles head over heels", }), }),
  "tut":     ({ ({ 0, "%s" }), ({
      "You waggle your finger and say, \"Tut tut.\"",
      "$mcname$ waggles $mposs$ finger and says, \"Tut tut.\"",
      "You waggle your finger at $hcname$ and say, \"Tut tut.\"",
      "$mcname$ waggles $mposs$ finger at you and says, \"Tut tut.\"",
      "$mcname$ waggles $mposs$ finger at $hcname$ and says, \"Tut tut.\""
    }) }),
  "twang":   ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You twang $arg:calmly,backwards,beautifully,down,manically,"+
        "rythmically,undyingly,up,upside down,a nice little tune,"+
        "with the wolves$",
      "$mcname$ twangs $lastarg$",
      "You twang $arg:calmly,backwards,beautifully,down,manically,"+
        "rythmically,undyingly,up,upside down,a nice little tune,"+
        "with the wolves$ at $hcname$",
      "$mcname$ twangs $lastarg$ at you",
      "$mcname$ twangs $lastarg$ at $hcname$", }), }),
  "tweak":   ({ ({ 0, "%s", 2, "%s %s", 1, "%s %s", }), ({
      "You tweak $mhcname$ $arg:bottom,arm,bits,ear,leg,nose$",
      "$mcname$ tweaks your $lastarg$",
      "$mcname$ tweaks $mhcname$ $lastarg$" }), }),
  "twiddle": ({ ({ 3, "%s" }), ({
      "You twiddle your $arg:thumbs,fingers,hair,nose$",
      "$mcname$ twiddles $mposs$ $lastarg$" }) }),
  "twitch":  ({ ({ 3, "%s" }), ({
      "You twitch your $arg:nose,arm,body,finger$",
      "$mcname$ twitches $mposs$ $lastarg$" }) }),
  "umm":     ({ 0, ({
      "You scratch your chin and say, \"Ummmm.\"",
      "$mcname$ scratches $mposs$ chin and says, \"Ummmm.\"" }), }),
  "wait":    ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "for %s %s",
                   1, "%s %s", 1, "%s for %s" }), ({
      "You wait $arg:patiently,forever,impatiently,an eternity$",
      "$mcname$ waits $lastarg$",
      "You wait $arg:patiently,forever,impatiently,an eternity$ for $hcname$",
      "$mcname$ waits $lastarg$ for you",
      "$mcname$ waits $lastarg$ for $hcname$", }), }),
  "wake":    ({ ({ 3, "%s", 0, "%s" }), ({
      "You wake $arg:up,up and smell the cat food$",
      "$mcname$ wakes up",
      "You wake up $hcname$",
      "$mcname$ wakes you up",
      "$mcname$ wakes up $hcname$", }), }),
  "waggle":  ({ ({ 0, "at %s", 0, "%s", 2, "%s %s", 1, "%s %s",
                   1, "%s at %s" }), ({
      "$ifarg:You waggle your $arg:arm,ear,eyebrows,head,leg,nose,pinky,"+
        "toe$ at $hcname$$else$What did $hcname$ do wrong??!?~$",
      "$mcname$ waggles $mposs$ $ifarg:$lastarg$$else$finger~$ at you",
      "$mcname$ waggles $mposs$ $ifarg:$lastarg$$else$finger~$"+
        " at $hcname$" }) }),
  "waltz":   ({ ({ 0, "%s", }), ({
      "You waltz around the room with $hcname$",
      "$mcname$ waltzs around the room with you",
      "$mcname$ waltzs around the room with $hcname$", }) }),
  "wave":    ({ ({ 3, "%s", 0, "%s", 0, "at %s", 0, "to %s",
                   2, "%s %s", 2, "at %s %s", 2, "to %s %s",
                   1, "%s %s", 1, "%s at %s", 1, "%s to %s" }), ({
      "You wave$ifarg: $arg:excitedly,forlornly,happily,insanely,lazily,"+
        "longingly,madly,pointlessly,redundantly,sadly,sleepily,tiredly,"+
        "with complete devotion,your tentacles,#$~$",
      "$mcname$ waves$ifarg: $lastarg$~$",
      "You wave$ifarg: $arg:excitedly,forlornly,happily,insanely,lazily,"+
        "longingly,madly,pointlessly,redundantly,sadly,sleepily,tiredly,"+
        "with complete devotion,your tentacles,#$~$ to $hcname$",
      "$mcname$ waves$ifarg: $lastarg$~$ to you",
      "$mcname$ waves$ifarg: $lastarg$~$ to $hcname$" }) }),
  "weep":    ({ ({ 3, "%s", 0, "%s", 0, "for %s" }), ({
      "You weep $arg:unashamedly,bitterly,sadly,uncontrollably$",
      "$mcname$ weeps $lastarg$",
      "You weep with $hcname$",
      "$mcname$ weeps with you",
      "$mcname$ weeps with $hcname$", }), }),
  "whicker": ({ 0, ({
      "You whicker like a horse",
      "$mcname$ whickers like a horse", }) }),
  "whimper": ({ ({ 3, "%s" }), ({
      "You whimper$ifarg: $arg:carefully,diminutively,fearfully,"+
        "happily,meekly,painfully,winningly,in triumph$~$",
      "$mcname$ whimpers$ifarg: $lastarg$~$", }), }),
  "whine":   ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "to %s %s",
                   1, "%s %s", 1, "%s to %s" }), ({
      "You whine $arg:pathetically,#$",
      "$mcname$ whines $lastarg$",
      "You whine $arg:pathetically,#$ to $hcname$",
      "$mcname$ whines $lastarg$ to you",
      "$mcname$ whines $lastarg$ to $hcname$", }), }),
  "whistle": ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s", 2, "at %s %s",
                   1, "%s %s", 1, "%s at %s" }), ({
      "You whistle $arg:innocently,appreciatively,discordantly,loudly,"+
        "musically,pleasantly,tunelessly,#$",
      "$mcname$ whistles $lastarg$",
      "You whistle $arg:appreciatively,discordantly,innocently,loudly,"+
        "musically,pleasantly,tunelessly,#$ at $hcname$",
      "$mcname$ whistles $lastarg$ at you",
      "$mcname$ whistles $lastarg$ at $hcname$" }) }),
  "wibble":  ({ ({ 3, "%s" }), ({
      "You wibble $arg:maddeningly,annoyingly,around,constantly,down,"+
        "loudly,sideways,up$",
      "$mcname$ wibbles $lastarg$", }) }),
  "wiggle":  ({ ({  3, "%s", 0, "%s", 2, "%s %s", 2, "at %s %s",
                    1, "%s %s", 1, "%s at %s" }), ({
      "You wiggle your bottom$ifarg: $arg:arrogantly,enticingly,nonchalantly,"+
        "quickly,suggestively,tunelessly,vigorously$~$",
      "$mcname$ wiggles $mposs$ bottom$ifarg: $lastarg$~$",
      "You wiggle your bottom$ifarg: $arg:arrogantly,enticingly,nonchalantly,"+
        "quickly,suggestively,tunelessly,vigorously$~$ at $hcname$",
      "$mcname$ wiggles $mposs$ bottom$ifarg: $lastarg$~$ at you",
      "$mcname$ wiggles $mposs$ bottom$ifarg: $lastarg$~$ at $hcname$" }) }),
  "wince":   ({ 0, ({ "You wince", "$mcname$ winces" }) }),
  "wink":    ({ ({ 3, "%s", 0, "%s", 0, "at %s", 2, "%s %s",
                   2, "at %s %s", 1, "%s %s", 1, "%s at %s" }), ({
      "You wink$ifarg: $arg:broadly,coquettishly,coyly,curtly,despairingly,"+
        "desperately,grumpily,insolently,knowingly,lazily,lovingly,"+
        "patiently,sadistically,seductively,slowly,suggestively,warily,#$~$",
      "$mcname$ winks$ifarg: $lastarg$~$",
      "You wink$ifarg: $arg:broadly,coquettishly,coyly,curtly,despairingly,"+
        "desperately,grumpily,insolently,knowingly,lazily,lovingly,"+
        "patiently,sadistically,seductively,slowly,suggestively,warily,#$~$"+
        " at $hcname$",
      "$mcname$ winks$ifarg: $lastarg$~$ at you",
      "$mcname$ winks$ifarg: $lastarg$~$ at $hcname$" }) }),
  "wipe":    ({ ({ 3, "%s", 3, "the %s", 0, "%s", 0, "on %s", 2, "%s %s",
                   1, "%s %s", 1, "%s on %s" }), ({
      "You wipe the $arg:sweat from your brow,smile off your face$",
      "$mcname$ wipes the $lastarg$",
      "You wipe your $arg:hands,arm,leg,nose$ on $hcname$",
      "$mcname$ wipes $mposs$ $lastarg$ on you",
      "$mcname$ wipes $mposs$ $lastarg$ on $hcname$" }) }),
  "wobble":  ({ ({ 3, "%s" }), ({
      "You wobble $arg:around a bit,happily,unsteadily,like jelly$",
      "$mcname$ wobbles $lastarg$", }) }),
  "womble":  ({ ({ 3, "%s", 0, "%s", 0, "around %s", 2, "%s %s",
                   1, "%s %s", 1, "%s around %s" }), ({
      "You womble around$ifarg: $arg:#$~$",
      "$mcname$ wombles around$ifarg: $lastarg$~$",
      "You womble around $hcname$ $arg:happily,peacefully,brightly,commonly,"+
        "greenly,once, sadly,twice,doing a dance to the great frog in the "+
        "sky,#$",
      "$mcname$ wombles around you $lastarg$",
      "$mcname$ wombles around $hcname$ $lastarg$" }) }),
  "wonder":  ({ ({ 3, "%s" }), ({
      "You wonder $ifarg:$arg:#$$else$about reality and how "+
        "boring it can be~$",
      "$mcname$ wonder $ifarg:$arg:#$$else$about reality and how "+
        "boring it can be~$", }) }),
  "worship": ({ ({ 3, "%s", 0, "%s" }), ({
      "You worship $ifarg:$arg:#$$else$your favorite deity~$",
      "$mcname$ worships $ifarg:$lastarg$$else$$mposs$ favorite deity~$",
      "You worship $hcname$",
      "$mcname$ worships you",
      "$mcname$ worships $hcname$" }) }),
  "wrinkle": ({ ({ 3, "%s", }), ({
      "You wrinkle your $arg:nose,eyebrows,time$",
      "$mcname$ wrinkles $mposs$ $lastarg$", }) }),
  "yawn":    ({ ({ 3, "%s" }), ({
      "You yawn $arg:tiredly,boredly,brightly,happily,sleepily,in sympathy$",
      "$mcname$ yawns $lastarg$" }) }),
  "yodel":   ({ ({ 3, "%s", 0, "%s", 2, "%s %s", 2, "to %s %s",
                   1, "%s %s", 1, "%s to %s", }), ({
      "You yodel $arg:loudly,annoyingly,carefully,constantly,dreamily,"+
        "feverishly,happily,incessantly,longingly,quickly,romantically,"+
        "sadly,sternly,to the tune of William Tell's Overture,"+
        "tunelessly,with the frogs$",
      "$mcname$ yodels $lastarg$",
      "You yodel $arg:loudly,annoyingly,carefully,constantly,dreamily,"+
        "feverishly,happily,incessantly,longingly,quickly,romantically,"+
        "sadly,sternly,to the tune of William Tell's Overture,"+
        "tunelessly,with the frogs$"+
        " to $hcname$",
      "$mcname$ yodels $lastarg$ to you",
      "$mcname$ yodels $lastarg$ to $hcname$", }), }),
  "zip":     ({ ({ 0, "%s" }), ({
      "You zip around the room",
      "$mcname$ zips around the room",
      "You zip around $hcname$",
      "$mcname$ zips around you",
      "$mcname$ zips around $hcname$", }), }),
]);
}   /* setup() */


string  query_long()
{
    int     i, j;
    string  s, s1, s2, bit;
    string  data;

    string *cmds;
    mixed  *values;


    s = "Here are the New Moon's current soul commands.\n"+
        "The # before a soul command means it has strange arguments.\n"+
        "The * after a soul command means you may only use it at someone.\n"+
        "The + after a soul command means you may or may not use it "+
        "at someone.\n"+
        "Total number of soul commands is " + m_sizeof( soul_data ) + ".\n"+
        "-----------------------------------------------------------"+
        "------------------\n";
    if( calc_long )
    {
        s += sprintf("%#-*s\nShare and enjoy.  Please use the \"soul\" "+
             "command to report errors and to make suggestions for new "+
             "commands.\n", this_player()->query_cols(), calc_long );
        return s;
    }
    cmds = m_indices( soul_data );
    values = m_values( soul_data );
    j = 0;
    data = "";
    cmds = sort_array( cmds, "soul_sort", this_object() );
    for( i = 0; i < sizeof( cmds ); i++ )
    {
        j++;
        bit = cmds[ i ];
        values = soul_data[ cmds[ i ] ];
        if( sizeof( values[ 1 ] ) == 3 )
        {
            bit += "*";
        }
        else if( sizeof( values[ 1 ] ) == 5 )
        {
            bit += "+";
        }
        if( sscanf( values[ 1 ][ 0 ], "%s$arg:%s", s1, s2 ) == 2 )
        {
            bit = "#" + bit;
        }
        data += bit + "\n";
    }

    s += sprintf( "%#-*s\n-------------------------------------"+
                  "----------------------------------------\n"+
                  "Share and enjoy.  Please use the \"soul\" command to "+
                  "report errors and to make suggestions for new commands.\n",
                  this_player()->query_cols(), data );
    calc_long = data;
    return s;
}                                /* query_long() */


int     soul_sort( string s1, string s2 )
{
    return strcmp( s1, s2 );
}                                /* soul_sort() */


string long( string str, int dark )
{
    return query_long();
}


parse_string( s, ob, arg, uhn )
{
    string  s1, s2, s3, s4, str, s5, arr;
    int     i;

    str = s;
    s4 = "";
    while( sscanf( str, "%s$%s$%s", s1, s2, s3 ) == 3 )
        switch( s2 )
        {
            case "mcname":
                if( this_player()->query_invis() && !ob->query_creator() )
                    str = s1 + "Somebody" + s3;
                else
                    str = s1 + this_player()->query_cap_name() + s3;
                break;
            case "mname":
                if( this_player()->query_invis() && !ob->query_creator() )
                    str = s1 + "somebody" + s3;
                else
                    str = s1 + this_player()->query_name() + s3;
                break;
            case "mpronoun":
                str = s1 + this_player()->query_pronoun() + s3;
                break;
            case "hpronoun":
                str = s1 + ob->query_pronoun() + s3;
                break;
            case "mobj":
                str = s1 + this_player()->query_objective() + s3;
                break;
            case "hobj":
                str = s1 + ob->query_objective() + s3;
                break;
            case "mposs":
                str = s1 + this_player()->query_possessive() + s3;
                break;
            case "hposs":
                str = s1 + ob->query_possessive() + s3;
                break;
            case "lastarg":
                str = s1 + lastarg + s3;
                break;
            case "mhcname":
                if( uhn )
                {
                    str = s1 + ob->query_cap_name() + "'s" + s3;
                    break;
                }
            case "hcname":
                if( uhn )
                {
                    str = s1 + ob->query_cap_name() + s3;
                    break;
                }
            case "hname":
                if( uhn )
                {
                    str = s1 + ob->query_name() + s3;
                    break;
                }
            default:
                s4 += s1 + "$" + s2;
                if( !s3 )
                    str = "$";
                else
                    str = "$" + s3;
                break;
        }                        /* switch() */
    str = s4 + str;
    while( sscanf( str, "%s$force#%s#%d$%s", s1, s2, i, s3 ) == 4 )
    {
        call_out( "do_force", i, ({ s2, ob }) );
        str = s1 + s3;
    }
    while( sscanf( str, "%s$arg:%s$%s", s1, s2, s3 ) == 3 )
    {
        if( arg == "?" )
        {
            string *yellow;

            yellow = explode( s2, "," );
            lastarg = yellow[ random( sizeof( yellow ) ) ];
            str = s1 + lastarg + s3;
            lastarg = replace( lastarg, "your",
                               this_player()->query_possessive() );
        }
        else if( s2 == "#" )
        {
            lastarg = replace( arg, "your",
                               this_player()->query_possessive() );
            str = s1 + arg + s3;
        }
        else
        {
            if( sscanf( "," + s2 + global_adj + ",", "%s," + arg + "%s,%s",
                        s2, s4, s5 ) == 3 )
            {
                str = s1 + arg + s4 + s3;
                lastarg = replace( arg + s4, "your",
                                   this_player()->query_possessive() );
            }
            else
            {
                if( sscanf( "," + s2 + ",", "%s,#,%s", s2, s4 ) == 2 )
                {
                    str = s1 + arg + s3;
                    lastarg = replace( arg, "your",
                                       this_player()->query_possessive() );
                }
                else
                {
                    write( "You cannot do that.  Available options are " +
                           replace( s2, ",", ", " ) + ".\n" );
                    return 0;
                }
            }
        }
    }
    while( sscanf( str, "%s$ifarg:%s~$%s", s1, s2, s3 ) == 3 )
    {
        string  estr;

        sscanf( s2, "%s$else$%s", s2, estr );
        if( arg && arg != "" )
            str = s1 + parse_string( s2, ob, arg, 1 ) + s3;
        else
            if( estr )
                str = s1 + parse_string( estr, ob, arg, 1 ) + s3;
            else
                str = s1 + s3;
    }
    return str;
}                                /* parse_string() */


find_all_liv( str )
{
    object  ob, ret;
    int     i;

    ret = ({ });
    str = lower_case( str );
    if( str == "creators" && this_player()->query_creator() &&
            !this_player()->check_earmuffs( "remote-soul" ) )
    {
        ob = users();
        for( i = 0; i < sizeof( ob ); i++ )
            if( ob[ i ] == this_player() || ob[ i ]->query_invis() ||
                    !ob[ i ]->query_creator() ||
                    ob[ i ]->check_earmuffs( "remote-soul" ) )
            {
                ob = delete( ob, i, 1 );
                i--;
            }
        return ob;
    }
    if( str == "everyone" && this_player()->query_creator() &&
            !environment( this_player() )->query_property( "no remote" ) &&
            !this_player()->check_earmuffs( "remote-soul" ) )
    {
        ob = users();
        for( i = 0; i < sizeof( ob ); i++ )
            if( ob[ i ] == this_player() || ob[ i ]->query_invis() ||
                    ob[ i ]->check_earmuffs( "remote-soul" ) )
            {
                ob = delete( ob, i, 1 );
                i--;
            }
        return ob;
    }
    if( str == "someone" && !this_player()->check_earmuffs( "remote-soul" ) &&
            !environment( this_player() )->query_property( "no remote" ) )
    {
        ob = users() - ({ this_player() });
        if( !sizeof( ob ) )
            return({ this_player() });
        do
        {
            ret = ob[ random( sizeof( ob ) ) ];
        }
        while( ret->check_earmuffs( "remote-soul" ) || ret->query_invis() );
        return({ ret });
    }
    ob = find_match( str, environment( this_player() ) );
    for( i = 0; i < sizeof( ob ); i++ )
        if( living( ob[ i ] ) && ob[ i ] != this_player() &&
                member_array( ob[ i ], ret ) == -1 )
            ret += ({ ob[ i ] });
    if( sizeof( ret ) )
        return ret;
    if( ( ob = find_living( str ) ) )
        if( member_array( ob, ret ) == -1 &&
                !environment( this_player() )->query_property( "no remote" ) &&
                !this_player()->check_earmuffs( "remote-soul" ) &&
                !ob->check_earmuffs( "remote-soul" ) )
        {
            ret += ({ ob });
        }
    return ret;
}                                /* find_all_liv() */


string  get_name( object ob )
{
    return( string ) ob->query_cap_name();
}                                /* get_name() */


soul_command( verb, str )
{
    int     i, cur, j, lvl;
    object *ob, *tmp_ob;
    string  tmp, nick, last, liv, other, s1, s2, livfail;
    mixed  *data;

    lastarg = "";
    ob = ({ });
    data = soul_data[ verb ];
    if( !data )
        return 0;

    if( str && sizeof( data[ 1 ] ) == 2 && data[ 1 ][ 0 ] != '#' )
        notify_fail( "No matter how hard you try, you fail to manage " +
                     "this.\n" );

    if( !data[ 0 ] || !str )
    {
        liv = 0;
        other = "";
    }
    else
        for( j = 0; j < sizeof( data[ 0 ] ); j += 2 )
            switch( data[ 0 ][ j ] )
            {
                case 0:
                    if( lvl > 1 )
                        break;
                    if( sscanf( str, data[ 0 ][ j + 1 ], s1 ) == 1 )
                        if( sizeof( ( tmp_ob = find_all_liv( s1 ) ) ) )
                        {
                            lvl = 1;
                            other = "";
                            liv = s1;
                            ob = tmp_ob;
                        }
                        else
                            livfail = s1;
                    break;
                case 1:
                    if( lvl > 2 )
                        break;
                    if( sscanf( str, data[ 0 ][ j + 1 ], s1, s2 ) == 2 )
                        if( sizeof( ( tmp_ob = find_all_liv( s2 ) ) ) )
                        {
                            lvl = 2;
                            liv = s2;
                            other = s1;
                            if( data[ 0 ][ j + 1 ] != "%s %s" )
                                lvl++;
                            ob = tmp_ob;
                        }
                        else
                            livfail = s2;
                    break;
                case 2:
                    if( lvl > 2 )
                        break;
                    if( sscanf( str, data[ 0 ][ j + 1 ], s1, s2 ) == 2 )
                        if( sizeof( ( tmp_ob = find_all_liv( s1 ) ) ) )
                        {
                            lvl = 2;
                            liv = s1;
                            other = s2;
                            if( data[ 0 ][ j + 1 ] != "%s %s" )
                                lvl++;
                            ob = tmp_ob;
                        }
                        else
                            livfail = s2;
                    break;
                case 3:
                    if( lvl > 0 )
                        break;
                    if( sscanf( str, data[ 0 ][ j + 1 ], s1 ) == 1 )
                    {
                        other = s1;
                        liv = 0;
                        ob = ({ });
                    }
                    break;
            }                        /* end switch */

    if( liv )
    {
        string  me, him, every;

        if( !liv && ( str && data[ 1 ][ 0 ] != '#' ) )
            liv = str;
        str = other;
        if( !sizeof( ob ) )
        {
            notify_fail( "Sorry, but '" + liv + "' is not logged in.\n" );
            return 0;
        }
        if( sizeof( data[ 1 ] ) == 3 )
        {
            me = data[ 1 ][ 0 ];
            him = data[ 1 ][ 1 ];
            every = data[ 1 ][ 2 ];
        }
        else
            if( sizeof( data[ 1 ] ) == 5 )
            {
                me = data[ 1 ][ 2 ];
                him = data[ 1 ][ 3 ];
                every = data[ 1 ][ 4 ];
            }
            else
            {
                notify_fail( "You cannot use that soul command in "+
                             "two thingy mode.\n" );
                return 0;
            }
        if( sizeof( ob ) == 1 )
        {
            tmp = parse_string( me, ob[ cur ], str, 1 );
            if( !tmp )
                return 1;

/* targ */  s1 = parse_string( him, ob[ cur ], str, 1 );
            if( member_array( extract( s1, strlen( s1 ) - 1 ), PUNCT ) == -1 )
                s1 += ".";
            ob[ 0 ]->event_soul( this_player(), s1 + "\n", ({ }),
                                 verb, last, ob[ 0 ] );
            ob[ 0 ]->event_soul_command( this_object(), verb, this_player(),
                                         liv, other );

/* env */   s2 = parse_string( every, ob[ cur ], str, 1 );
            if( member_array( extract( s2, strlen( s2 ) - 1 ), PUNCT ) == -1 )
                s2 += ".";
            event( environment( previous_object() ), "soul", s2 + "\n",
                   ({ ob[ 0 ], previous_object() }), verb, last, ob[ 0 ] );
            if( environment( previous_object() ) != environment( ob[ 0 ] ) &&
                    environment( ob[ 0 ] ) )
            {
                event( environment( ob[ cur ] ), "soul", s2 + "\n",
                       ({ ob[ 0 ], previous_object() }), verb, last, ob[ 0 ] );
            }

/* me */    if( member_array( extract( tmp, strlen( tmp ) - 1 ), PUNCT ) == -1 )
                tmp += ".";
            this_player()->event_soul( this_player(), tmp + "\n", ({ }),
                                       verb, last, ob[ 0 ] );
        }
        else
        {
            tmp = parse_string( me, ob, str );
            if( !tmp )
                return 1;
            parse_string( him, ob, str );        /* To get the forces */
            s2 = parse_string( every, ob, str );
            tmp_ob = map_array( ob, "get_name", this_object() );
            ob = unique_array( ob, "query_current_room" );

            this_player()->event_soul( this_player(),
                               replace( tmp, ({ "$hcname$",
                               ( s1 = implode( tmp_ob[ 1..1000 ], ", " ) +
                                   " and " + tmp_ob[ 0 ] ),
                               "$mhcname$", s1 + "'s" }) ) + ".\n", ({ }),
                               verb, last, ob );
            s1 = replace(s2, ({ "$hcname$",
                                ( s1 = implode( tmp_ob[ 1..1000 ], ", " ) +
                                " and " + tmp_ob[ 0 ] ),
                                "$mhcname$", s1 + "'s" }) );
            if( (int)this_player()->query_social_points() < sizeof( ob ) * 3 )
            {
                notify_fail( "You don't have enough social points.\n" );
                return 0;
            }
            this_player()->adjust_social_points( -sizeof( ob ) * 3 );
            for( i = 0; i < sizeof( ob ); i++ )
            {
                event( environment( ob[ i ][ 0 ] ), "soul", s1 + ".\n",
                       ({ previous_object() }) + ob[ i ], verb, last, ob[ i ] );
                for( cur = 0; cur < sizeof( ob[ i ] ); cur++ )
                    ob[ i ][ cur ]->event_soul(
                        this_player(),
                        replace( s2, ({
                            "$hcname$",
                            implode( tmp_ob - ({ get_name( ob[ i ][ cur ] ) }),
                                     ", " ) + " and you",
                            "$mhcname$",
                            implode( tmp_ob - ({ get_name( ob[ i ][ cur ] ) }),
                                     ", " ) + " and your",
                        }) ) + ".\n", ({ }), verb, last, ob[ i ][ cur ] );
            }
        }
/*
   while( cur < sizeof( ob ))
   {
   if( environment( ob[ cur ] ) != environment( this_player() ) )
   if( this_player()->query_social_points() < 0 )
   {
   notify_fail( "Not enough social points to do that.\n" );
   return 0;
   }
   else
   this_player()->adjust_social_points( -3 );
   tmp = parse_string( me, ob[ cur ], str );
   if( !tmp )
   return 1;

   this_player()->event_soul( this_player(), tmp + ".\n",
   ({}), verb, last, ob[ cur ]);
   ob[ cur ]->event_soul( this_player(),
   parse_string( him, ob[ cur ], str, last )+
   ".\n", verb, last, ob[ cur ]);
   ob[ cur ]->event_soul_command( this_object(), verb,
   this_player(), liv, other );
   event( environment( previous_object() ), "soul",
   parse_string( every, ob[ cur ], str, last ) + ".\n",
   ({ ob[ cur ], previous_object() }), verb, last, ob[ cur ]);
   if( environment( previous_object() ) != environment( ob[ cur ] ) &&
   environment( ob[ cur ] ) )
   {
   event( environment( ob[ cur ]), "soul",
   parse_string( every, ob[ cur ], str, last ) + ".\n",
   ({ ob[ cur ], previous_object() }), verb, last, ob[ cur ]);
   }
   cur++;
   }
*/
        return 1;
    }
    else
        if( sizeof( data[ 1 ] ) == 3 )
        {
            if( !livfail )
                notify_fail( "You don't have the courage to do that.\n" );
            else
                notify_fail( "Cannot find '" + livfail + "'.\n" );
            return 0;
        }
    if( !other )
        other = "";
    tmp = parse_string( data[ 1 ][ 0 ], ob, other );
    if( !tmp )
        return 1;

    s1 = parse_string( data[ 1 ][ 1 ], this_player(), other );
    if( member_array( extract( s1, strlen( s1 ) - 1 ), PUNCT ) == -1 )
        s1 += ".";
    event( environment( previous_object() ), "soul", s1 + "\n",
           ({ previous_object() }), verb, last, 0 );

    if( member_array( extract( tmp, strlen( tmp ) - 1 ), PUNCT ) == -1 )
        tmp += ".";
    this_player()->event_soul( this_player(), tmp + "\n",
                               ({ }), verb, last, 0 );
    return 1;
}                                /* soul_command() */


do_force( str )
{
    int     i;

    if( undefinedp( soul_data[ str[ 0 ] ] ) )
        return;
    if( pointerp( str[ 1 ] ) )
        for( i = 0; i < sizeof( str[ 1 ] ); i++ )
            str[ 1 ][ i ]->soul_com_force( str[ 0 ] );
    else
        str[ 1 ]->soul_com_force( str[ 0 ] );
}


void    add_soul_command( string name, mixed format, mixed thingo )
{
    if( soul_data[ name ] )
        return;

    if( format && !pointerp( format ) )
        return;
    if( !stringp( name ) )
        return;
    if( !pointerp( thingo ) )
        return;
    if( sizeof( thingo ) != 3 && sizeof( thingo ) != 2 &&
            sizeof( thingo ) != 5 )
        return;
    soul_data[ name ] = ({ format, thingo });
}


void    delete_soul_command( string name )
{
    soul_data = m_delete( soul_data, name );
}


string  help_soul( string str )
{
    int     j;
    int     i, off;
    string  s1, s2, s3, s4, ret, *bit;
    object  ob;
    mixed  *data;

    data = soul_data[ str ];
    if( !data )
        return 0;

    ret = "";
    if( !pointerp( data[ 0 ] ) )
        return( sprintf( "The soul command \"%s\" has no optional " +
                         "parameters.\n", str ) );

    for( j = 0; j < sizeof( data[ 0 ] ); j += 2 )
    {
        bit = explode( " " + data[ 0 ][ j + 1 ] + " ", "%s" );
        switch( data[ 0 ][ j ] )
        {
            case 0:
                ret += str + bit[ 0 ] + "<person>" + bit[ 1 ];
                break;
            case 2:
                ret += str + bit[ 0 ] + "<person>" + bit[ 1 ] + "<argument>" +
                       bit[ 2 ];
                break;
            case 1:
                ret += str + bit[ 0 ] + "<argument>" + bit[ 1 ] + "<person>" +
                       bit[ 2 ];
                break;
            case 3:
                ret += str + bit[ 0 ] + "<argument>" + bit[ 1 ];
                break;
        }
        ret += "\n";
    }

    ret = "-=*=- -=*=- -=*=- -=*=- -=*=- -=*=- -=*=- -=*=- -=*=- " +
          "-=*=- -=*=- -=*=- -=*=-\n" +
          "Usage of the soul command \""+str+"\":\n" +
          "------------------------------------------------------" +
          "-----------------------\n" +
          sprintf( "%-#*s\n", this_player()->query_cols(), ret );

    if( sizeof( data[ 1 ] ) == 2 || sizeof( data[ 1 ] ) == 5 )
    {
        ret += "\nIn non-targeted mode:\n";
        bit = ({ });
        if( sscanf( data[ 1 ][ 0 ], "%s$arg:%s$%s", s1, s2, s3 ) == 3 )
            bit = explode( s2, "," );
        if( sscanf( data[ 1 ][ 0 ], "%s$ifarg:%s~$%s", s1, s2, s3 ) == 3 )
        {
            ret += "\"" + str + "\" has a different no-arguments command.\n" +
                   "The arguments for \"" + str + "\" are selected from: " +
                   implode( bit, ", " ) + ".\n";
        }
        else
            if( !sizeof( bit ) )
                ret += "\"" + str + "\" has no cute arguments.\n";
            else
                ret += "\"" + str + "\" has these cute arguments: " +
                       implode( bit, ", " ) + ".\n";
        off = 2;
    }
    if( sizeof( data[ 1 ] ) == 3 || sizeof( data[ 1 ] ) == 5 )
    {
        ret += "\nIn targeted mode:\n";
        bit = ({ });
        if( sscanf( data[ 1 ][ off + 0 ], "%s$arg:%s$%s", s1, s2, s3 ) == 3 )
            bit = explode( s2, "," );
        if( sscanf( data[ 1 ][ off + 0 ], "%s$ifarg:%s~$%s", s1, s2, s3 ) == 3 )
        {
            ret += "\"" + str + "\" has a different no-arguments command.\n" +
                   "The arguments for \"" + str + "\" are selected from: " +
                   implode( bit, ", ") + ".\n";
        }
        else
            if( !sizeof( bit ) )
                ret += "\"" + str + "\" has no cute arguments.\n";
            else
                ret += "\"" + str + "\" has these cute arguments: " +
                       implode( bit, ", " ) + ".\n";
        off = 2;
    }
    ret += "------------------------------------------------------"+
           "-----------------------\n";
    return ret;
}                                /* soul_help() */