// hb_spawner
#include "antistuck_h"

void fnWander()
{ // wander around the area
  object oWP=GetNearestObject(OBJECT_TYPE_WAYPOINT,OBJECT_SELF,d10());
  if (GetIsInCombat(OBJECT_SELF)==FALSE&&IsInConversation(OBJECT_SELF)==FALSE)
  { // move
    AssignCommand(OBJECT_SELF,ASActionMoveToObject(oWP,TRUE,1.0));
  } // move
  DelayCommand(18.0,fnWander());
} // fnWander()



void main()
{
 object oMe=OBJECT_SELF;
 object oSpawn1=GetLocalObject(oMe,"oSpawn1");
 object oSpawn2=GetLocalObject(oMe,"oSpawn2");
 object oSpawn3=GetLocalObject(oMe,"oSpawn3");
 object oSpawn4=GetLocalObject(oMe,"oSpawn4");
 object oSpawn5=GetLocalObject(oMe,"oSpawn5");
 string sSpawn1=GetLocalString(oMe,"sSpawn1");
 string sSpawn2=GetLocalString(oMe,"sSpawn2");
 string sSpawn3=GetLocalString(oMe,"sSpawn3");
 int nSpawnCount=GetLocalInt(oMe,"nSpawnCount");
 nSpawnCount=nSpawnCount-1;
 if (oSpawn1==OBJECT_INVALID&&nSpawnCount<1)
 {
   oSpawn1=CreateObject(OBJECT_TYPE_CREATURE,sSpawn1,GetLocation(oMe));
   AssignCommand(oSpawn1,fnWander());
   SetLocalObject(oMe,"oSpawn1",oSpawn1);
   nSpawnCount=2;
 }
 if (oSpawn2==OBJECT_INVALID&&nSpawnCount<1)
 {
   oSpawn2=CreateObject(OBJECT_TYPE_CREATURE,sSpawn2,GetLocation(oMe));
   AssignCommand(oSpawn2,fnWander());
   SetLocalObject(oMe,"oSpawn2",oSpawn2);
   nSpawnCount=2;
 }
 if (oSpawn3==OBJECT_INVALID&&nSpawnCount<1)
 {
   oSpawn3=CreateObject(OBJECT_TYPE_CREATURE,sSpawn3,GetLocation(oMe));
   AssignCommand(oSpawn3,fnWander());
   SetLocalObject(oMe,"oSpawn3",oSpawn3);
   nSpawnCount=2;
 }
 if (oSpawn4==OBJECT_INVALID&&nSpawnCount<1)
 {
   oSpawn4=CreateObject(OBJECT_TYPE_CREATURE,sSpawn3,GetLocation(oMe));
   AssignCommand(oSpawn4,fnWander());
   SetLocalObject(oMe,"oSpawn4",oSpawn4);
   nSpawnCount=2;
 }
 if (oSpawn5==OBJECT_INVALID&&nSpawnCount<1)
 {
   oSpawn5=CreateObject(OBJECT_TYPE_CREATURE,sSpawn3,GetLocation(oMe));
   AssignCommand(oSpawn5,fnWander());
   SetLocalObject(oMe,"oSpawn5",oSpawn5);
   nSpawnCount=2;
 }
 SetLocalInt(oMe,"nSpawnCount",nSpawnCount);
}