149 lines
3.5 KiB
Plaintext
149 lines
3.5 KiB
Plaintext
//#include "rd_spawnzones"
|
|
#include "rd_questinc"
|
|
|
|
void ClearSecondArea(object oPC);
|
|
int CanClearArea(int iLevel);
|
|
void ClearArea(string sArea);
|
|
|
|
void main()
|
|
{
|
|
int iLevel;
|
|
string sTag;
|
|
location lLoc;
|
|
object oGuard;
|
|
object oPC;
|
|
int iMinLevel;
|
|
int iMaxLevel;
|
|
|
|
oPC = GetEnteringObject();
|
|
|
|
if (GetIsPC(oPC))
|
|
{
|
|
if (GetLocalInt(OBJECT_SELF,"EN4_SetupZone") == 0 && GetLocalInt(OBJECT_SELF,"AdventureZone") > 0)
|
|
SetupZone(oPC);
|
|
|
|
CheckZone(oPC);
|
|
|
|
if (GetLocalInt(OBJECT_SELF,"Spawned") == 0)
|
|
{
|
|
iLevel = GetHitDice(oPC);
|
|
iLevel = ZoneLevel(OBJECT_SELF,iLevel);
|
|
|
|
DelayCommand(0.1,ClearSecondArea(oPC));
|
|
|
|
RespawnCampsAE(GetEnteringObject(),0, iLevel, GetLocalInt(OBJECT_SELF,"SpecialSpawn"));
|
|
RespawnMobsAE(GetEnteringObject(),0, iLevel);
|
|
SetTrapsAndDoors(GetEnteringObject());
|
|
SetLocalInt(OBJECT_SELF,"Spawned",1);
|
|
SetLocalInt(OBJECT_SELF,"RandomEncounter",1);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ClearSecondArea(object oPC)
|
|
{
|
|
if (CanClearArea(24))
|
|
{
|
|
ClearArea("RW1");
|
|
ClearArea("AM1");
|
|
ClearArea("DW1");
|
|
ClearArea("ED1");
|
|
ClearArea("OF1");
|
|
}
|
|
}
|
|
|
|
int CanClearArea(int iLevel)
|
|
{
|
|
int iResult;
|
|
|
|
iResult = TRUE;
|
|
object oPC = GetFirstPC();
|
|
while (GetIsObjectValid(oPC) == TRUE)
|
|
{
|
|
if (GetHitDice(oPC) < iLevel)
|
|
iResult = FALSE;
|
|
oPC = GetNextPC();
|
|
}
|
|
return iResult;
|
|
}
|
|
|
|
void ClearArea(string sArea)
|
|
{
|
|
int iIndex;
|
|
int iIndex2;
|
|
string sTag;
|
|
object oWP;
|
|
object oMob;
|
|
|
|
iIndex = 1;
|
|
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_Boss";
|
|
oWP = GetObjectByTag(sTag);
|
|
|
|
if (GetIsObjectValid(oWP))
|
|
SetLocalInt(GetArea(oWP),"Spawned",0);
|
|
|
|
while (GetIsObjectValid(oWP))
|
|
{
|
|
oMob = GetObjectByTag(sTag + "_S");
|
|
if (GetIsObjectValid(oMob))
|
|
{
|
|
AssignCommand(oMob,SetIsDestroyable(TRUE));
|
|
DestroyObject(oMob,0.5);
|
|
}
|
|
|
|
iIndex2 = 1;
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_T1_" + IntToString(iIndex2);
|
|
oWP = GetObjectByTag(sTag);
|
|
while (GetIsObjectValid(oWP))
|
|
{
|
|
oMob = GetObjectByTag(sTag + "_S");
|
|
if (GetIsObjectValid(oMob))
|
|
{
|
|
AssignCommand(oMob,SetIsDestroyable(TRUE));
|
|
DestroyObject(oMob,0.5);
|
|
}
|
|
iIndex2++;
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_T1_" + IntToString(iIndex2);
|
|
oWP = GetObjectByTag(sTag);
|
|
}
|
|
|
|
iIndex2 = 1;
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_T2_" + IntToString(iIndex2);
|
|
oWP = GetObjectByTag(sTag);
|
|
while (GetIsObjectValid(oWP))
|
|
{
|
|
oMob = GetObjectByTag(sTag + "_S");
|
|
if (GetIsObjectValid(oMob))
|
|
{
|
|
AssignCommand(oMob,SetIsDestroyable(TRUE));
|
|
DestroyObject(oMob,0.5);
|
|
}
|
|
iIndex2++;
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_T2_" + IntToString(iIndex2);
|
|
oWP = GetObjectByTag(sTag);
|
|
}
|
|
|
|
iIndex2 = 1;
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_T3_" + IntToString(iIndex2);
|
|
oWP = GetObjectByTag(sTag);
|
|
while (GetIsObjectValid(oWP))
|
|
{
|
|
oMob = GetObjectByTag(sTag + "_S");
|
|
if (GetIsObjectValid(oMob))
|
|
{
|
|
AssignCommand(oMob,SetIsDestroyable(TRUE));
|
|
DestroyObject(oMob,0.5);
|
|
}
|
|
iIndex2++;
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_T3_" + IntToString(iIndex2);
|
|
oWP = GetObjectByTag(sTag);
|
|
}
|
|
|
|
iIndex++;
|
|
sTag = sArea + "_C" + IntToString(iIndex) + "_Boss";
|
|
oWP = GetObjectByTag(sTag);
|
|
}
|
|
|
|
}
|