No, not really. Quests, like other objects, can have scripts added to them ('extending' them). These scripts can contain functions which can be called from any stage or scene phase or dialogue fragment. The only difference is that in calling them from a stage you can use the special kmyquest variable, with the kmyquest dropdown box, to avoid having to make a cast in your script. In other words, where in a scene phase you have to use something like
(GetOwningQuest() as MyQuestScript).MyFunction()
in a stage you can set the kmyQuest dropdown to MyQuestScript and then just write
kmyQuest.MyFunction()
It's a coding convenience, that's all.
But don't put stuff starting or stopping the brawl in your quest stages - I happen to know that those are triggered by your 'detectplayer' marker, and will foul it up. The RegisterForSingleUpdate method I showed works fine.