EN4_PRC8/_module/nss/dw_areaenter.nss
Jaysyn904 b464d8da05 Initial Commit
Initial Commit [v1.32PRC8]
2025-04-03 13:38:45 -04:00

150 lines
3.5 KiB
Plaintext

//#include "rd_spawnzones"
#include "rd_questinc"
void ClearFirstArea(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,ClearFirstArea(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 ClearFirstArea(object oPC)
{
if (CanClearArea(12))
{
ClearArea("RP1");
ClearArea("SC1");
ClearArea("WG1");
ClearArea("WGT1");
ClearArea("SS1");
ClearArea("CA1");
}
}
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);
}
}