627 lines
17 KiB
Plaintext
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;
|
|
}
|
|
|