579 lines
16 KiB
Plaintext
579 lines
16 KiB
Plaintext
|
#include "rd_spawn"
|
||
|
|
||
|
object SetupAdventureZones(int iLevel, int iAdventureType = 0, string sSpawn = "", string sItem = "");
|
||
|
void ClearAdventureZones();
|
||
|
int GetHasAdvZone(int iArea, int iZones,string sPrefix);
|
||
|
object PopulateArea(string sArea,string sCampType,int iSpawnType, int iLevel, int iBase,int iBaseStart,int iBaseMax,int iCampType, int iBoss = TRUE,int iWander = FALSE);
|
||
|
void PopArea(string sArea,string sCampType,int iSpawnType, int iLevel, int iBase,int iBaseStart,int iBaseMax,int iCampType, int iBoss = TRUE,int iWander = FALSE);
|
||
|
void ClearArea(string sArea);
|
||
|
void RemoveLootFromAdvArea(object oArea);
|
||
|
void RemoveLootFromRemains(object oContainer);
|
||
|
int AZDifficulty();
|
||
|
void ZoneToArea(object oPC,int iArea);
|
||
|
|
||
|
object SetupAdventureZones(int iLevel, int iAdventureType = 0, string sSpawn = "", string sItem = "")
|
||
|
{
|
||
|
int iLand;
|
||
|
int iLE;
|
||
|
int iLair;
|
||
|
int iZones;
|
||
|
int iIndex;
|
||
|
int iIndexCheck;
|
||
|
int iArea;
|
||
|
int iFlag;
|
||
|
int iBase;
|
||
|
int iBaseStart;
|
||
|
int iBaseMax;
|
||
|
int iCampType;
|
||
|
int iAreas;
|
||
|
int iDungeonLair;
|
||
|
int iDungeon;
|
||
|
int iCampSize;
|
||
|
int iBoss;
|
||
|
string sTreasure;
|
||
|
string sCampType;
|
||
|
string sArea;
|
||
|
string sAreas;
|
||
|
string sCD;
|
||
|
object oChest;
|
||
|
object oBoss;
|
||
|
object oMod;
|
||
|
|
||
|
//SendMessageToPC(GetFirstPC(),"Level=" + IntToString(iLevel));
|
||
|
|
||
|
iLand = 10;
|
||
|
iLE = 2;
|
||
|
iLair = 2;
|
||
|
iDungeonLair = 2;
|
||
|
iDungeon = 16;
|
||
|
|
||
|
if (iAdventureType == 0)
|
||
|
iZones = Random(4)+1;
|
||
|
else
|
||
|
iZones = Random(2);
|
||
|
|
||
|
if (iAdventureType == 1)
|
||
|
DelayCommand(0.1f,SetCreatureTags(iLevel,1));
|
||
|
|
||
|
//iZones = 0;
|
||
|
|
||
|
ClearAdventureZones();
|
||
|
|
||
|
SetLocalInt(GetModule(),"AdventureZone",1);
|
||
|
SetLocalInt(GetModule(),"AdvZones",iZones + 2);
|
||
|
|
||
|
if (iAdventureType == 0)
|
||
|
SetupCampTypes(iLevel,1,1,0);
|
||
|
else
|
||
|
SetupCampTypes(iLevel,0,1,0);
|
||
|
|
||
|
if (sSpawn == "" || iAdventureType > 0)
|
||
|
sCampType = GetCampType();
|
||
|
else
|
||
|
sCampType = GetSpecificCampType(sSpawn);
|
||
|
|
||
|
oMod = GetModule();
|
||
|
iBase = GetLocalInt(oMod,"iBase");
|
||
|
iBaseStart = GetLocalInt(oMod,"iBaseStart");
|
||
|
iBaseMax = GetLocalInt(oMod,"iBaseMax");
|
||
|
iCampType = GetLocalInt(oMod,"iCampType");
|
||
|
sCD = GetLocalString(oMod,"sCD");
|
||
|
SetLocalInt(oMod,"iBase",0);
|
||
|
SetLocalInt(oMod,"iBaseStart",0);
|
||
|
SetLocalInt(oMod,"iBaseMax",0);
|
||
|
SetLocalInt(oMod,"iCampType",0);
|
||
|
|
||
|
iIndex = 1;
|
||
|
iIndexCheck = 1;
|
||
|
while (iIndex <= iZones)
|
||
|
{
|
||
|
iArea = Random(iLand)+1;
|
||
|
//iArea=1;
|
||
|
iFlag = GetHasAdvZone(iArea,iIndex,"Land");
|
||
|
if (iFlag == FALSE)
|
||
|
{
|
||
|
sArea = "Land" + IntToString(iArea);
|
||
|
//PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
DelayCommand(0.1f,PopArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType));
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
iIndexCheck = 0;
|
||
|
iIndex++;
|
||
|
}
|
||
|
if (iFlag == TRUE && iIndexCheck > 12)
|
||
|
{
|
||
|
//SendMessageToPC(GetFirstPC(),"ForceNewArea");
|
||
|
iArea = 1;
|
||
|
while (GetHasAdvZone(iArea,iIndex,"Land") == TRUE)
|
||
|
iArea++;
|
||
|
sArea = "Land" + IntToString(iArea);
|
||
|
//PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
DelayCommand(0.1f,PopArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType));
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
iIndexCheck = 0;
|
||
|
iIndex++;
|
||
|
}
|
||
|
iIndexCheck++;
|
||
|
}
|
||
|
|
||
|
//GetLocalString(GetModule(),"AZArea" + IntToString(iIndex)
|
||
|
|
||
|
if (iAdventureType == 0)
|
||
|
{
|
||
|
iArea = Random(iLE)+1;
|
||
|
sArea = "LE" + IntToString(iArea);
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
//PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
DelayCommand(0.1f,PopArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType,FALSE));
|
||
|
|
||
|
iIndex++;
|
||
|
iArea = Random(iLair)+1;
|
||
|
sArea = "Lair" + IntToString(iArea);
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
oBoss=PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
SetLocalString(oBoss,"sCD",sCD);
|
||
|
sTreasure = "Lair" + IntToString(iArea) + "_Treasure";
|
||
|
oChest = GetObjectByTag(sTreasure);
|
||
|
SetLocalInt(oChest,"EN4_DoOnce",0);
|
||
|
if (sItem != "")
|
||
|
CreateItemOnObject(sItem,oChest);
|
||
|
if (!GetIsObjectValid(oChest))
|
||
|
{
|
||
|
WriteTimestampedLogEntry("ERROR: Could not find lair chest : " + sTreasure);
|
||
|
if (sItem != "")
|
||
|
CreateItemOnObject(sItem,oBoss);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (iAdventureType == 1)
|
||
|
{
|
||
|
iArea = Random(iLE)+1;
|
||
|
sArea = "LE" + IntToString(iArea);
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
//PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
DelayCommand(0.1f,PopArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType,TRUE));
|
||
|
iIndex++;
|
||
|
|
||
|
//Get Dungeon Areas
|
||
|
iZones = Random(3)+2+iIndex;
|
||
|
//iZones = 2+iIndex;
|
||
|
iCampSize = Random(2)+1;
|
||
|
sCampType = "";
|
||
|
//iIndex = 1;
|
||
|
iIndexCheck = 1;
|
||
|
while (iIndex <= iZones)
|
||
|
{
|
||
|
|
||
|
if (sCampType == "")
|
||
|
{
|
||
|
if (iIndex < iZones-iCampSize)
|
||
|
sCampType = GetCampType();
|
||
|
else
|
||
|
{
|
||
|
SetupCampTypes(iLevel,1,1,0);
|
||
|
if (sSpawn == "")
|
||
|
sCampType = GetCampType();
|
||
|
else
|
||
|
sCampType = GetSpecificCampType(sSpawn);
|
||
|
}
|
||
|
|
||
|
iBase = GetLocalInt(oMod,"iBase");
|
||
|
iBaseStart = GetLocalInt(oMod,"iBaseStart");
|
||
|
iBaseMax = GetLocalInt(oMod,"iBaseMax");
|
||
|
iCampType = GetLocalInt(oMod,"iCampType");
|
||
|
sCD = GetLocalString(oMod,"sCD");
|
||
|
SetLocalInt(oMod,"iBase",0);
|
||
|
SetLocalInt(oMod,"iBaseStart",0);
|
||
|
SetLocalInt(oMod,"iBaseMax",0);
|
||
|
SetLocalInt(oMod,"iCampType",0);
|
||
|
}
|
||
|
|
||
|
if (Random(2)==0)
|
||
|
iBoss = TRUE;
|
||
|
else
|
||
|
iBoss = FALSE;
|
||
|
|
||
|
if (iIndex >= iZones-iCampSize)
|
||
|
iBoss = FALSE;
|
||
|
|
||
|
if (iIndex == iZones-iCampSize-1 && sCampType != sSpawn)
|
||
|
iBoss = TRUE;
|
||
|
|
||
|
iArea = Random(iDungeon)+1;
|
||
|
//iArea=15;
|
||
|
iFlag = GetHasAdvZone(iArea,iIndex,"DNG");
|
||
|
if (iFlag == FALSE)
|
||
|
{
|
||
|
sArea = "DNG" + IntToString(iArea);
|
||
|
//PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
DelayCommand(0.1f,PopArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType,iBoss,TRUE));
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
if (iBoss == TRUE)
|
||
|
sCampType = "";
|
||
|
iIndexCheck = 0;
|
||
|
iIndex++;
|
||
|
}
|
||
|
if (iFlag == TRUE && iIndexCheck > 12)
|
||
|
{
|
||
|
//SendMessageToPC(GetFirstPC(),"ForceNewArea");
|
||
|
iArea = 1;
|
||
|
while (GetHasAdvZone(iArea,iIndex,"DNG") == TRUE)
|
||
|
iArea++;
|
||
|
sArea = "DNG" + IntToString(iArea);
|
||
|
//PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
DelayCommand(0.1f,PopArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType,iBoss,TRUE));
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
if (iBoss == TRUE)
|
||
|
sCampType = "";
|
||
|
iIndexCheck = 0;
|
||
|
iIndex++;
|
||
|
}
|
||
|
iIndexCheck++;
|
||
|
}
|
||
|
|
||
|
//Get Dungeon Lair
|
||
|
//iIndex++;
|
||
|
iArea = Random(iDungeonLair)+1;
|
||
|
//iArea = 2;
|
||
|
sArea = "DL" + IntToString(iArea);
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),sArea);
|
||
|
oBoss=PopulateArea(sArea,sCampType,0,iLevel,iBase,iBaseStart,iBaseMax,iCampType);
|
||
|
SetLocalString(oBoss,"sCD",sCD);
|
||
|
sTreasure = "DL" + IntToString(iArea) + "_Treasure";
|
||
|
oChest = GetObjectByTag(sTreasure);
|
||
|
SetLocalInt(oChest,"EN4_DoOnce",0);
|
||
|
if (sItem != "")
|
||
|
CreateItemOnObject(sItem,oChest);
|
||
|
if (!GetIsObjectValid(oChest))
|
||
|
{
|
||
|
WriteTimestampedLogEntry("ERROR: Could not find lair chest : " + sTreasure);
|
||
|
if (sItem != "")
|
||
|
CreateItemOnObject(sItem,oBoss);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
iAreas = iIndex;
|
||
|
iIndex = 1;
|
||
|
while (iIndex <= iAreas)
|
||
|
{
|
||
|
if (iIndex > 1)
|
||
|
sAreas=sAreas + " - ";
|
||
|
sAreas = sAreas + GetLocalString(GetModule(),"AZArea" + IntToString(iIndex));
|
||
|
iIndex ++;
|
||
|
}
|
||
|
|
||
|
WriteTimestampedLogEntry("Random Area Generated: " + sAreas);
|
||
|
|
||
|
return oBoss;
|
||
|
}
|
||
|
|
||
|
|
||
|
int GetHasAdvZone(int iArea, int iZones,string sPrefix)
|
||
|
{
|
||
|
int iResult;
|
||
|
int iIndex;
|
||
|
|
||
|
iResult = FALSE;
|
||
|
|
||
|
iIndex = 1;
|
||
|
while (iIndex <= iZones)
|
||
|
{
|
||
|
//SendMessageToPC(GetFirstPC(),"Compare1 : Land" + IntToString(iArea));
|
||
|
//SendMessageToPC(GetFirstPC(),"Compare2 : " + GetLocalString(GetModule(),"AZArea" + IntToString(iIndex)));
|
||
|
if (sPrefix + IntToString(iArea) == GetLocalString(GetModule(),"AZArea" + IntToString(iIndex)))
|
||
|
iResult = TRUE;
|
||
|
iIndex++;
|
||
|
}
|
||
|
return iResult;
|
||
|
}
|
||
|
|
||
|
void ClearAdventureZones()
|
||
|
{
|
||
|
int iIndex;
|
||
|
int iZones;
|
||
|
|
||
|
iZones = GetLocalInt(GetModule(),"AdvZones");
|
||
|
|
||
|
iIndex = 1;
|
||
|
while (iIndex <= iZones)
|
||
|
{
|
||
|
SetLocalString(GetModule(),"AZArea" + IntToString(iIndex),"");
|
||
|
iIndex++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void ZoneToArea(object oPC,int iArea)
|
||
|
{
|
||
|
int iOldArea;
|
||
|
string sZone;
|
||
|
string sTagMod;
|
||
|
object oEnter;
|
||
|
location lLoc;
|
||
|
|
||
|
iOldArea = GetLocalInt(oPC,"AZCurrentArea");
|
||
|
if (iOldArea < iArea)
|
||
|
sTagMod = "_Enter";
|
||
|
else
|
||
|
sTagMod = "_Exit";
|
||
|
|
||
|
SetLocalInt(oPC,"AZCurrentArea",iArea);
|
||
|
|
||
|
if (iArea>0)
|
||
|
{
|
||
|
sZone = GetLocalString(GetModule(),"AZArea" + IntToString(iArea));
|
||
|
sZone = sZone + sTagMod;
|
||
|
} else {
|
||
|
sZone = GetLocalString(oPC,"AZRespawn");
|
||
|
}
|
||
|
|
||
|
oEnter = GetObjectByTag(sZone);
|
||
|
if (GetIsObjectValid(oEnter))
|
||
|
{
|
||
|
lLoc = GetLocation(oEnter);
|
||
|
AssignCommand(oPC,JumpToLocation(lLoc));
|
||
|
} else {
|
||
|
SendMessageToPC(oPC,"ERROR: Cannot Find Zone Waypoint " + sZone + ".");
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void PopArea(string sArea,string sCampType,int iSpawnType, int iLevel, int iBase,int iBaseStart,int iBaseMax,int iCampType, int iBoss = TRUE,int iWander = FALSE)
|
||
|
{
|
||
|
PopulateArea(sArea,sCampType,iSpawnType,iLevel,iBase,iBaseStart,iBaseMax,iCampType,iBoss,iWander);
|
||
|
}
|
||
|
|
||
|
object PopulateArea(string sArea,string sCampType,int iSpawnType, int iLevel, int iBase,int iBaseStart,int iBaseMax,int iCampType, int iBoss = TRUE,int iWander = FALSE)
|
||
|
{
|
||
|
int iIndex;
|
||
|
int iType;
|
||
|
int iRandom;
|
||
|
int iHardCore;
|
||
|
int iSpawn;
|
||
|
int iSpawnNumber;
|
||
|
string sWP;
|
||
|
object oWP;
|
||
|
object oCreature;
|
||
|
|
||
|
ClearArea(sArea);
|
||
|
iHardCore = CheckHardcore();
|
||
|
|
||
|
iIndex = 1;
|
||
|
sWP = sArea + "_" + IntToString(iIndex);
|
||
|
oWP = GetObjectByTag(sWP);
|
||
|
|
||
|
while (GetIsObjectValid(oWP))
|
||
|
{
|
||
|
//oCreature = GetCampMob(iSpawnType,sWP,sCampType,iLevel,iBaseStart,iBase,iBaseMax,iCampType);
|
||
|
if (iSpawnType > 0)
|
||
|
iType = iSpawnType;
|
||
|
else {
|
||
|
iRandom = Random(10);
|
||
|
if (iRandom < 6)
|
||
|
iType = 1;
|
||
|
else if (iRandom < 9)
|
||
|
iType = 2;
|
||
|
else
|
||
|
iType = 3;
|
||
|
}
|
||
|
iSpawn = TRUE;
|
||
|
if (iHardCore)
|
||
|
{
|
||
|
if (iLevel < 5)
|
||
|
iRandom = Random(3);
|
||
|
else if (iLevel < 10)
|
||
|
iRandom = Random(4);
|
||
|
else if (iLevel < 15)
|
||
|
iRandom = Random(5);
|
||
|
if (iRandom == 0)
|
||
|
iSpawn = FALSE;
|
||
|
}
|
||
|
|
||
|
if (Random(12)==0 && iWander == TRUE)
|
||
|
{
|
||
|
iSpawn = FALSE;
|
||
|
DelayCommand(1.0f,SpawnMob(sWP));
|
||
|
}
|
||
|
|
||
|
if (iSpawn)
|
||
|
{
|
||
|
iSpawnNumber = 1;
|
||
|
if (iLevel>10 && iLevel < 20 && iHardCore == FALSE)
|
||
|
{
|
||
|
if (Random(4) == 0)
|
||
|
iSpawnNumber = 2;
|
||
|
}
|
||
|
if (iLevel>19 && iHardCore == FALSE)
|
||
|
{
|
||
|
iSpawnNumber = Random(3)+1;
|
||
|
if (iType == 3 && iSpawnNumber == 3)
|
||
|
iSpawnNumber = 2;
|
||
|
}
|
||
|
if (iLevel>19 && iHardCore == TRUE)
|
||
|
{
|
||
|
if (Random(4) == 0)
|
||
|
iSpawnNumber = 2;
|
||
|
}
|
||
|
|
||
|
DelayCommand(0.2f,SpawnCampMob(iType,sWP,sCampType,iLevel,iBaseStart,iBase,iBaseMax,iCampType));
|
||
|
if (iSpawnNumber > 1)
|
||
|
DelayCommand(0.2f,SpawnCampMob(iType,sWP,sCampType,iLevel,iBaseStart,iBase,iBaseMax,iCampType,1,1));
|
||
|
if (iSpawnNumber > 2)
|
||
|
DelayCommand(0.2f,SpawnCampMob(iType,sWP,sCampType,iLevel,iBaseStart,iBase,iBaseMax,iCampType,1,2));
|
||
|
|
||
|
}
|
||
|
iIndex++;
|
||
|
sWP = sArea + "_" + IntToString(iIndex);
|
||
|
oWP = GetObjectByTag(sWP);
|
||
|
}
|
||
|
|
||
|
if (iBoss == TRUE)
|
||
|
{
|
||
|
sWP = sArea + "_Boss";
|
||
|
oWP = GetObjectByTag(sWP);
|
||
|
if (GetIsObjectValid(oWP))
|
||
|
{
|
||
|
oCreature = GetCampMob(99,sWP,sCampType,iLevel,iBaseStart,iBase,iBaseMax,iCampType);
|
||
|
|
||
|
iType = Random(2)+2;
|
||
|
iSpawnNumber = 1;
|
||
|
if (iLevel>10 && iLevel < 20 && iHardCore == FALSE)
|
||
|
{
|
||
|
if (Random(4) == 0)
|
||
|
iSpawnNumber = 2;
|
||
|
}
|
||
|
if (iLevel>19 && iHardCore == FALSE)
|
||
|
{
|
||
|
iSpawnNumber = Random(3)+1;
|
||
|
if (iType == 3 && iSpawnNumber == 3)
|
||
|
iSpawnNumber = 2;
|
||
|
}
|
||
|
if (iLevel>19 && iHardCore == TRUE)
|
||
|
{
|
||
|
if (Random(4) == 0)
|
||
|
iSpawnNumber = 2;
|
||
|
}
|
||
|
if (iSpawnNumber > 1)
|
||
|
DelayCommand(0.2f,SpawnCampMob(iType,sWP,sCampType,iLevel,iBaseStart,iBase,iBaseMax,iCampType,1,1));
|
||
|
if (iSpawnNumber > 2)
|
||
|
DelayCommand(0.2f,SpawnCampMob(iType,sWP,sCampType,iLevel,iBaseStart,iBase,iBaseMax,iCampType,1,2));
|
||
|
}
|
||
|
}
|
||
|
return oCreature;
|
||
|
}
|
||
|
|
||
|
void ClearArea(string sArea)
|
||
|
{
|
||
|
int iIndex;
|
||
|
object oWaypoint;
|
||
|
object oCreature;
|
||
|
object oArea;
|
||
|
|
||
|
iIndex = 1;
|
||
|
oWaypoint = GetObjectByTag(sArea + "_" + IntToString(iIndex));
|
||
|
|
||
|
while (GetIsObjectValid(oWaypoint))
|
||
|
{
|
||
|
oCreature = GetObjectByTag(sArea + "_" + IntToString(iIndex) + "_S");
|
||
|
if (GetIsObjectValid(oCreature))
|
||
|
{
|
||
|
AssignCommand(oCreature,SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oCreature,0.5);
|
||
|
}
|
||
|
oCreature = GetObjectByTag(sArea + "_" + IntToString(iIndex) + "_S1");
|
||
|
if (GetIsObjectValid(oCreature))
|
||
|
{
|
||
|
AssignCommand(oCreature,SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oCreature,0.5);
|
||
|
}
|
||
|
oCreature = GetObjectByTag(sArea + "_" + IntToString(iIndex) + "_S2");
|
||
|
if (GetIsObjectValid(oCreature))
|
||
|
{
|
||
|
AssignCommand(oCreature,SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oCreature,0.5);
|
||
|
}
|
||
|
|
||
|
iIndex++;
|
||
|
oWaypoint = GetObjectByTag(sArea + "_" + IntToString(iIndex));
|
||
|
}
|
||
|
|
||
|
oCreature = GetObjectByTag(sArea + "_Boss_S");
|
||
|
if (GetIsObjectValid(oCreature))
|
||
|
{
|
||
|
AssignCommand(oCreature,SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oCreature,0.5);
|
||
|
}
|
||
|
oCreature = GetObjectByTag(sArea + "_Boss_S1");
|
||
|
if (GetIsObjectValid(oCreature))
|
||
|
{
|
||
|
AssignCommand(oCreature,SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oCreature,0.5);
|
||
|
}
|
||
|
oCreature = GetObjectByTag(sArea + "_Boss_S2");
|
||
|
if (GetIsObjectValid(oCreature))
|
||
|
{
|
||
|
AssignCommand(oCreature,SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oCreature,0.5);
|
||
|
}
|
||
|
|
||
|
|
||
|
oWaypoint = GetObjectByTag(sArea + "_Enter");
|
||
|
oArea = GetArea(oWaypoint);
|
||
|
DelayCommand(0.5f,RemoveLootFromAdvArea(oArea));
|
||
|
|
||
|
}
|
||
|
|
||
|
void RemoveLootFromAdvArea(object oArea)
|
||
|
{
|
||
|
object oItem;
|
||
|
|
||
|
oItem = GetFirstObjectInArea(oArea);
|
||
|
|
||
|
while (GetIsObjectValid(oItem))
|
||
|
{
|
||
|
if (GetName(oItem) == "Remains")
|
||
|
{
|
||
|
RemoveLootFromRemains(oItem);
|
||
|
DestroyObject(oItem);
|
||
|
}
|
||
|
oItem = GetNextObjectInArea(oArea);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void RemoveLootFromRemains(object oContainer)
|
||
|
{
|
||
|
object oItem;
|
||
|
object oLastItem;
|
||
|
int iFlag;
|
||
|
int iDeleteFlag;
|
||
|
|
||
|
iFlag = 0;
|
||
|
|
||
|
oItem = GetFirstItemInInventory(oContainer);
|
||
|
|
||
|
while (iFlag == 0)
|
||
|
{
|
||
|
DestroyObject(oItem);
|
||
|
|
||
|
oLastItem = oItem;
|
||
|
oItem = GetNextItemInInventory(oContainer);
|
||
|
|
||
|
if (oLastItem == oItem)
|
||
|
iFlag = 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int AZDifficulty()
|
||
|
{
|
||
|
int iZones;
|
||
|
int iDifficulty;
|
||
|
|
||
|
iZones = GetLocalInt(GetModule(),"AdvZones");
|
||
|
if (iZones < 3)
|
||
|
iDifficulty = 2;
|
||
|
else if (iZones < 5)
|
||
|
iDifficulty = 3;
|
||
|
else
|
||
|
iDifficulty = 4;
|
||
|
|
||
|
return iDifficulty;
|
||
|
}
|