///////////////////////////////////////////////////////////////////////////////
// RTS - Critical Process Keep Alive Heartbeat
// By Deva Bryson Winblood. 01/22/2004
///////////////////////////////////////////////////////////////////////////////
void main()
{
    int nDay=GetCalendarDay();
    object oMod=GetModule();
    int nRMGDay=GetLocalInt(oMod,"nRMGDay");
    int nSLVDay=GetLocalInt(oMod,"nSLVDay");
    int nDisableNonEssential=GetLocalInt(oMod,"nDisableNonEssential");
    ExecuteScript("spawn_cleaners",oMod);
    if (nRMGDay==0)
    {
      SetLocalInt(oMod,"nRMGDay",nDay);
      nRMGDay=nDay;
    }
    if (nSLVDay==0)
    {
      SetLocalInt(oMod,"nSLVDay",nDay);
      nSLVDay=nDay;
    }
    if (abs(nDay-nSLVDay)>1&&nDisableNonEssential!=TRUE)
    { // kickstart slavers
      //SendMessageToPC(GetFirstPC(),"KICKSTART of Slavers was required.");
      if (GetLocalObject(oMod,"oSCM")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oSCM")); DeleteLocalObject(oMod,"oSCM"); }
      if (GetLocalObject(oMod,"oSG1")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oSG1")); DeleteLocalObject(oMod,"oSG1"); }
      if (GetLocalObject(oMod,"oSG2")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oSG2")); DeleteLocalObject(oMod,"oSG2"); }
      if (GetLocalObject(oMod,"oSG3")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oSG3")); DeleteLocalObject(oMod,"oSG3"); }
      if (GetLocalObject(oMod,"oSG4")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oSG4")); DeleteLocalObject(oMod,"oSG4"); }
      if (GetLocalObject(oMod,"oSSO")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oSSO")); DeleteLocalObject(oMod,"oSSO"); }
      if (GetLocalObject(oMod,"oSIL")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oSIL")); DeleteLocalObject(oMod,"oSIL"); }
      if (GetLocalObject(oMod,"oSlaverDest")!=OBJECT_INVALID) DeleteLocalObject(oMod,"oSlaverDest");
      DeleteLocalInt(oMod,"nSLAVEC");
      DeleteLocalInt(oMod,"nSlaverState");
      DeleteLocalInt(oMod,"nSlaverDestNum");
      DeleteLocalInt(oMod,"nSlaverHuntNum");
      DeleteLocalInt(oMod,"nSlaverSpeed");
      SetLocalInt(oMod,"nSlaveLaunch",GetLocalInt(oMod,"nSlaveLaunch")+1);
      ExecuteScript("slaver_and_slave",oMod);
    } // kickstart slavers
    if (abs(nDay-nRMGDay)>1&&nDisableNonEssential!=TRUE)
    { // kickstart roving merchants
      //SendMessageToPC(GetFirstPC(),"KICKSTART of Roving Merchants was required.");
      if (GetLocalObject(oMod,"oRMGMerchant")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oRMGMerchant")); DeleteLocalObject(oMod,"oRMGMerchant"); }
      if (GetLocalObject(oMod,"oRMGG1")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oRMGG1")); DeleteLocalObject(oMod,"oRMGG1"); }
      if (GetLocalObject(oMod,"oRMGG2")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oRMGG2")); DeleteLocalObject(oMod,"oRMGG2"); }
      if (GetLocalObject(oMod,"oRMGG3")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oRMGG3")); DeleteLocalObject(oMod,"oRMGG3"); }
      if (GetLocalObject(oMod,"oRMGG4")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oRMGG4")); DeleteLocalObject(oMod,"oRMGG4"); }
      if (GetLocalObject(oMod,"oRMGG5")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oRMGG5")); DeleteLocalObject(oMod,"oRMGG5"); }
      if (GetLocalObject(oMod,"oRMGOx")!=OBJECT_INVALID) { DestroyObject(GetLocalObject(oMod,"oRMGOx")); DeleteLocalObject(oMod,"oRMGOx"); }
      if (GetLocalObject(oMod,"oRMGDest")!=OBJECT_INVALID) DeleteLocalObject(oMod,"oRMGDest");
      DeleteLocalInt(oMod,"nRMGState");
      DeleteLocalInt(oMod,"nRMGSpeed");
      DeleteLocalInt(oMod,"nRMGDestN");
      SetLocalInt(oMod,"nRMGLaunch",GetLocalInt(oMod,"nRMGLaunch")+1);
      ExecuteScript("rmg_main",oMod);
    } // kickstart roving merchants
}