SYNOPSIS #include set_driver_hook(H_MODIFY_COMMAND, value) being: int|string (string cmd, object player) int|string (string cmd) DESCRIPTION Optional hook to modify commands (both entered or given by a call to command()) before the parser sees them. Hook setting can be any closure, the name of the function to call in the object, or a mapping. For interactives this hook is used only if the interactive object has no command modifier already set by the efun set_modify_command(). If the hook is a closure, it is called with the entered command as first, and the command giving player as second argument. Unbound lambda closures are bound to the command giving player. If the hook is a string, it is used as the name of an lfun in the command giving player, which is called with the command as argument. If the hook is a mapping, it is queried with the given command as index, and the data retrieved is used as new command (defaults to 0 if no data is stored for a given command). If an entry is a closure instead of a string, it is called as int|string (string cmd, object player) and the result from the call is used as 'the' command. The result is treated equal in all three cases: - If the result is a string, it is the new command to execute instead of the given one. Note that it is not possible to make several commands from one this way! - If the result is a non-zero number, the given command is to be ignored. In case of the closure/lfun setting this may mean that the closure/lfun already executed it. - If the result is 0, the originally given command is to be used. It is possible for the hook to change the command giver (this_player()) for the execution of the command. This means that even though the commands are execute for the original commandgiver, this_player() will return the changed commandgiver. HISTORY SEE ALSO hooks(C), command(H), modify_command_fname(H), notify_fail(H), send_notify_fail(H)