Yeah, you need to return to the event and return from there:
on ^*:Text:*:#:*: {
if ($notify($nick)) return
alias1 $1-
if (%shouldreturn) return
halt
}
alias1 {
eventual code..
if (shouldreturn) { set -u %shouldreturn | return }
eventual code..
}
Instead of a /stop command, maybe /halt could be improved with a switch so that /haltdef is not executed when /halt is used