483 lines
13 KiB
Plaintext
483 lines
13 KiB
Plaintext
//#include "en5_misc"
|
|
#include "en5_spawnzone"
|
|
|
|
void SetupTemplate();
|
|
void SetupGoblinTheme(string sZone);
|
|
void SetupOrcTheme(string sZone);
|
|
void SetupMiscTheme(string sZone);
|
|
void CheckLair(string sZone);
|
|
|
|
void SetupTemplate()
|
|
{
|
|
string sZone;
|
|
int iRandom;
|
|
int iMaxLevel;
|
|
int iSACheck;
|
|
|
|
iSACheck = GetLocalInt(GetModule(),sZone + "_SPECIAL_1");
|
|
|
|
if (iSACheck == 0)
|
|
{
|
|
sZone=GetLocalString(OBJECT_SELF,"Zone");
|
|
iMaxLevel = GetMaxLevel(sZone);
|
|
|
|
iRandom=Random(3);
|
|
if (iRandom<1 && GetLocalInt(GetModule(),"Theme1Used") == 0 && iMaxLevel<15)
|
|
SetupGoblinTheme(sZone);
|
|
else if (iRandom<2 & GetLocalInt(GetModule(),"Theme2Used") == 0 && iMaxLevel<15)
|
|
SetupOrcTheme(sZone);
|
|
else if (iRandom<3 & GetLocalInt(GetModule(),"Theme3Used") == 0 && iMaxLevel<21)
|
|
SetupMiscTheme(sZone);
|
|
}
|
|
}
|
|
|
|
void CheckLair(string sZone)
|
|
{
|
|
object oTransfer;
|
|
object oMob;
|
|
object oNPC;
|
|
string sTag;
|
|
string sWP;
|
|
string sMob;
|
|
string sFirstName;
|
|
string sLastName;
|
|
string sName;
|
|
string sMobName;
|
|
int iMinLevel;
|
|
int iMaxLevel;
|
|
int iMinMagicLevel;
|
|
int iSACheck;
|
|
int iLairs;
|
|
int iRandom;
|
|
int iHorde;
|
|
|
|
iSACheck = GetLocalInt(GetModule(),sZone + "_SPECIAL_1");
|
|
iLairs =GetLocalInt(GetModule(),"Lairs");
|
|
iMinLevel=GetMinLevel(sZone);
|
|
iMaxLevel=GetMaxLevel(sZone);
|
|
|
|
if (iSACheck == 0 && iLairs < 4 && iMaxLevel < 30)
|
|
{
|
|
iLairs++;
|
|
|
|
sTag = "LAIR" + IntToString(iLairs);
|
|
oTransfer=GetObjectByTag(sZone + "_SPECIAL_1");
|
|
SetLocalString(oTransfer,"Area",sTag + "_Enter");
|
|
oTransfer=GetObjectByTag(sTag + "_Exit");
|
|
SetLocalString(oTransfer,"Area",sZone + "_1_Enter");
|
|
SetLocalInt(GetModule(),sTag,1);
|
|
SetLocalInt(GetObjectByTag(sZone + "_INFO"),"SA",1);
|
|
SetLocalInt(GetModule(),sZone + "_SPECIAL_1",1);
|
|
SetLocalInt(GetModule(),"Lairs",iLairs);
|
|
|
|
oTransfer=GetObjectByTag(sTag + "_INFO");
|
|
SetLocalInt(oTransfer,"MinLevel",iMinLevel);
|
|
SetLocalInt(oTransfer,"MaxLevel",iMaxLevel);
|
|
|
|
sWP=sTag + "_Q_1";
|
|
iMinMagicLevel = iMaxLevel + 3;
|
|
iHorde=0;
|
|
sMob="EN5_TROLL";
|
|
if (iMaxLevel<2)
|
|
{
|
|
iRandom=Random(4);
|
|
if (iRandom<1)
|
|
sMob="EN5_TROLL";
|
|
else if (iRandom<2)
|
|
sMob="EN5_ETTERCAP";
|
|
else if (iRandom<3)
|
|
sMob="EN5_FLYEYE";
|
|
else
|
|
sMob="EN5_HORROR";
|
|
}
|
|
else if (iMaxLevel<5)
|
|
{
|
|
iRandom=Random(3);
|
|
if (iRandom<1)
|
|
sMob="EN5_WERECAT";
|
|
else if (iRandom<2)
|
|
sMob="EN5_SHFIEND";
|
|
else
|
|
sMob="EN5_MUMMY";
|
|
|
|
}
|
|
else if (iMaxLevel<9)
|
|
{
|
|
iRandom=Random(5);
|
|
if (iRandom<1)
|
|
sMob="en5_bulette2";
|
|
else if (iRandom<2)
|
|
sMob="EN5_DMSUCUBUS";
|
|
else if (iRandom<3)
|
|
sMob="EN5_SLAADGRN";
|
|
else if (iRandom<4)
|
|
sMob="EN5_GolClay";
|
|
else
|
|
sMob="EN4_GHOULBOSS";
|
|
}
|
|
else if (iMaxLevel<12)
|
|
{
|
|
iRandom=Random(4);
|
|
if (iRandom<1)
|
|
{
|
|
sMob="EN6_ADDRGWHITE";
|
|
iHorde=1;
|
|
}
|
|
else if (iRandom<2)
|
|
{
|
|
sMob="EN6_ADDRGBLACK";
|
|
iHorde=1;
|
|
}
|
|
else if (iRandom<3)
|
|
{
|
|
sMob="EN5_GELUGON";
|
|
sMobName = "powerful Demon";
|
|
}
|
|
else
|
|
sMob="en5_spectre";
|
|
}
|
|
else if (iMaxLevel<16)
|
|
{
|
|
iRandom=Random(4);
|
|
if (iRandom<1)
|
|
{
|
|
sMob="EN6_ODRGGREEN";
|
|
iHorde=1;
|
|
}
|
|
else if (iRandom<2)
|
|
{
|
|
sMob="EN6_ODRGBLUE";
|
|
iHorde=1;
|
|
}
|
|
else if (iRandom<3)
|
|
{
|
|
sMob="EN6_GFROST";
|
|
sMobName = "powerful lich";
|
|
}
|
|
else
|
|
sMob="en4_daemon";
|
|
}
|
|
else if (iMaxLevel<22)
|
|
{
|
|
iRandom=Random(4);
|
|
if (iRandom<1)
|
|
{
|
|
sMob="EN5_Flame";
|
|
iHorde=1;
|
|
sMobName = "ancient red dragon";
|
|
}
|
|
else if (iRandom<2)
|
|
{
|
|
sMob="en6_ebony";
|
|
iHorde=1;
|
|
sMobName = "powerful shadow dragon";
|
|
}
|
|
else if (iRandom<3)
|
|
{
|
|
sMob="EN6_ABALOR_L";
|
|
sMobName = "ancient balor demon";
|
|
iHorde=1;
|
|
}
|
|
else
|
|
{
|
|
sMob="en6_dknight_l";
|
|
sMobName = "powerful death knight";
|
|
iHorde=1;
|
|
}
|
|
}
|
|
else if (iMaxLevel<33)
|
|
{
|
|
iRandom=Random(4);
|
|
if (iRandom<1)
|
|
{
|
|
sMob="EN5_MARILITHBG_L";
|
|
iHorde=1;
|
|
sMobName = "powerful marlith demon";
|
|
}
|
|
else if (iRandom<2)
|
|
{
|
|
sMob="EN6_FTITAN_L";
|
|
iHorde=1;
|
|
sMobName = "fire titan";
|
|
}
|
|
else if (iRandom<3)
|
|
{
|
|
sMob="en6_demilich_l";
|
|
sMobName = "powerful demi-lich";
|
|
iHorde=1;
|
|
}
|
|
else
|
|
{
|
|
sMob="en6_vamp_l";
|
|
sMobName = "powerful vampire";
|
|
iHorde=1;
|
|
}
|
|
}
|
|
else
|
|
sMob="en6_dracolich";
|
|
|
|
oMob=GetMob(sMob,sWP);
|
|
SetLocalInt(oMob,"MagicItemLevel",iMinMagicLevel);
|
|
if (iHorde >0)
|
|
CreateItemOnObject("NW_IT_GOLD001", oMob, Random(4000)+1000);
|
|
if (GetIsObjectValid(GetObjectByTag(sZone + "_Town")))
|
|
oNPC=GetMob("en6_lair_bard" + IntToString(Random(3)+1),sZone + "_Town");
|
|
else
|
|
oNPC=GetMob("en6_lair_bard" + IntToString(Random(3)+1),sZone + "_QUESTNPC1");
|
|
if (iMaxLevel>1)
|
|
{
|
|
LevelMob(oNPC,iMinLevel,EN5_CLASS_BARD);
|
|
EquipMob(oNPC);
|
|
}
|
|
if (sMobName == "")
|
|
sMobName = GetName(oMob);
|
|
SetLocalString(oNPC,"Mob",sMobName);
|
|
|
|
sFirstName=RandomName(NAME_FIRST_GENERIC_MALE);
|
|
sLastName=RandomName(NAME_LAST_HUMAN);
|
|
|
|
iRandom=Random(6);
|
|
if (iRandom<1)
|
|
sName="Minstrel " + sFirstName;
|
|
else if (iRandom<2)
|
|
sName="Bard " + sFirstName;
|
|
else if (iRandom<3)
|
|
sName="Troubador " + sFirstName;
|
|
else if (iRandom<4)
|
|
sName=sFirstName + " the Minstrel";
|
|
else if (iRandom<5)
|
|
sName=sFirstName + " the Bard";
|
|
else
|
|
sName=sFirstName + " " + sLastName;
|
|
SetName(oNPC,sName);
|
|
}
|
|
}
|
|
|
|
void SetupGoblinTheme(string sZone)
|
|
{
|
|
int iMinLevel;
|
|
int iMaxLevel;
|
|
object oTransfer;
|
|
object oInfo;
|
|
object oMob;
|
|
|
|
oInfo=GetObjectByTag("T1_INFO");
|
|
|
|
iMinLevel=GetMinLevel(sZone);
|
|
iMaxLevel=GetMaxLevel(sZone);
|
|
|
|
SetLocalInt(oInfo,"MinLevel",iMinLevel);
|
|
SetLocalInt(oInfo,"MaxLevel",iMaxLevel);
|
|
|
|
oTransfer=GetObjectByTag(sZone + "_SPECIAL_1");
|
|
SetLocalString(oTransfer,"Area","T1_Enter");
|
|
oTransfer=GetObjectByTag("T1_Exit");
|
|
SetLocalString(oTransfer,"Area",sZone + "_1_Enter");
|
|
SetLocalInt(GetModule(),"T1",1);
|
|
SetLocalInt(GetObjectByTag(sZone + "_INFO"),"SA",1);
|
|
SetLocalInt(GetModule(),sZone + "_SPECIAL_1",1);
|
|
|
|
SetLocalString(GetModule(),"SPAWN_Zone","T1");
|
|
SetLocalString(GetModule(),"SPAWN_CampType","C");
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",1);
|
|
|
|
SetLocalInt(GetModule(),"MobWander",50);
|
|
oMob=GetGoblins(iMinLevel);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
oMob=GetGoblins(iMaxLevel);
|
|
SetLocalInt(GetModule(),"MobWander",0);
|
|
|
|
oMob=GetMob("en6_goblin_c","T1_S_1",iMaxLevel+1,TRUE);
|
|
DelayCommand(0.1,LevelupBoss(oMob,iMaxLevel+1,EN5_CLASS_FIGHTER,2));
|
|
|
|
if (Random(2)==0)
|
|
{
|
|
oMob=GetMob("en6_goblin_w","T1_S_2",iMaxLevel,FALSE);
|
|
DelayCommand(0.1,LevelupBoss(oMob,iMaxLevel+1,EN5_CLASS_WIZARD,1));
|
|
DelayCommand(0.1,AssignCommand(oMob,SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY)));
|
|
CreateItemOnObject("T1_key",oMob);
|
|
oMob=GetMob("en6_goblin_p","T1_S_3",iMaxLevel,FALSE);
|
|
DelayCommand(0.1,LevelupBoss(oMob,iMaxLevel+1,EN5_CLASS_CLERIC,2));
|
|
DelayCommand(0.1,AssignCommand(oMob,SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY)));
|
|
} else {
|
|
oMob=GetMob("en6_goblin_w","T1_S_2",iMaxLevel,FALSE);
|
|
DelayCommand(0.1,LevelupBoss(oMob,iMaxLevel+1,EN5_CLASS_WIZARD,1));
|
|
DelayCommand(0.1,AssignCommand(oMob,SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY)));
|
|
oMob=GetMob("en6_goblin_p","T1_S_3",iMaxLevel,FALSE);
|
|
DelayCommand(0.1,LevelupBoss(oMob,iMaxLevel+1,EN5_CLASS_CLERIC,2));
|
|
DelayCommand(0.1,AssignCommand(oMob,SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY)));
|
|
CreateItemOnObject("T1_key",oMob);
|
|
}
|
|
CreateTraps(sZone,iMinLevel,iMaxLevel);
|
|
LockDoorsAndChests(sZone,iMinLevel,iMaxLevel);
|
|
|
|
SetLocalString(GetModule(),"QuestZone",sZone);
|
|
ExecuteScript("t1_setup",OBJECT_SELF);
|
|
ExecuteScript("t1_2_setup",OBJECT_SELF);
|
|
ExecuteScript("t1_3_setup",OBJECT_SELF);
|
|
SetLocalString(GetModule(),"QuestZone","");
|
|
SetLocalInt(GetModule(),"Theme1Used",1);
|
|
SetLocalInt(GetObjectByTag(sZone+"INFO"),"Template",1);
|
|
}
|
|
|
|
void SetupOrcTheme(string sZone)
|
|
{
|
|
int iMinLevel;
|
|
int iMaxLevel;
|
|
object oTransfer;
|
|
object oInfo;
|
|
object oMob;
|
|
|
|
oInfo=GetObjectByTag("T2_INFO");
|
|
|
|
iMinLevel=GetMinLevel(sZone);
|
|
iMaxLevel=GetMaxLevel(sZone);
|
|
|
|
SetLocalInt(oInfo,"MinLevel",iMinLevel);
|
|
SetLocalInt(oInfo,"MaxLevel",iMaxLevel);
|
|
|
|
oTransfer=GetObjectByTag(sZone + "_SPECIAL_1");
|
|
SetLocalString(oTransfer,"Area","T2_Enter");
|
|
oTransfer=GetObjectByTag("T2_Exit");
|
|
SetLocalString(oTransfer,"Area",sZone + "_1_Enter");
|
|
SetLocalInt(GetModule(),"T2",1);
|
|
SetLocalInt(GetObjectByTag(sZone + "_INFO"),"SA",1);
|
|
SetLocalInt(GetModule(),sZone + "_SPECIAL_1",1);
|
|
|
|
SetLocalString(GetModule(),"SPAWN_Zone","T2");
|
|
SetLocalString(GetModule(),"SPAWN_CampType","C");
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",1);
|
|
|
|
SetLocalInt(GetModule(),"MobWander",50);
|
|
oMob=GetOrcs(iMaxLevel);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
oMob=GetOrcs(iMaxLevel);
|
|
SetLocalInt(GetModule(),"MobWander",0);
|
|
|
|
oMob=GetMob("en6_orc_c","T2_S_1",iMaxLevel+1,TRUE);
|
|
DelayCommand(0.1,LevelupBoss(oMob,iMaxLevel+1,EN5_CLASS_BARBARIAN,2));
|
|
|
|
if (iMaxLevel>2)
|
|
{
|
|
oMob=GetMob("EN6_WORG_E","T2_S_2",iMaxLevel,FALSE);
|
|
oMob=GetMob("EN6_WORG_E","T2_S_3",iMaxLevel,FALSE);
|
|
}
|
|
CreateTraps(sZone,iMinLevel,iMaxLevel);
|
|
LockDoorsAndChests(sZone,iMinLevel,iMaxLevel);
|
|
|
|
SetLocalString(GetModule(),"QuestZone",sZone);
|
|
ExecuteScript("t2_setup",OBJECT_SELF);
|
|
ExecuteScript("t2_2_setup",OBJECT_SELF);
|
|
ExecuteScript("t2_3_setup",OBJECT_SELF);
|
|
SetLocalString(GetModule(),"QuestZone","");
|
|
SetLocalInt(GetModule(),"Theme2Used",1);
|
|
SetLocalInt(GetObjectByTag(sZone+"INFO"),"Template",2);
|
|
}
|
|
|
|
void SetupMiscTheme(string sZone)
|
|
{
|
|
int iMinLevel;
|
|
int iMaxLevel;
|
|
int iRandom;
|
|
object oTransfer;
|
|
object oInfo;
|
|
object oMob;
|
|
|
|
oInfo=GetObjectByTag("T3_INFO");
|
|
|
|
iMinLevel=GetMinLevel(sZone);
|
|
iMaxLevel=GetMaxLevel(sZone);
|
|
|
|
SetLocalInt(oInfo,"MinLevel",iMinLevel);
|
|
SetLocalInt(oInfo,"MaxLevel",iMaxLevel);
|
|
|
|
oTransfer=GetObjectByTag(sZone + "_SPECIAL_1");
|
|
SetLocalString(oTransfer,"Area","T3_Enter");
|
|
oTransfer=GetObjectByTag("T3_Exit");
|
|
SetLocalString(oTransfer,"Area",sZone + "_1_Enter");
|
|
SetLocalInt(GetModule(),"T3",1);
|
|
SetLocalInt(GetObjectByTag(sZone + "_INFO"),"SA",1);
|
|
SetLocalInt(GetModule(),sZone + "_SPECIAL_1",1);
|
|
|
|
SetLocalString(GetModule(),"SPAWN_Zone","T3");
|
|
SetLocalString(GetModule(),"SPAWN_CampType","C");
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",1);
|
|
|
|
iRandom=Random(2)+1;
|
|
SetLocalInt(GetModule(),"iRandom",iRandom);
|
|
|
|
SetLocalInt(GetModule(),"MobWander",50);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",1);
|
|
if (iMaxLevel<3)
|
|
{
|
|
oMob=GetLizardfolk(1);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetLizardfolk(1);
|
|
}
|
|
else if (iMaxLevel<7 && iRandom==1)
|
|
{
|
|
oMob=GetBugBear(2);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetBugBear(2);
|
|
}
|
|
else if (iMaxLevel<7)
|
|
{
|
|
oMob=GetLizardfolk(4);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetLizardfolk(4);
|
|
}
|
|
else if (iMaxLevel<10)
|
|
{
|
|
oMob=GetMonstrous(6);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetMonstrous(6);
|
|
}
|
|
else if (iMaxLevel<14 && iRandom==1)
|
|
{
|
|
oMob=GetBugBear(10);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetBugBear(10);
|
|
}
|
|
else if (iMaxLevel<14)
|
|
{
|
|
oMob=GetTrolls(10);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetTrolls(10);
|
|
}
|
|
else if (iMaxLevel<19)
|
|
{
|
|
oMob=GetMonstrous(13);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetMonstrous(13);
|
|
}
|
|
else
|
|
{
|
|
oMob=GetGiants(20);
|
|
SetLocalInt(GetModule(),"SPAWN_Camp",2);
|
|
SetLocalInt(GetModule(),"SPAWN_Boss",0);
|
|
oMob=GetGiants(20);
|
|
}
|
|
SetLocalInt(GetModule(),"MobWander",0);
|
|
SetLocalString(GetModule(),"T3Mobs",GetLocalString(GetModule(),"EN5_CampDescription"));
|
|
CreateTraps(sZone,iMinLevel,iMaxLevel);
|
|
LockDoorsAndChests(sZone,iMinLevel,iMaxLevel);
|
|
|
|
SetLocalString(GetModule(),"QuestZone",sZone);
|
|
ExecuteScript("t3_setup",OBJECT_SELF);
|
|
ExecuteScript("t3_2_setup",OBJECT_SELF);
|
|
ExecuteScript("t3_3_setup",OBJECT_SELF);
|
|
SetLocalString(GetModule(),"QuestZone","");
|
|
SetLocalInt(GetModule(),"Theme3Used",1);
|
|
SetLocalInt(GetObjectByTag(sZone+"INFO"),"Template",3);
|
|
}
|