I tried to spawn NPC's inside a timer(with the perl quest system), and it crashed the zone.exe file when attempting to do so... this is the perl script I was using that crashed zone.exe:
	Code:
	sub EVENT_DEATH
{
quest::echo("TimerEnds");
quest::say("Impossible!  How... aarrgh.");
quest::stoptimer(1);
}
sub EVENT_ATTACK
{
quest::echo("TimerStarts");
quest::settimer(1,15);
}
sub EVENT_TIMER
{
quest::echo("TimerGoesOff");
quest::spawn(170454,0,0,-793,-883,67);
}
 zone.exe would tell me 'TimerGoesOff' and then crash with a message about some kind of error with CastToClient()... soo I made this code change in zone.cpp:
Around line 708 is the code
	Code:
	parse->Event(EVENT_TIMER,p->mob->GetNPCTypeID(),p->name.c_str(),p->mob,0);
 And I changed it to
	Code:
	parse->Event(EVENT_TIMER,p->mob->GetNPCTypeID(),p->name.c_str(),p->mob,p->mob->CastToMob());
 And suddenly I'm able to spawn NPC's from inside a timer, now enstead of crashing zone.exe my script spawns an npc every 15 seconds until the trigger mob dies.
Now, I'm a novice coder(in C++ anyways), and I have no idea if I screwed something else up by doing this.  Does this look like a decent fix?  
[edit] Hmm already ran into a couple problems.  It's only spawning one mob, first of all, no matter how many I put in there... and quest::me still isn't working inside the timer(didn't work before the fix either, though).