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 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; }