#include "rd_questinc" #include "prc_class_const" void main() { object oPC; object oBoss; int iVariance; int iLevel; int iRandom; int iAdjustedLevel; string sTokenLine; string sTag; int iMilitiaLevel; location lLoc; object oMilitia; oPC = GetPCSpeaker(); SetPartyInt(oPC,"QuestStep",1); SetLocalString(oPC,"QuestGiver",GetTag(OBJECT_SELF)); SetLocalInt(oPC,"Quest",1); SetCustomToken(111, ""); SetCustomToken(112, ""); SetCustomToken(113, ""); SetToken(oPC,OBJECT_SELF,103,GetName(OBJECT_SELF)); iLevel = GetHitDice(oPC); iAdjustedLevel = GetAdjustedLevel(oPC); iAdjustedLevel = ZoneLevel(GetArea(oPC),iAdjustedLevel); if (GetLevelByClass(CLASS_TYPE_WIZARD, oPC) > 0 || GetLevelByClass(CLASS_TYPE_SORCERER, oPC) > 0 || GetLevelByClass(CLASS_TYPE_BEGUILER, oPC) > 0 || GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC) > 0 || GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oPC) > 0 || GetLevelByClass(CLASS_TYPE_WARLOCK, oPC) > 0 || GetLevelByClass(CLASS_TYPE_DRAGONFIRE_ADEPT, oPC) > 0) { iRandom = Random(2)+1; switch (iRandom) { case 1: iVariance = 10; break; case 2: iVariance = 11; break; } if (iVariance == 11 && iAdjustedLevel > 24) iVariance = 10; } else if (GetLevelByClass(CLASS_TYPE_CLERIC,oPC) > 0 || GetLevelByClass(CLASS_TYPE_SOHEI,oPC) > 0 || GetLevelByClass(CLASS_TYPE_PALADIN,oPC) > 0) { iRandom = Random(2)+1; switch (iRandom) { case 1: iVariance = 10; break; case 2: iVariance = 20; break; } } else if (GetLevelByClass(CLASS_TYPE_DRUID, oPC) > 0 || GetLevelByClass(CLASS_TYPE_HEXBLADE, oPC) > 0 || GetLevelByClass(CLASS_TYPE_SHAMAN, oPC) > 0 || GetLevelByClass(CLASS_TYPE_WARMAGE, oPC) > 0 || GetLevelByClass(CLASS_TYPE_TOTEMIST, oPC) > 0 || GetLevelByClass(CLASS_TYPE_DUSKBLADE, oPC) > 0 || GetLevelByClass(CLASS_TYPE_RANGER,oPC) > 0) { iRandom = Random(2)+1; switch (iRandom) { case 1: iVariance = 21; break; case 2: iVariance = 11; break; } if (iVariance == 11 && iAdjustedLevel > 24) iVariance = 10; if (iVariance == 21 && iAdjustedLevel > 17) iVariance = 10; if (GetLevelByClass(CLASS_TYPE_RANGER,oPC) > 0 && iVariance == 10) if (Random(2)==0) iVariance = 30; else iVariance = 41; } else if (GetLevelByClass(CLASS_TYPE_ROGUE,oPC) +GetLevelByClass(CLASS_TYPE_NINJA, oPC) +GetLevelByClass(CLASS_TYPE_SCOUT, oPC) +GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC) +GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC) > 0) { iRandom = Random(2)+1; switch (iRandom) { case 1: iVariance = 30; break; case 2: iVariance = 41; break; } } else { iRandom = Random(3)+1; switch (iRandom) { case 1: iVariance = 30; break; case 2: iVariance = 40; break; case 3: iVariance = 41; break; } if (iVariance == 40) if (iAdjustedLevel < 12 || iAdjustedLevel > 25) iVariance = 41; } SetLocalInt(OBJECT_SELF,"QuestVariance",iVariance); //SendMessageToPC(GetFirstPC(),"Variance set to " + IntToString(iVariance)); if (iVariance == 10) { if (iAdjustedLevel<10) sTag = "summon2"; else if (iAdjustedLevel<16) sTag = "summon5"; else if (iAdjustedLevel<25) sTag = "summon6"; else if (iAdjustedLevel<35) sTag = "fiend"; else sTag = "demon"; if (Random(2)==0 || iAdjustedLevel < 4) oBoss = GetRandomQuestMobs(oPC,OBJECT_SELF,0,sTag); else oBoss = GetQuestCamp(oPC,OBJECT_SELF,sTag); sTokenLine = "I need to eliminate some demons located " + GetToken(102) + "."; } if (iVariance == 11) { if (iAdjustedLevel<10) sTag = "summon1"; else if (iAdjustedLevel<16) sTag = "summon3"; else if (iAdjustedLevel<25) sTag = "summon4"; if (Random(2)==0 || iAdjustedLevel < 4) oBoss = GetRandomQuestMobs(oPC,OBJECT_SELF,0,sTag); else oBoss = GetQuestCamp(oPC,OBJECT_SELF,sTag); sTokenLine = "I need to eliminate some elementals located " + GetToken(102) + "."; } if (iVariance == 20) { if (iAdjustedLevel<5) sTag = "undead1"; else if (iAdjustedLevel<9) sTag = "undead3"; else if (iAdjustedLevel<15) sTag = "undead4"; else if (iAdjustedLevel<20) sTag = "undead5"; else sTag = "undead6"; if (Random(2)==0) oBoss = GetRandomQuestMobs(oPC,OBJECT_SELF,0,sTag); else oBoss = GetQuestCamp(oPC,OBJECT_SELF,sTag); sTokenLine = "I need to eliminate some undead located " + GetToken(102) + "."; } if (iVariance == 21) { if (iAdjustedLevel<3) sTag = "stirge"; else if (iAdjustedLevel<7) if (Random(2)==0) sTag = "unkempt"; else sTag = "ant"; else if (iAdjustedLevel<10) if (Random(2)==0) sTag = "spider1"; else sTag = "beetle1"; else if (iAdjustedLevel<18) if (Random(2)==0) sTag = "spider2"; else sTag = "beetle2"; if (Random(2)==0) oBoss = GetRandomQuestMobs(oPC,OBJECT_SELF,0,sTag); else oBoss = GetQuestCamp(oPC,OBJECT_SELF,sTag); sTokenLine = "I need to eliminate some undead located " + GetToken(102) + "."; } if (iVariance == 30) { if (Random(2)==0) oBoss = GetRandomQuestMobs(oPC,OBJECT_SELF,0,sTag); else { oBoss = GetQuestCamp(oPC,OBJECT_SELF,sTag); GetPrisoners(oBoss,11); } sTokenLine = "I need to eliminate some slavers located " + GetToken(102) + "."; } if (iVariance == 40) { oBoss = GetQuestCamp(oPC,OBJECT_SELF,"dragon"); sTokenLine = "I need to slay a dragon located " + GetToken(102) + "."; iMilitiaLevel = iAdjustedLevel - 1; lLoc = GetLocation(oPC); oMilitia = CreateObject(OBJECT_TYPE_CREATURE,"en3_militia",lLoc); if (iMilitiaLevel>1) LevelMob(oMilitia,iMilitiaLevel); EquipMob(oMilitia); AddHenchman(oPC,oMilitia); oMilitia = CreateObject(OBJECT_TYPE_CREATURE,"en3_militia",lLoc); if (iMilitiaLevel>1) LevelMob(oMilitia,iMilitiaLevel); EquipMob(oMilitia); AddHenchman(oPC,oMilitia); } if (iVariance == 41) { if (Random(2)==0) { sTag = "duergar"; oBoss = GetQuestCamp(oPC,OBJECT_SELF,sTag); GetPrisoners(oBoss,3); sTokenLine = "I need to eliminate some duergar located " + GetToken(102) + "."; } else { sTag = "drow"; oBoss = GetQuestCamp(oPC,OBJECT_SELF,sTag); GetPrisoners(oBoss,3); sTokenLine = "I need to eliminate some drow elves located " + GetToken(102) + "."; } } sTokenLine = FixTokenLine(sTokenLine,"REPEAT"); SetToken(oPC,OBJECT_SELF,111,sTokenLine); RemoveJournalQuestEntry("jDelivery",oPC); RemoveJournalQuestEntry("jCamp",oPC); AddJournalQuestEntry("jCamp",1,oPC); }