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

1119 lines
27 KiB
Plaintext

#include "rd_treasure"
//#include "x0_i0_treasure"
#include "rd_level"
#include "nw_i0_tool"
object GetCampCreature(string sEncounter,string sCampType, int iType, int iLevel, int iBaseStart, int iBase, int iBaseMax, int iOverride = 0);
object GetCampCreature2(string sEncounter,string sCampType, int iType, int iLevel, int iBaseStart, int iBase, int iBaseMax, int iOverride = 0);
object GetCampCreature3(string sEncounter,string sCampType, int iType, int iLevel, int iBaseStart, int iBase, int iBaseMax, int iOverride = 0);
object GetCampMob(int iType, string sEncounter, string sCampType, int iLevel, int iBaseStart, int iBase, int iBaseMax, int iCampType, int iUnique = 1, int iOverride = 0);
void SpawnCampMob(int iType, string sEncounter, string sCampType, int iLevel, int iBaseStart, int iBase, int iBaseMax, int iCampType, int iUnique = 1, int iOverride = 0);
object GetCreature(string sEncounter, string sCreature);
object GetWanderingCreature(string sEncounter, string sCreature);
int AdjustLevel(int iLevel);
object GetRaceCreature(string sCampType,location lLoc, int iLevel);
object GetRaceCreatures(string sCampType,location lLoc, int iLevel, int iNum=0);
string BossMob(string sCreature);
void FixItemComponent(object oCreature, string sTag);
void FixItemComponents(object oCreature);
void SpawnCampMob(int iType, string sEncounter, string sCampType, int iLevel, int iBaseStart, int iBase, int iBaseMax, int iCampType, int iUnique = 1, int iOverride = 0)
{
//wrapper function
GetCampMob(iType, sEncounter, sCampType, iLevel, iBaseStart, iBase,iBaseMax, iCampType,iUnique,iOverride);
}
object GetCampMob(int iType, string sEncounter, string sCampType, int iLevel, int iBaseStart, int iBase, int iBaseMax, int iCampType, int iUnique = 1, int iOverride = 0)
{
string sCreature;
string sCampTypeCheck;
object oCreature;
int iCreature;
//Check for existing creature first before spawning new one.
iCreature = 0;
oCreature = GetObjectByTag(sEncounter + "_S");
if (GetIsObjectValid(oCreature))
{
sCampTypeCheck= GetLocalString(oCreature,"CampType");
if (sCampTypeCheck == sCampType)
iCreature = 1;
if (iOverride > 0)
iCreature = 0;
}
if (iCreature == 0 || iUnique == 0)
{
if (iCampType == 1)
{
oCreature = GetCampCreature(sEncounter,sCampType,iType,iLevel,iBaseStart, iBase, iBaseMax,iOverride);
} else {
if (iCampType == 2)
oCreature = GetCampCreature2(sEncounter,sCampType,iType,iLevel,iBaseStart, iBase, iBaseMax, iOverride);
else
oCreature = GetCampCreature3(sEncounter,sCampType,iType,iLevel,iBaseStart, iBase, iBaseMax, iOverride);
}
}
if (iType == 1)
{
if (Random(5)==0)
{
AssignCommand(oCreature,ActionRandomWalk());
DelayCommand(3.0f,AssignCommand(oCreature,ClearAllActions()));
}
if (Random(20)==0)
SetActionMode(oCreature,ACTION_MODE_DETECT,TRUE);
}
if (iType == 2)
{
if (Random(10)==0)
{
AssignCommand(oCreature,ActionRandomWalk());
DelayCommand(3.0f,AssignCommand(oCreature,ClearAllActions()));
}
}
return oCreature;
}
//GetCampCreature is for leveled up campsites
object GetCampCreature(string sEncounter, string sCampType,int iType,int iLevel, int iBaseStart, int iBase, int iBaseMax, int iOverride = 0)
{
object oCreature;
object oEncounter;
location lLoc;
string sType;
string sCreature;
string sCreatureBase;
string sEncounterName;
string sOriginalCreature;
int iRandom;
int iMobTargetLevel;
int iMobLevel;
int iNewLevel;
int iLevels;
int iMod;
int iChance;
int iItems;
int iIndex;
oEncounter=GetObjectByTag(sEncounter);
lLoc = GetLocation(oEncounter);
iRandom = Random(10) + 1;
switch (iRandom)
{
case 1: case 2: case 3: sType = "f"; break; //fighter
case 4: case 5: sType = "r"; break; //rogue
case 6: sType = "m"; break; //mage
case 7: case 8: sType = "c"; break; //cleric
case 9: sType = "s"; break; //special class
case 10: sType = "x"; break; //special creature
}
//override with leader for boss spawn
if (iType==99)
sType = "l";
iMobTargetLevel=iLevel;
if (iMobTargetLevel < 3)
{
switch (iType)
{
case 1: iMobTargetLevel--; break;
case 2: iMobTargetLevel; break;
case 3: iMobTargetLevel; break;
case 99: iMobTargetLevel++; break;
}
}
else if (iMobTargetLevel < 6)
{
switch (iType)
{
case 1: iMobTargetLevel=iMobTargetLevel-2; break;
case 2: iMobTargetLevel--; break;
case 3: iMobTargetLevel; break;
case 99: iMobTargetLevel=iMobTargetLevel+1; break;
}
}
else if (iMobTargetLevel < 10)
{
switch (iType)
{
case 1: iMobTargetLevel=iMobTargetLevel-2; break;
case 2: iMobTargetLevel; break;
case 3: iMobTargetLevel+1; break;
case 99: iMobTargetLevel=iMobTargetLevel+ Random(2) + 1; break;
}
}
else if (iMobTargetLevel < 15)
{
switch (iType)
{
case 1: iMobTargetLevel=iMobTargetLevel-3; break;
case 2: iMobTargetLevel; break;
case 3: iMobTargetLevel+1; break;
case 99: iMobTargetLevel=iMobTargetLevel + Random(2) + 2; break;
}
}
else if (iMobTargetLevel < 25)
{
switch (iType)
{
case 1: iMobTargetLevel=iMobTargetLevel-3; break;
case 2: iMobTargetLevel; break;
case 3: iMobTargetLevel+2; break;
case 99: iMobTargetLevel=iMobTargetLevel + Random(3) + 3; break;
}
}
else
{
switch (iType)
{
case 1: iMobTargetLevel=iMobTargetLevel-2; break;
case 2: iMobTargetLevel+1; break;
case 3: iMobTargetLevel + Random(2) + 2; break;
case 99: iMobTargetLevel=iMobTargetLevel + Random(3)+4; break;
}
}
iMobTargetLevel=AdjustLevel(iMobTargetLevel);
if (iMobTargetLevel>iBaseStart)
{
iMod = (iMobTargetLevel-iBaseStart)/iBase+1;
if (iMod>iBaseMax)
iMod=iBaseMax;
} else {
iMod=1;
}
if (iMod<1)
iMod=1;
sCreatureBase = "_" + IntToString(iMod);
sCreature = "en3_" + sCampType + "_" + sType + sCreatureBase;
sOriginalCreature = sCreature;
sCreature = BossMob(sCreature);
sEncounterName = sEncounter + "_S";
if (iOverride > 0)
sEncounterName = sEncounterName + IntToString(iOverride);
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature,lLoc,FALSE,sEncounterName);
SetLocalString(oCreature,"CampType",sCampType);
//debug line
//SendMessageToPC(GetFirstPC(),"Spawning " + sCreature);
//Bad Tag Detection
if (GetName(oCreature)=="")
{
string sMessage;
sMessage = sCreature + " did not spawn at " + sEncounter;
SendMessageToPC(GetFirstPC(),sMessage);
WriteTimestampedLogEntry(sMessage);
}
iMobLevel = GetHitDice(oCreature);
if (iMobLevel<iMobTargetLevel)
{
iLevels = iMobTargetLevel - iMobLevel;
iNewLevel = LevelMob(oCreature,iLevels);
AssignCommand(oCreature,ActionRest());
if (iNewLevel > 0)
{
if (iType == 99)
DelayCommand(0.5f,EquipMob(oCreature,1));
else
DelayCommand(0.5f,EquipMob(oCreature));
}
//debug line
//SendMessageToPC(GetFirstPC(),"Leveled " + GetName(oCreature) + " type " + IntToString(iType) + " to " + IntToString(iNewLevel) + " based on level " + IntToString(iLevel));
}
iMobLevel = GetHitDice(oCreature);
if (iType == 99)
{
if (GetLocalInt(GetFirstPC(),"Unlucky")==1)
iMobLevel=iMobLevel*2;
iChance = iMobLevel/2;
if (sCreature != sOriginalCreature)
iChance = iChance + 25;
if (Random(100)<iChance)
{
GetMagicItem(oCreature);
}
}
if (iType == 3)
if (Random(10) == 0)
{
SetLocalInt(oCreature,"Wander",1);
SetLocalInt(oCreature,"SpawnType",1);
}
if (iType == 2)
{
if (Random(10) == 0)
{
iRandom=Random(10);
if (iRandom < 5)
SetLocalInt(oCreature,"Wander",1);
else if (iRandom == 5)
SetLocalInt(oCreature,"Scout",1);
else
SetLocalInt(oCreature,"Wander",Random(2)+2);
SetLocalInt(oCreature,"SpawnType",1);
}
}
if (iType == 1)
{
if (Random(5) == 0)
{
iRandom=Random(10);
if (iRandom < 4)
SetLocalInt(oCreature,"Wander",1);
else if (iRandom <6)
SetLocalInt(oCreature,"Wander",Random(5)+2);
else if (iRandom < 8)
SetLocalInt(oCreature,"Scout",1);
else
SetLocalInt(oCreature,"Scout",Random(4)+2);
SetLocalInt(oCreature,"SpawnType",1);
}
}
AssignCommand(oCreature,ActionEquipMostEffectiveArmor());
return oCreature;
}
//GetCampCreature2 is for non leveled up campsites
object GetCampCreature2(string sEncounter, string sCampType,int iType,int iLevel, int iBaseStart, int iBase, int iBaseMax, int iOverride = 0)
{
object oCreature;
object oEncounter;
location lLoc;
string sType;
string sCreature;
string sOriginalCreature;
string sCreatureBase;
string sEncounterName;
int iRandom;
int iMobLevel;
int iChance;
iRandom = Random(10)+1;
if (iType == 1 && iRandom == 1)
iType = 2;
else if (iType == 2 && iRandom == 1)
iType = 3;
else if (iType == 2 && iRandom > 8)
iType = 1;
else if (iType == 3 && iRandom > 8)
iType = 2;
switch (iType)
{
case 1: iRandom=Random(iBaseStart)+1;
sCreature = "en3_" + sCampType + "_1_" + IntToString(iRandom);
break;
case 2: iRandom=Random(iBase)+1;
sCreature = "en3_" + sCampType + "_2_" + IntToString(iRandom);
break;
case 3: iRandom=Random(iBaseMax)+1;
sCreature = "en3_" + sCampType + "_3_" + IntToString(iRandom);
break;
case 99: sCreature = "en3_" + sCampType + "_Boss";
break;
}
oEncounter=GetObjectByTag(sEncounter);
lLoc = GetLocation(oEncounter);
sOriginalCreature = sCreature;
sCreature = BossMob(sCreature);
sEncounterName = sEncounter + "_S";
if (iOverride > 0)
sEncounterName = sEncounterName + IntToString(iOverride);
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature,lLoc,FALSE,sEncounterName);
SetLocalString(oCreature,"CampType",sCampType);
//Bad Tag Detection
if (GetName(oCreature)=="")
{
string sMessage;
sMessage = sCreature + " did not spawn at " + sEncounter;
SendMessageToPC(GetFirstPC(),sMessage);
WriteTimestampedLogEntry(sMessage);
}
if (iType == 99)
{
iMobLevel = GetLevelByPosition(1,oCreature) +
GetLevelByPosition(2,oCreature) +
GetLevelByPosition(3,oCreature);
if (GetLocalInt(GetFirstPC(),"Unlucky")==1)
iMobLevel=iMobLevel*3;
iChance = iMobLevel/2;
if (sCreature != sOriginalCreature)
iChance = iChance + 25;
if (Random(100)<iChance)
GetMagicItem(oCreature);
if (Random(100)<(iMobLevel/4+1))
CreateRandomItem(oCreature);
// Taking out undroppable items
// if (Random(100)<(iMobLevel*2))
// GetMagicItem(oCreature,FALSE);
}
if (iType == 3)
if (Random(10) == 0)
{
SetLocalInt(oCreature,"Wander",1);
SetLocalInt(oCreature,"SpawnType",1);
}
if (iType == 2)
{
if (Random(10) == 0)
{
iRandom=Random(10);
if (iRandom < 5)
SetLocalInt(oCreature,"Wander",1);
else if (iRandom == 5)
SetLocalInt(oCreature,"Scout",1);
else
SetLocalInt(oCreature,"Wander",Random(2)+2);
SetLocalInt(oCreature,"SpawnType",1);
}
}
if (iType == 1)
{
if (Random(5) == 0)
{
iRandom=Random(10);
if (iRandom < 4)
SetLocalInt(oCreature,"Wander",1);
else if (iRandom <6)
SetLocalInt(oCreature,"Wander",Random(5)+2);
else if (iRandom < 8)
SetLocalInt(oCreature,"Scout",1);
else
SetLocalInt(oCreature,"Scout",Random(4)+2);
SetLocalInt(oCreature,"SpawnType",1);
}
}
FixItemComponents(oCreature);
return oCreature;
}
//GetCampCreature3 is for dragons
object GetCampCreature3(string sEncounter, string sCampType,int iType,int iLevel, int iBaseStart, int iBase, int iBaseMax, int iOverride = 0)
{
object oCreature;
object oEncounter;
location lLoc;
string sType;
string sCreature;
string sOriginalCreature;
string sColor;
string sEncounterName;
int iRandom;
int iAdjust;
int iLevelTest;
if (iType == 99)
{
iAdjust = Random(10)+1;
if (iAdjust < 2)
iLevelTest=iLevel-2;
else if (iAdjust < 4)
iLevelTest=iLevel-1;
else if (iAdjust < 8)
iLevelTest=iLevel;
else if (iAdjust < 10)
iLevelTest=iLevel+1;
else
iLevelTest=iLevel+2;
if (iLevelTest<15)
sType = "001";
else if (iLevelTest < 19)
sType = "002";
else
sType = "003";
iRandom = 1;
if (sType=="001")
{
if (iLevel <11)
iRandom = 1;
if (iLevel <13)
iRandom = Random(3)+1;
else
iRandom=Random(4)+2;
}
else if (sType=="002")
{
if (iLevel <15)
iRandom = 1;
else
iRandom=Random(5)+1;
}
else
iRandom=Random(6)+1;
switch (iRandom)
{
case 1: sColor = "WHITE"; break;
case 2: sColor = "BLACK"; break;
case 3: sColor = "BLUE"; break;
case 4: sColor = "GREEN"; break;
case 5: sColor = "RED"; break;
case 6: sColor = "SHADOW"; break;
}
sCreature = "NW_DRG" + sColor + sType;
if (sColor == "SHADOW")
sCreature = "X2_DRAGONSHAD001";
if (sCampType == "dracolich")
sCreature = "X2_DRACOLICH001";
} else {
if (iLevel <13)
iAdjust = 1;
else if (iLevel < 17)
iAdjust = Random(2)+1;
else
iAdjust = Random(3)+1;
if (iAdjust == 1)
{
iRandom = Random(4)+1;
switch (iRandom)
{
case 1: sCreature = "x0_wyrmling_blk"; break;
case 2: sCreature = "x0_wyrmling_wht"; break;
case 3: sCreature = "x0_wyrmling_grn"; break;
case 4: sCreature = "x0_wyrmling_blu"; break;
case 5: sCreature = "x0_wyrmling_red"; break;
}
}
else if (iAdjust == 2)
sCreature = "en3_dragon_" + IntToString(Random(3)+1);
else
sCreature = "en3_dragon2_" + IntToString(Random(2)+1);
if (sCampType == "dracolich")
if (Random(3)==1)
sCreature = "X2_DRAGONSHAD001";
}
oEncounter=GetObjectByTag(sEncounter);
lLoc = GetLocation(oEncounter);
sOriginalCreature = sCreature;
sCreature = BossMob(sCreature);
sEncounterName = sEncounter + "_S";
if (iOverride > 0)
sEncounterName = sEncounterName + IntToString(iOverride);
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature,lLoc,FALSE,sEncounterName);
SetLocalString(oCreature,"CampType",sCampType);
//Bad Tag Detection
if (GetName(oCreature)=="")
SendMessageToPC(GetFirstPC(),"The dragon " + sCreature + " did not spawn at " + sEncounter);
if (iType == 99)
{
if (sCreature != sOriginalCreature)
CreateRandomItem(oCreature);
if (sType == "001")
{
if (Random(2)==0)
{
GetMagicItem(oCreature);
}
if (Random(100)<5)
CreateRandomItem(oCreature);
}
else if (sType == "002")
{
GetMagicItem(oCreature);
if (Random(100)<10)
CreateRandomItem(oCreature);
}
else if (sType == "003")
{
GetMagicItem(oCreature);
if (Random(2)==0)
{
GetMagicItem(oCreature);
}
if (Random(100)<15)
CreateRandomItem(oCreature);
}
}
if (iType == 3)
if (Random(10) == 0)
{
SetLocalInt(oCreature,"Wander",1);
SetLocalInt(oCreature,"SpawnType",1);
}
if (iType == 2)
{
if (Random(10) == 0)
{
iRandom=Random(10);
if (iRandom < 5)
SetLocalInt(oCreature,"Wander",1);
else if (iRandom == 5)
SetLocalInt(oCreature,"Scout",1);
else
SetLocalInt(oCreature,"Wander",Random(2)+2);
SetLocalInt(oCreature,"SpawnType",1);
}
}
if (iType == 1)
{
if (Random(5) == 0)
{
iRandom=Random(10);
if (iRandom < 4)
SetLocalInt(oCreature,"Wander",1);
else if (iRandom <6)
SetLocalInt(oCreature,"Wander",Random(5)+2);
else if (iRandom < 8)
SetLocalInt(oCreature,"Scout",1);
else
SetLocalInt(oCreature,"Scout",Random(4)+2);
SetLocalInt(oCreature,"SpawnType",1);
}
}
FixItemComponents(oCreature);
return oCreature;
}
object GetCreature(string sEncounter, string sCreature)
{
object oCreature;
location lLoc;
string sOriginalCreature;
lLoc = GetLocation(GetObjectByTag(sEncounter));
sOriginalCreature = sCreature;
sCreature = BossMob(sCreature);
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature,lLoc,FALSE,sEncounter + "_S");
FixItemComponents(oCreature);
if (sCreature != sOriginalCreature)
{
if (Random(2) == 0)
CreateRandomItem(oCreature);
else
GetMagicItem(oCreature);
}
return oCreature;
}
int AdjustLevel(int iLevel)
{
int iRandom;
iRandom = Random(10)+1;
if (iRandom==5 || iRandom==6)
iLevel--;
if (iRandom==8 || iRandom==9)
iLevel++;
if (iLevel<1)
iLevel=1;
if (iLevel>40)
iLevel=40;
return iLevel;
}
object GetWanderingCreature(string sEncounter, string sCreature)
{
object oCreature;
location lLoc;
string sOriginalCreature;
lLoc = GetLocation(GetObjectByTag(sEncounter));
sOriginalCreature = sCreature;
sCreature = BossMob(sCreature);
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature,lLoc,FALSE,sEncounter + "_W");
if (sCreature != sOriginalCreature)
{
if (Random(2) == 0)
CreateRandomItem(oCreature);
else
GetMagicItem(oCreature);
}
return oCreature;
}
object GetRaceCreatures(string sCampType,location lLoc, int iLevel, int iNum=0)
{
int iNumber;
int iCount;
object oCreature;
if (iNum == 0)
{
iNum = iLevel/4+1;
if (iNum>4)
iNum=4;
}
iNumber=Random(iNum)+1;
if (iNumber > 2 && iLevel < 3)
iNumber = 2;
if (iNumber == 4 && iLevel < 7)
iNumber = 3;
iCount = 1;
while (iCount <= iNumber)
{
oCreature = GetRaceCreature(sCampType,lLoc,iLevel);
iCount++;
}
return oCreature;
}
object GetRaceCreature(string sCampType,location lLoc, int iLevel)
{
object oCreature;
object oEncounter;
string sType;
string sCreature;
string sCreatureBase;
int iRandom;
int iMobTargetLevel;
int iMobLevel;
int iNewLevel;
int iLevels;
int iMod;
int iBaseStart;
int iBase;
int iBaseMax;
iRandom = Random(10) + 1;
switch (iRandom)
{
case 1: case 2: case 3: sType = "f"; break; //fighter
case 4: case 5: sType = "r"; break; //rogue
case 6: sType = "m"; break; //mage
case 7: case 8: sType = "c"; break; //cleric
case 9: sType = "s"; break; //special class
case 10: sType = "x"; break; //special creature
}
if (iLevel > 15)
{
iMobTargetLevel=iLevel + Random(6) - 3;
} else {
if (iLevel > 5)
{
iMobTargetLevel=iLevel + Random(3) - 2;
} else {
iMobTargetLevel=iLevel + Random(2) - 1;
}
}
if (iMobTargetLevel < 1)
iMobTargetLevel = 1;
iBaseStart = 1;
iBase=1;
iBaseMax=1;
if (iMobTargetLevel>iBaseStart)
{
iMod = (iMobTargetLevel-iBaseStart)/iBase+1;
if (iMod>iBaseMax)
iMod=iBaseMax;
} else {
iMod=1;
}
sCreatureBase = "_" + IntToString(iMod);
sCreature = "en3_" + sCampType + "_" + sType + sCreatureBase;
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature,lLoc,FALSE);
//debug line
//SendMessageToPC(GetFirstPC(),"Spawning " + sCreature);
//Bad Tag Detection
if (GetName(oCreature)=="")
SendMessageToPC(GetFirstPC(),sCreature + " did not spawn.");
iMobLevel = GetLevelByPosition(1,oCreature) +
GetLevelByPosition(2,oCreature) +
GetLevelByPosition(3,oCreature);
if (iMobLevel<iMobTargetLevel)
{
iLevels = iMobTargetLevel - iMobLevel;
iNewLevel = LevelMob(oCreature,iLevels);
AssignCommand(oCreature,ActionRest());
if (iNewLevel > 0)
EquipMob(oCreature);
//debug line
//SendMessageToPC(GetFirstPC(),"Leveled " + GetName(oCreature) + " to " + IntToString(iNewLevel));
}
return oCreature;
}
string BossMob(string sCreature)
{
string sBoss;
int iRandom;
int iFlag;
sBoss="";
iFlag = 1;
if (sCreature == "en3_undead1_boss")
sBoss = "undead1_boss" + IntToString(Random(3)+1);
if (sCreature == "en3_undead6_boss")
sBoss = "undead6_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_golem1_boss")
sBoss = "golem1_boss" + IntToString(Random(3)+1);
if (sCreature == "en3_golem2_boss")
sBoss = "golem2_boss" + IntToString(Random(3)+1);
if (sCreature == "en3_summon1_boss")
sBoss = "summon1_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_summon2_boss")
sBoss = "summon2_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_summon3_boss")
sBoss = "summon3_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_summon4_boss")
sBoss = "summon4_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_summon6_boss")
sBoss = "summon6_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_summon5_boss")
sBoss = "summon5_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_slaad3_boss")
sBoss = "slaad3_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_demon_boss")
sBoss = "demon_boss" + IntToString(Random(2)+1);
if (sCreature == "en3_slaad1_boss")
sBoss = "slaad1_boss1";
if (sCreature == "en3_slaad2_boss")
sBoss = "slaad2_boss1";
if (sCreature == "en3_harpy_boss")
sBoss = "harpy_boss1";
if (sCreature == "en3_unkempt_boss")
sBoss = "unkempt_boss1";
if (sCreature == "en3_drider1_boss")
sBoss = "drider1_boss1";
if (sCreature == "en3_giant_boss")
sBoss = "giant_boss1";
if (sCreature == "en3_troll_boss")
sBoss = "troll_boss1";
if (sCreature == "en3_gnoll_boss")
sBoss = "gnoll_boss1";
if (sCreature == "en3_medusa")
sBoss = "medusa_boss1";
if (sCreature == "en3_stinger_boss")
sBoss = "stinger_boss1";
if (sCreature == "en3_bugbear_boss")
sBoss = "bugbear_boss1";
if (sCreature == "en3_kobold_boss")
sBoss = "kobold_boss1";
if (sCreature == "en3_vampire_l_1")
sBoss = "en3_vampire_" + IntToString(Random(3)+1);
if (sCreature == "en3_bandit_l_1")
sBoss = "bandit_1";
if (sCreature == "en3_bandit_l_2")
sBoss = "bandit_2";
if (sCreature == "en3_bandit_l_3")
sBoss = "bandit_3";
if (sCreature == "en3_merc_l_1")
sBoss = "merc_1";
if (sCreature == "en3_merc_l_2")
sBoss = "merc_2";
if (sCreature == "en3_merc_l_3")
sBoss = "merc_3";
if (sCreature == "en3_shade_l_1")
sBoss = "shade_1";
if (sCreature == "en3_halfling_l_1")
sBoss = "halfling_1";
if (sCreature == "en3_elf_l_1")
sBoss = "elf_1";
if (sCreature == "en3_drow_l_1")
sBoss = "drow_1";
if (sCreature == "en3_dwarf_l_1")
sBoss = "dwarf_1";
if (sCreature == "en3_duergar_l_1")
sBoss = "duergar_1";
if (sCreature == "en3_angelic_l_1")
sBoss = "angelic_1";
if (sCreature == "en3_fiend_l_1")
sBoss = "fiend_1";
if (sCreature == "en3_orc_l_2")
sBoss = "orc_2";
if (sCreature == "en3_orc_l_4")
sBoss = "orc_4";
if (sCreature == "en3_minotaur_l_1")
sBoss = "minotaur_1";
if (sCreature == "en3_minotaur_l_3")
sBoss = "minotaur_3";
if (sCreature == "en3_lizard_l_1")
sBoss = "lizard_1";
if (sCreature == "en3_lizard_l_2")
sBoss = "lizard_1";
if (sCreature == "en3_goblin_l_3")
sBoss = "goblin_3";
if (sCreature == "en3_giant_l_1")
sBoss = "giant_1";
if (sCreature == "en3_giant_l_3")
sBoss = "giant_3";
if (sCreature == "en3_ogre_l_2")
sBoss = "ogre_2";
if (sCreature == "en3_beholdermage")
sBoss = "en3_beholderboss";
if (sCreature == "en3_CYCLOPSA")
sBoss = "en3_CYCLOPSboss";
if (sCreature == "en3_SATYR")
sBoss = "en3_SATYRboss";
if (sCreature == "en3_cambion")
sBoss = "en3_cambionboss";
if (sCreature == "en3_rakshasa")
sBoss = "en3_rakshasaboss";
if (sCreature == "NW_WEREWOLF")
sBoss = "en3_Werewolfboss";
if (sCreature == "EN3_TIEFLINGN1")
sBoss = "en3_tiefboss";
if (sCreature == "NW_DRGBLACK003")
sBoss = "en3_DRGBLACKboss";
if (sCreature == "NW_DRGRED003")
sBoss = "en3_DRGREDboss";
if (sCreature == "en3_monkevil")
sBoss = "en3_monkevil2";
if (sCreature == "en3_paladingood")
sBoss = "en3_paladingood2";
if (sCreature == "en3_demilich")
sBoss = "en3_azethoth";
if (sCreature == "en3_spider2_boss")
sBoss = "EN3_BOSSSPIDER";
if (sCreature == "EN3_BEARDIREBOSS")
sBoss = "EN3_BOSSBEARDIRE";
if (sCreature == "en3_trog_boss")
sBoss = "trog_boss";
if (sCreature == "en3_stirge_boss")
sBoss = "stirge_boss";
if (sCreature == "en3_blackguard")
sBoss = "en3_bgboss";
if (sCreature == "en4_ctorm")
sBoss = "en4_ctboss";
if (sCreature == "en3_gnome_l_1")
sBoss = "en3_gnome_boss";
if (sCreature == "en3_human_l_1")
sBoss = "en3_human_boss";
if (sCreature == "en3_PLANETAR1")
sBoss = "en3_pboss";
if (sCreature == "en4_mindflayer")
sBoss = "en4_mfboss";
if (sCreature == "en3_kobold_boss")
sBoss = "kobold_boss";
if (sBoss == "")
iFlag = 0;
iRandom=Random(20)+1;
if (GetLocalInt(GetModule(),"UniqueBoss") == 1)
iRandom=1;
if (iRandom < 4 && iFlag == 1)
if (GetLocalInt(GetModule(),sBoss) == 0)
{
sCreature=sBoss;
SetLocalInt(GetModule(),sBoss,1);
}
return sCreature;
}
void FixItemComponents(object oCreature)
{
string sTag;
sTag = "en4_bargskin";
FixItemComponent(oCreature,sTag);
sTag = "en4_ostinger";
FixItemComponent(oCreature,sTag);
sTag = "en4_mheart";
FixItemComponent(oCreature,sTag);
sTag = "en4_lichdust";
FixItemComponent(oCreature,sTag);
sTag = "en3_demonhide";
FixItemComponent(oCreature,sTag);
sTag = "NW_IT_MSMLMISC14";
FixItemComponent(oCreature,sTag);
sTag = "NW_IT_MSMLMISC09";
FixItemComponent(oCreature,sTag);
sTag = "NW_IT_MSMLMISC10";
FixItemComponent(oCreature,sTag);
sTag = "en3_salskin";
FixItemComponent(oCreature,sTag);
sTag = "en3_rscale";
FixItemComponent(oCreature,sTag);
sTag = "en3_bbvsack";
FixItemComponent(oCreature,sTag);
sTag = "NW_IT_MSMLMISC17";
FixItemComponent(oCreature,sTag);
sTag = "en3_beye";
FixItemComponent(oCreature,sTag);
sTag = "en3_igtongue";
FixItemComponent(oCreature,sTag);
sTag = "en3_wessence";
FixItemComponent(oCreature,sTag);
sTag = "en3_ceye";
FixItemComponent(oCreature,sTag);
sTag = "en3_ftooth";
FixItemComponent(oCreature,sTag);
sTag = "NW_IT_MSMLMISC06";
FixItemComponent(oCreature,sTag);
sTag = "NW_IT_MSMLMISC19";
FixItemComponent(oCreature,sTag);
sTag = "en3_seye";
FixItemComponent(oCreature,sTag);
sTag = "en4_lichskull";
FixItemComponent(oCreature,sTag);
sTag = "en3_igeye";
FixItemComponent(oCreature,sTag);
sTag = "en4_cfeather";
FixItemComponent(oCreature,sTag);
sTag = "en4_btail";
FixItemComponent(oCreature,sTag);
sTag = "en4_gheart";
FixItemComponent(oCreature,sTag);
sTag = "en4_mskull";
FixItemComponent(oCreature,sTag);
sTag = "en4_cubeooze";
FixItemComponent(oCreature,sTag);
sTag = "en4_mfstalk";
FixItemComponent(oCreature,sTag);
sTag = "en4_mspike";
FixItemComponent(oCreature,sTag);
sTag = "en4_ghair";
FixItemComponent(oCreature,sTag);
sTag = "en4_card";
FixItemComponent(oCreature,sTag);
}
void FixItemComponent(object oCreature, string sTag)
{
object oItem;
if (HasItem(oCreature,sTag))
{
oItem = GetItemPossessedBy(oCreature, sTag);
if (Random(3)>0)
DestroyObject(oItem);
}
}