"if (% $+ $nick $+ .find == $nick) { halt }" won't work because it isn't evaluated.
It would need to be "if (% [ $+ [ $nick ] $+ .find ] == $nick)" or "if ($eval($+(%,$nick,.find),2) == $nick)"
Apart from that, this needs less code
on *:text:@find *:#{
if %@find. [ $+ [ $nick ] ] { return }
; ^ if the variable is set, the script 'returns'
; (stops further processing in THIS code block)
set -u60 %@find. $+ $nick 1
; ^ if the variable is set, the script never gets to this line (or any following)
;rest of code goes here
}