I know this is sort of getting away from the topic of this post, but how are you calling the emote?
When I run it with a simple say event it works fine. I get the yellow text immediately. Granted I haven't tried it with anything else, but just curious as to how you are calling it.
Code:
sub EVENT_SAY {
if($text =~ /Hail/i) {
quest::we(15, "You sense the ring has been found. It is now in the vicinity of $zoneln.");
}}