Take a closer look at your scripts you posted. Even the one you posted that you said works, would not actually work.
Code:
sub EVENT_SPAWN
{
quest::settimer("woodcut",1);
}
sub EVENT_TIMER
{
if ($timer eq "mine")
{
# Random Animations: 2h slash and 1h slash
my $anivar1=quest::ChooseRandom(3,5);
quest::doanim($anivar1);
quest::settimer("woodcut",3);
}
}
sub EVENT_SAY
{
if($text=~/Hail/)
{
quest::emote("appears to be dripping in sweat as they chip away at large chunks of ore and crystal");
quest::say("I don't mean to be rude but go away. There is enough work to do here without some outsider wasting our precious daylight.");
}
}
You need to check for the same timer name in EVENT_TIMER that you set the timer as in EVENT_SPAWN.
Other than that, your 2 random timer scripts look fine.