// Onenter_belierin #include "antistuck_h" void fnWander() { object oWP=GetNearestObject(OBJECT_TYPE_WAYPOINT,OBJECT_SELF,d20()); object oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC,OBJECT_SELF,1); object oEnemy=GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY,OBJECT_SELF,1,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,CREATURE_TYPE_IS_ALIVE,TRUE); int nRun=FALSE; effect eE; if (d4()==1) nRun=TRUE; if (GetIsObjectValid(oPC)) { // PC in area if (!GetIsInCombat(OBJECT_SELF)&&!IsInConversation(OBJECT_SELF)&&!GetIsObjectValid(oEnemy)) { // okay to mess with AssignCommand(OBJECT_SELF,ClearAllActions()); if (!GetLocalInt(OBJECT_SELF,"bCanFly"))AssignCommand(OBJECT_SELF,ASActionMoveToObject(oWP,nRun,1.0)); else { // fly eE=EffectDisappearAppear(GetLocation(oWP)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eE,OBJECT_SELF,12.0); } // fly } // okay to mess with DelayCommand(30.0,fnWander()); } // PC in area else { DestroyObject(OBJECT_SELF); } // despawn } void fnSpawn(int nNum) { object oCr; object oWP=GetWaypointByTag("BELIERIN_SPAWN"+IntToString(d6())); int nR; string sRes=""; if (nNum>0) { // spawn nR=d100(); if (nR<21) sRes="bat001"; else if (nR<31) sRes="jaguar002"; else if (nR<38) sRes="basilisk002"; else if (nR<51) sRes="ratdire003"; else if (nR<58) sRes="planetar"; else if (nR<62) sRes="solar"; else if (nR<68) sRes="bulette002"; else if (nR<78) sRes="hugeswampvipe001"; else if (nR<98) sRes="lupinal"; else { sRes="solar"; } oCr=CreateObject(OBJECT_TYPE_CREATURE,sRes,GetLocation(oWP)); SetLocalInt(oCr,"bBelierin",TRUE); AssignCommand(oCr,fnWander()); DelayCommand(1.0,fnSpawn(nNum-1)); } // spawn } // fnSpawn() void main() { object oPC=GetEnteringObject(); int nCount; int nC; object oCr; if (GetIsPC(oPC)) { // IS PC nC=1; oCr=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,nC); while(GetIsObjectValid(oCr)) { // count critters if (GetLocalInt(oCr,"bBelierin")) nCount++; nC++; oCr=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,nC); } // count critters if (nCount<12) fnSpawn(12-nCount); ExecuteScript("area_visit",OBJECT_SELF); } // IS PC }