====HookName data==== A hook name is like a variable name, but with ''%%?%%'' replacing the ''%%$%%'' sigil. When given to a macro that accepts it, it signifies that //all// hooks with the given name should be affected by the macro. For instance, ''%%(click: ?red)%%'' will cause //all// hooks with a ''%%%%'' nametag to be subject to the [[harlowe:click|(click:)]] macro's behaviour. In earlier Harlowe versions, it was possible to also use hook names with [[harlowe:set|(set:)]], [[harlowe:put|(put:)]] and [[harlowe:move|(move:)]] to modify the text of the hooks, but macros such as [[harlowe:replace|(replace:)]] should be used to accomplish this instead. If you only want some of the hooks with the given name to be affected, you can treat the hook name as a sort of read-only [[harlowe:Array|Array]]: access its ''%%1st%%'' element (such as by ''%%?red's 1st%%'') to only affect the first such named hook in the passage, access the ''%%last%%'' to affect the last, and so forth. (Even specifying an array of positions, like ''%%?red's (a:1,3,5)%%'', will work.) Unlike arrays, though, you can't access their ''%%length%%'', nor can you spread them with ''%%...%%''. If you need to, you cal also add hook names together to affect both at the same time: ''%%(click: ?red + ?blue's 1st)%%'' will affect all hooks tagged ''%%