void main()
{
object oPC=GetEnteringObject();
if (!GetIsPC(oPC))
{
return;
}

// will only do it every so often
// sets "NW_DO_ONCE" back to 0 if nSpawnDelay has passed
    int nCurrentHour = (GetCalendarYear()-1)*12*28*24 +
    (GetCalendarMonth()-1)*28*24 +
    (GetCalendarDay()-1)*24 +
    GetTimeHour();
    int nLastSpawnHour = GetLocalInt(OBJECT_SELF,"LAST_SPAWN_HOUR");
    int nSpawnDelay = 0;
    if (nCurrentHour > (nLastSpawnHour + nSpawnDelay))
    {
       SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",0);
    }

    //return if time has not passed yet
    if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0)
    {
       return;
    }

    // Set the times
    SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
    SetLocalInt(OBJECT_SELF,"LAST_SPAWN_HOUR",nCurrentHour);

// a one in two chance of simply returning, ie resetting timer and not going off
if (d2()==1)
{
return;
}


object oFungus=GetNearestObjectByTag("jw_nun_pmold");
{
SignalEvent(oFungus,EventUserDefined(50));
}

}