
  Building verbs on Haven  (Nightmare-IVr5 lib)


  There are 2 main sections to creating a verb.  The first and primary
  importance is NOT the verb code itself, it is creating an inheritable
  that handles an object's reaction and response to the verb.

  For example, it is more important and more difficult to create the
  functions which allow an item to be repaired than it is to create
  the code for the actual verb repair.


  To begin with, one must remember that all verbs use a set-piece 
  format of action and reaction.  These are defined by the verb 
  parser, which checks how commands are issued.

  To begin with, we will start with the easy stuff, how to create
  a basic verb.


#include <lib.h>
inherit LIB_VERB;

static void create() {
  verb::create();
  SetVerb("chuckle");
  SetRules("","LIV");
  SetHelp("Syntax:  chuckle, chuckle LIV");
  }

  That is the create function for a basic verb called 'chuckle'
  which allows the agent (the person performing the action) to
  either chuckle with no arguments or chuckle at a LIVing object.

  SetVerb()
    This is simply what it sounds like, a one word command that
    is issued to begin this verb.

  SetRules()
    This defines how the parser can accept arguments to the verb.
    Acceptable rules are:
      "", "LIV", "OBJ", "WRD"
    these rules also accept many prepositions, such as:
        "on", "in", "at", "of", "from"

  For example, an acceptable rule would be "at LIV"

  SetHelp()
    This is simply a string returned when 'help <verb>' command is used.

--

  Parser Code:

  mixed can_verb_rule()

  This returns either a string failure message or 1, depending on
  whether or not the agent CAN perform the verb.

  For example, you could return "Aren't you rather busy?"
  after a check to see if the player is in combat.

  remember to return 1 if the action is allowed.

  mixed do_verb_rule()
   This implies that all checks have been made, and the verb will
    happen.  This is the actual code to complete the verb, including
    all effects and reactions.

--

  Response code

  This is code added to an object which allows the target to be affected
  by the verb.

  mixed direct_verb_rule()

  This returns either a string failure or 1 to the AGENT informing 
  (upon failure) of why the target cannot be affected by the verb.
  If no direct is given in target object, it will return :
  "You cannot do that to that."

  -- 

  Advanced Stuff:

  indirect_verb_firstobject_rule/secondobject()

    This is the code for an agent acting on TWO objects, as in
    'give sword to bob'.

    In which, the sword will call direct_give_obj() and bob will
    have to call 'indirect_give_obj_to_liv()'
    This should again return a string or 1.

  Examples in lib.
