As a start, two of your "ulevel"s have no $ before them.
You may want to try reordering your "ulevel" statements to reflect a descending order, as follows:
Code:
sub EVENT_SAY
{
if (($text=~/hail/i) && ($ulevel >= 35))
{
quest::say("Greetings, $name. I am Explorer Ganedin. I have traveled far and wide to many ancient places. Some of the most interested places have been the [dungeons].");
}
elsif (($text=~/hail/i)&&($ulevel >= 1))
{
quest::say("I am sorry, $name, but you are not yet experienced enough to traverse the dungeons. Come back when you are more experienced and I will have more information.");
}
if (($text=~/dungeons/i)&&(ulevel >=35))
{
quest::say("There are many dungeons that I can take you to. The more experienced you are, however, the more options you have. I can take you to the following places: [Takish], [Mistmoore], [Guk], [Rujarkian], or if you are feeling up to it, [Miragul's].");
}
}
Something else you could try is to remove the double parens. Instead of . . .
if (($text=~/hail/i) && ($ulevel >= 35))
Try . . .
if ($text=~/hail/i && $ulevel >= 35)