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

627 lines
17 KiB
Plaintext

string GetDemon(int iLevel,int iMod=0);
object SummonDemon(location oLoc1, int iLevel,int iSwarm=0, string sNewTag="");
object SummonElemental(location oLoc1, int iLevel);
object PlaceMonster(string sCreature,location oLoc1,int iDice,int iSides,
string sCreature2,int iOverride, int iLoot=0, string sNewTag="");
string GetAnimal(int iLevel);
object SummonAnimal(location oLoc1, int iLevel);
object SummonInsect(location oLoc1, int iLevel);
int RollDice(int iDice,int iSides);
string GetDemon(int iLevel,int iMod=0)
{
int iRnd;
int iFlag;
string sTag;
iFlag = 0;
while (iFlag == 0)
{
iFlag = 1;
iRnd = Random(iLevel) + 1 + iMod;
if (iRnd>19)
{
iRnd=19;
}
if (iLevel > 9 && iRnd < (iLevel/2))
{
iFlag = 0;
}
if (iLevel > 15 && iRnd < (iLevel*2/3))
{
iFlag = 0;
}
if (iLevel > 20)
{
iFlag = 1;
iRnd = Random(4)+19;
}
}
switch (iRnd)
{
case 0: sTag = "nw_tiefling";
break;
case 1: sTag = "nw_hellhound";
break;
case 2: sTag = "nw_imp";
break;
case 3: sTag = "NW_dmquasit";
break;
case 4: sTag = "NW_shmastif";
break;
case 5: sTag = "nw_beastxvim";
break;
case 6: sTag = "NW_slaadred";
break;
case 7: sTag = "NW_slaadbl";
break;
case 8: sTag = "nw_shfiend";
break;
case 9: sTag = "NW_dmsucubus";
break;
case 10: sTag = "nw_slaadgrn";
break;
case 11: sTag = "nw_rakshasa";
break;
case 12: sTag = "nw_bodak";
break;
case 13: sTag = "NW_slaadgryboss";
break;
case 14: sTag = "NW_dmvrock";
break;
case 15: sTag = "nw_halffnd001";
break;
case 16: sTag = "NW_slaaddeth";
break;
case 17: sTag = "NW_slaaddthboss";
break;
case 18: sTag = "nw_demon";
break;
case 19: sTag = "NW_balorboss";
break;
case 20: sTag = "nw_demon";
break;
case 21: sTag = "en3_fiend_x_1";
break;
case 22: sTag = "en3_summon6_3_2";
break;
}
return sTag;
}
object SummonDemon(location oLoc1, int iLevel,int iSwarm=0, string sNewTag="")
{
int iRnd;
int iIndex;
int iRnd2;
int iIndex2;
string sCreature;
object oCreature;
switch (iSwarm)
{
case 0: sCreature=GetDemon(iLevel);
oCreature=PlaceMonster(sCreature,oLoc1,1,1,sCreature,25,0,sNewTag);
break;
case 1: iRnd = Random(3)+2;
sCreature=GetDemon(iLevel);
for (iIndex=0; iIndex < iRnd; iIndex++)
{
oCreature=PlaceMonster(sCreature,oLoc1,1,1,sCreature,25,0,sNewTag);
}
break;
case 2: iRnd = Random(3)+2;
for (iIndex=0; iIndex < iRnd; iIndex++)
{
sCreature=GetDemon(iLevel);
oCreature=PlaceMonster(sCreature,oLoc1,1,1,sCreature,25,0,sNewTag);
}
break;
case 3: iRnd = Random(3)+2;
for (iIndex=0; iIndex < iRnd; iIndex++)
{
iRnd2 = Random(3)+2;
for (iIndex2=0; iIndex2 < iRnd2; iIndex2++)
{
sCreature=GetDemon(iLevel);
oCreature=PlaceMonster(sCreature,oLoc1,1,1,sCreature,25,0,sNewTag);
}
}
break;
}
return oCreature;
}
object SummonElemental(location oLoc1, int iLevel)
{
int iRnd;
int iNum;
int iIndex;
string sType;
string sTag;
string sTag2;
object oCreature;
iRnd = Random(4);
switch (iRnd)
{
case 0: sType = "Fire"; break;
case 1: sType = "Earth"; break;
case 2: sType = "Air"; break;
case 3: sType = "Water"; break;
}
if (iLevel < 3)
{
iRnd = Random(4);
switch (iRnd)
{
case 0: sTag = "nw_mepooze"; break;
case 1: sTag = "nw_mepmagma"; break;
case 2: sTag = "nw_mepsteam"; break;
case 3: sTag = "nw_mepsalt"; break;
}
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag,25);
}
if (iLevel > 2 && iLevel < 11)
{
iNum = (iLevel-1)/2;
iRnd = Random(iNum) + 1;
for (iIndex=1; iIndex <=iRnd; iIndex++)
{
sTag = "nw_" + sType;
sTag2 = "nw_mep" + sType;
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,25);
}
iRnd = Random(9) + 2;
if (iLevel > iRnd)
{
iRnd = Random(3) + 1;
for (iIndex=1; iIndex <=iRnd; iIndex++)
{
sTag = "nw_invstalk";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,25);
}
}
iRnd = Random(15) + 6;
if (iLevel > iRnd)
{
sTag = "nw_" + sType + "huge";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag,5);
}
}
if (iLevel > 10 && iLevel < 16)
{
iRnd = Random(3) + 1;
for (iIndex=1; iIndex <=iRnd; iIndex++)
{
sTag = "nw_" + sType + "huge";
sTag2 = "nw_" + sType;
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,50);
}
}
if (iLevel > 15 && iLevel < 19)
{
iRnd = Random(3) + 1;
for (iIndex=1; iIndex <=iRnd; iIndex++)
{
sTag = "nw_" + sType + "great";
sTag2 = "nw_" + sType + "huge";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,50);
}
}
if (iLevel > 18)
{
iRnd = Random(3) + 1;
for (iIndex=1; iIndex <=iRnd; iIndex++)
{
sTag = "nw_" + sType + "elder";
if (sType == "earth")
{
sTag = "nw_eartheld";
}
if (sType == "water")
{
sTag = "nw_watelder";
}
sTag2 = "nw_" + sType + "great";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,50);
}
}
return oCreature;
}
object PlaceMonster(string sCreature,location oLoc1,int iDice,int iSides,
string sCreature2,int iOverride, int iLoot=0, string sNewTag="")
{
int iNumber=0;
int iIndex=0;
object oCreature;
object oFirstCreature;
iNumber = RollDice(iDice,iSides);
for (iIndex=0; iIndex<iNumber; iIndex++)
{
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature,oLoc1,FALSE,sNewTag);
if (iIndex==0)
{
oFirstCreature=oCreature;
}
if (GetName(oCreature) == "")
{
SendMessageToPC(GetFirstPC(),sCreature + " did not spawn.");
}
if (Random(100) < iOverride)
{
oCreature=CreateObject(OBJECT_TYPE_CREATURE, sCreature2,oLoc1,FALSE,sNewTag);
if (GetName(oCreature) == "")
{
SendMessageToPC(GetFirstPC(),sCreature2 + " did not spawn.");
}
}
}
//SendMessageToPC(GetFirstPC(),"oFirstCreature (on exit) = " + GetName(oFirstCreature));
return oFirstCreature;
}
int RollDice(int iDice,int iSides)
{
int iRoll=0;
int iIndex=0;
for (iIndex=0; iIndex<iDice; iIndex++)
{
iRoll = iRoll + Random(iSides) + 1;
}
return iRoll;
}
string GetAnimal(int iLevel)
{
string sTag;
int iRnd;
if (iLevel<3)
{
iRnd = Random(16);
switch (iRnd)
{
case 0: sTag = "nw_deer";
break;
case 1: sTag = "en3_wolf";
break;
case 2: sTag = "en3_bearblck";
break;
case 3: sTag = "en3_cat";
break;
case 4: sTag = "en3_panther";
break;
case 5: sTag = "nw_deer";
break;
case 6: sTag = "en3_wolf";
break;
case 7: sTag = "en3_wolf";
break;
case 8: sTag = "en3_wolf";
break;
case 9: sTag = "en3_cat";
break;
case 10: sTag = "nw_dryad";
break;
case 11: sTag = "en4_pixie";
break;
case 12: sTag = "nw_boar";
break;
case 13: sTag = "en3_raptor001";
break;
case 14: sTag = "en3_bat";
break;
case 15: sTag = "nw_ox";
break;
}
}
if (iLevel > 2 && iLevel < 14)
{
iRnd = Random(18);
switch (iRnd)
{
case 0: sTag = "nw_deer";
break;
case 1: sTag = "en3_wolf";
break;
case 2: sTag = "en3_bearblck";
break;
case 3: sTag = "en3_cat";
break;
case 4: sTag = "en3_panther";
break;
case 5: sTag = "en3_worg";
break;
case 6: sTag = "en3_boar";
break;
case 7: sTag = "en3_cougar";
break;
case 8: sTag = "en3_cragcat";
break;
case 9: sTag = "en3_jaguar";
break;
case 10: sTag = "en3_bearbrwn";
break;
case 11: sTag = "en3_wolfwint";
break;
case 12: sTag = "en3_lion";
break;
case 13: sTag = "en3_boardire";
break;
case 14: sTag = "en3_bearpolar";
break;
case 15: sTag = "en3_bearkodiak";
break;
case 16: sTag = "nw_dryad";
break;
case 17: sTag = "en3_pixie";
break;
}
}
if (iLevel > 13)
{
iRnd = Random(10);
switch (iRnd)
{
case 0: sTag = "nw_pixie";
break;
case 1: sTag = "en3_wolf";
break;
case 2: sTag = "en3_bearblck";
break;
case 3: sTag = "en3_wolfdireboss";
break;
case 4: sTag = "en3_beardireboss";
break;
case 5: sTag = "en3_diretiger";
break;
case 6: sTag = "en3_wolfdireboss";
break;
case 7: sTag = "en3_beardireboss";
break;
case 8: sTag = "en3_diretiger";
break;
case 9: sTag = "en3_wolfdireboss";
break;
}
}
return sTag;
}
object SummonAnimal(location oLoc1, int iLevel)
{
string sCreature;
object oCreature;
sCreature=GetAnimal(iLevel);
oCreature=PlaceMonster(sCreature,oLoc1,1,1,sCreature,25);
return oCreature;
}
object SummonInsect(location oLoc1, int iLevel)
{
int iRnd;
string sTag;
string sTag2;
object oCreature;
if (iLevel<2)
{
sTag = "en3_btlfire";
sTag2 = "en3_btlfire02";
oCreature=PlaceMonster(sTag,oLoc1,1,4,sTag2,5);
}
if (iLevel>1 && iLevel <4)
{
iRnd=Random(4);
switch (iRnd)
{
case 0: sTag = "en3_btlFire02";
sTag2= "en3_btlFire";
oCreature=PlaceMonster(sTag,oLoc1,1,4,sTag2,25);
break;
case 1: sTag = "en3_btlbomb";
sTag2= "en3_btlFire02";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,25);
break;
case 2: sTag = "en3_spidgiant";
sTag2= "en3_spidgiant";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,25);
break;
case 3: sTag = "en3_btlstink";
sTag2= "en3_btlbomb";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,25);
break;
}
}
if (iLevel>3 && iLevel <7)
{
iRnd=Random(8);
switch (iRnd)
{
case 0: sTag = "en3_btlstink";
sTag2= "en3_btlbomb";
oCreature=PlaceMonster(sTag,oLoc1,2,2,sTag2,25);
break;
case 1: sTag = "en3_spidgiant";
sTag2= "en3_spidswrd";
oCreature=PlaceMonster(sTag,oLoc1,2,2,sTag2,25);
break;
case 2: sTag = "en3_spidswrd";
sTag2= "en3_spidwra";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,25);
break;
case 3: sTag = "en3_spidphase";
sTag2= "en3_spidwra";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,25);
break;
case 4: sTag = "en3_btlstag";
sTag2= "en3_btlstink";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,35);
break;
case 5: sTag = "en3_spiddire";
sTag2= "en3_spidswrd";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,25);
break;
case 6: sTag = "en3_spidgiant";
sTag2= "en3_spidwra";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,20);
sTag = "en3_spidswrd";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,20);
break;
case 7: sTag = "en3_btlfire02";
sTag2= "en3_btlstink";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,50);
sTag = "en3_btlbomb";
sTag2= "en3_btlstag";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,50);
break;
}
}
if (iLevel>6 && iLevel <10)
{
iRnd=Random(4);
switch (iRnd)
{
case 0: sTag = "en3_btlstag";
sTag2= "en3_btlbomb";
oCreature=PlaceMonster(sTag,oLoc1,1,4,sTag2,25);
break;
case 1: sTag = "en3_spiddire";
sTag2= "en3_spidswrd";
oCreature=PlaceMonster(sTag,oLoc1,1,4,sTag2,25);
break;
case 2: sTag = "en3_spidgiant";
sTag2= "en3_spidwra";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_spidswrd";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
break;
case 3: sTag = "en3_btlfire02";
sTag2= "en3_btlstink";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_btlbomb";
sTag2= "en3_btlstag";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
break;
}
}
if (iLevel>9 && iLevel <15)
{
iRnd=Random(4);
switch (iRnd)
{
case 0: sTag = "en3_btlstag";
sTag2= "en3_btlbomb";
oCreature=PlaceMonster(sTag,oLoc1,1,4,sTag2,25);
break;
case 1: sTag = "en3_spiddire";
sTag2= "en3_spidswrd";
oCreature=PlaceMonster(sTag,oLoc1,1,4,sTag2,25);
break;
case 2: sTag = "en3_spidgiant";
sTag2= "en3_spidwra";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_spidswrd";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_spiderboss";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,10);
break;
case 3: sTag = "en3_btlfire02";
sTag2= "en3_btlstink";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_btlbomb";
sTag2= "en3_btlstag";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
break;
}
}
if (iLevel>14 && iLevel <17)
{
iRnd=Random(2);
switch (iRnd)
{
case 0: sTag = "en3_spidgiant";
sTag2= "en3_spidwra";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_spidswrd";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_spiderboss";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,10);
break;
case 1: sTag = "en3_btlfire02";
sTag2= "en3_btlstink";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_btlbomb";
sTag2= "en3_btlstag";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,50);
sTag = "en3_beetleboss";
sTag2= "en3_btlstag";
oCreature=PlaceMonster(sTag,oLoc1,1,1,sTag2,10);
break;
}
}
if (iLevel>16)
{
iRnd=Random(2);
switch (iRnd)
{
case 0: sTag = "en3_spidgiant";
sTag2= "en3_spidwra";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,50);
sTag = "en3_spidswrd";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,50);
sTag = "en3_spiderboss";
sTag2= "en3_spidphase";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,10);
break;
case 1: sTag = "en3_btlfire02";
sTag2= "en3_btlstink";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,50);
sTag = "en3_btlbomb";
sTag2= "en3_btlstag";
oCreature=PlaceMonster(sTag,oLoc1,1,2,sTag2,50);
sTag = "en3_beetleboss";
sTag2= "en3_btlstag";
oCreature=PlaceMonster(sTag,oLoc1,1,3,sTag2,10);
break;
}
}
return oCreature;
}