265 lines
6.9 KiB
Plaintext
265 lines
6.9 KiB
Plaintext
#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);
|
|
|
|
}
|