41 lines
1.5 KiB
Plaintext
41 lines
1.5 KiB
Plaintext
void fnCheckForDepart()
|
|
{
|
|
object oEnemy=GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY,OBJECT_SELF,1,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,CREATURE_TYPE_IS_ALIVE,TRUE);
|
|
if (GetIsObjectValid(oEnemy)) DelayCommand(30.0,fnCheckForDepart());
|
|
else { DestroyObject(OBJECT_SELF); }
|
|
}
|
|
|
|
|
|
void fnReserve(location lLoc,object oPC)
|
|
{
|
|
AssignCommand(OBJECT_SELF,ClearAllActions(TRUE));
|
|
AssignCommand(OBJECT_SELF,ActionMoveToLocation(lLoc,TRUE));
|
|
SetIsTemporaryEnemy(oPC,OBJECT_SELF,TRUE,240.0);
|
|
DelayCommand(90.0,fnCheckForDepart());
|
|
}
|
|
|
|
|
|
void main()
|
|
{
|
|
object oPC=GetEnteringObject();
|
|
object oMe=GetNearestObjectByTag("MUNICIPALPG",oPC,1);
|
|
object oAlly=GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_FRIEND,oMe,1,CREATURE_TYPE_IS_ALIVE,TRUE);
|
|
string sGuardRes="municipalguardre";
|
|
object oWP=GetNearestObjectByTag("BACKUP_GUARDS");
|
|
object oGuard;
|
|
int nN;
|
|
if (GetIsPC(oPC))
|
|
{ // PC
|
|
AssignCommand(oMe,SpeakString("GUARDS! SOMEONE IS ATTEMPTING TO FREE THE PRISONERS!!"));
|
|
SetIsTemporaryEnemy(oPC,oMe,TRUE,240.0);
|
|
if (GetIsObjectValid(oAlly)&&GetDistanceBetween(oMe,oAlly)<10.0) AssignCommand(oAlly,SetIsTemporaryEnemy(oPC,oAlly,TRUE,240.0));
|
|
nN=1;
|
|
while(nN<7&&GetIsObjectValid(oWP))
|
|
{ // create backup guards
|
|
oGuard=CreateObject(OBJECT_TYPE_CREATURE,sGuardRes,GetLocation(oWP));
|
|
DelayCommand(1.0,AssignCommand(oGuard,fnReserve(GetLocation(oMe),oPC)));
|
|
nN++;
|
|
} // create backup guards
|
|
} // PC
|
|
}
|