SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_NOTIFY_FAIL, value)

        <value> being:

          string <msg>
          string <closure>(string entered_command, object cmd_giver)

DESCRIPTION
        Mandatory hook to issue the default message if an entered
        command couldn't be parsed and no notify_fail() command is in
        effect.  Hook setting can be a any closure, or a string.

        If set to a string, it is the message returned to the
        player.

        If set to a closure, it is called with the command and the
        command giver as arguments, and the result is used as failure
        message. Lambda closures are bound to this_player() prior to
        execution.

        <cmd_giver> is the object which received the command in the
        first place. It is usually identical with this_player(),
        unless the H_MODIFY_COMMAND hook changed it.

HISTORY
        LDMud 3.2.7 added the new 'command_giver' argument.

SEE ALSO
        hooks(C), command(H), modify_command(H), modify_command_fname(H),
        send_notify_fail(H)
