But there don't seem to be any other ways to bypass the error besides using startThread.
By the way, I'll rework your Hafad: I'll make it so that his ability also affects heroes, even if they are in the town.
You can, of course, do it yourself. You'll just need one function without triggers and forced adjacency.