Initial commit
Initial commit. Updated release archive.
This commit is contained in:
239
_module/nss/en5_specialareas.nss
Normal file
239
_module/nss/en5_specialareas.nss
Normal file
@@ -0,0 +1,239 @@
|
||||
#include "en5_misc"
|
||||
|
||||
int SetupArea(string sZone,int iLevel,object oWP);
|
||||
int OpenArea(string sZone);
|
||||
string GetZoneSpecialArea(int iLevel);
|
||||
int GetMaxSpecialAreas();
|
||||
string GetSpecialAreaPrefix(int iRandom);
|
||||
void SetupSpecialAreaText(string sText,string sText2,string sZone,int iLevel);
|
||||
string GetQuestNPCTalk(string sZone);
|
||||
string GetMinstrelTalk();
|
||||
|
||||
int SetupArea(string sZone,int iLevel,object oWP)
|
||||
{
|
||||
int iResult;
|
||||
string sArea;
|
||||
string sDescription;
|
||||
string sLocation;
|
||||
string sCity;
|
||||
string sText;
|
||||
string sText2;
|
||||
object oTransfer;
|
||||
object oArea;
|
||||
|
||||
if (OpenArea(sZone))
|
||||
{
|
||||
sArea=GetZoneSpecialArea(iLevel);
|
||||
if (sArea != "")
|
||||
{
|
||||
SetLocalInt(GetModule(),sZone + "_SPECIAL_1",1);
|
||||
oTransfer = GetObjectByTag(sZone + "_SPECIAL_1");
|
||||
SetLocalString(oTransfer,"Area",sArea + "_Enter");
|
||||
oTransfer = GetObjectByTag(sArea + "_Exit");
|
||||
SetLocalString(oTransfer,"Area",sZone + "_1_Enter");
|
||||
|
||||
oArea = GetArea(GetObjectByTag(sArea + "_Enter"));
|
||||
SetLocalInt(oArea,"MinLevel",iLevel);
|
||||
SetLocalInt(oArea,"MaxLevel",iLevel);
|
||||
SetLocalInt(GetModule(),"SPECIAL_" + sArea,1);
|
||||
|
||||
//GetError("Special Setup: " + sZone + " = " + sArea);
|
||||
|
||||
sDescription = GetLocalString(oArea,"Description");
|
||||
sLocation = GetLocalString(oWP,"Location");
|
||||
sCity = GetLocalString(oWP,"City");
|
||||
|
||||
if (sCity=="")
|
||||
sText=sDescription + " " + sLocation;
|
||||
else
|
||||
sText="the people of " + sCity + " are worried because " + sDescription + " " + sLocation;
|
||||
|
||||
sText2 = "I am troubled because " + sDescription + " " + sLocation;
|
||||
|
||||
if (sDescription == "")
|
||||
GetError("ERROR: No Special Description for " + sArea);
|
||||
if (sLocation == "")
|
||||
GetError("ERROR: No Special Location for " + sZone);
|
||||
|
||||
SetupSpecialAreaText(sText,sText2,sZone,iLevel);
|
||||
|
||||
iResult=TRUE;
|
||||
} else {
|
||||
iResult=FALSE;
|
||||
//GetError("Special Setup: Failed for " + sZone + " = " + sArea);
|
||||
}
|
||||
} else {
|
||||
iResult=FALSE;
|
||||
//GetError("Special Setup: No Open Area in " + sZone);
|
||||
}
|
||||
|
||||
return iResult;
|
||||
}
|
||||
|
||||
int OpenArea(string sZone)
|
||||
{
|
||||
int iMaxNumber;
|
||||
int iNumber;
|
||||
string sType;
|
||||
string sTag;
|
||||
int iResult;
|
||||
|
||||
iResult = FALSE;
|
||||
|
||||
if (GetLocalInt(GetModule(),sZone + "_SPECIAL_1") == 0)
|
||||
iResult = TRUE;
|
||||
|
||||
return iResult;
|
||||
}
|
||||
|
||||
string GetZoneSpecialArea(int iLevel)
|
||||
{
|
||||
int iRandom;
|
||||
int iIndex;
|
||||
int iMaxAreas;
|
||||
string sArea;
|
||||
|
||||
iMaxAreas=GetMaxSpecialAreas();
|
||||
iRandom = Random(iMaxAreas)+1;
|
||||
//GetError("Max Special Areas=" + IntToString(iMaxAreas));
|
||||
iRandom=10;
|
||||
sArea = GetSpecialAreaPrefix(iRandom);
|
||||
|
||||
if (GetLocalInt(GetModule(),"SPECIAL_" + sArea)==1)
|
||||
{
|
||||
iIndex=1;
|
||||
while (iIndex<=iMaxAreas)
|
||||
{
|
||||
sArea = GetSpecialAreaPrefix(iIndex);
|
||||
if (GetLocalInt(GetModule(),"SPECIAL_" + sArea)==0)
|
||||
iIndex=iMaxAreas+1;
|
||||
else
|
||||
iIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
//GetError(sArea + " check = " + IntToString(GetLocalInt(GetModule(),"SPECIAL_" + sArea)));
|
||||
if (GetLocalInt(GetModule(),"SPECIAL_" + sArea)==1)
|
||||
sArea="";
|
||||
|
||||
return sArea;
|
||||
}
|
||||
|
||||
string GetSpecialAreaPrefix(int iRandom)
|
||||
{
|
||||
string sArea;
|
||||
|
||||
sArea="";
|
||||
switch (iRandom)
|
||||
{
|
||||
case 1: sArea="SA1"; break;
|
||||
case 2: sArea="SA2"; break;
|
||||
case 3: sArea="SA3"; break;
|
||||
case 4: sArea="SA4"; break;
|
||||
case 5: sArea="SA5"; break;
|
||||
case 6: sArea="SA6"; break;
|
||||
case 7: sArea="SA7"; break;
|
||||
case 8: sArea="SA8"; break;
|
||||
case 9: sArea="SA9"; break;
|
||||
case 10: sArea="SA10"; break;
|
||||
}
|
||||
|
||||
return sArea;
|
||||
}
|
||||
|
||||
int GetMaxSpecialAreas()
|
||||
{
|
||||
int iIndex;
|
||||
int iFlag;
|
||||
string sArea;
|
||||
|
||||
iIndex=1;
|
||||
while (iFlag==FALSE)
|
||||
{
|
||||
sArea=GetSpecialAreaPrefix(iIndex);
|
||||
if (sArea=="")
|
||||
iFlag=TRUE;
|
||||
else
|
||||
iIndex++;
|
||||
}
|
||||
iIndex--;
|
||||
|
||||
return iIndex;
|
||||
}
|
||||
|
||||
void SetupSpecialAreaText(string sText,string sText2,string sZone,int iLevel)
|
||||
{
|
||||
int iSpecialAreas;
|
||||
string sTag;
|
||||
|
||||
iSpecialAreas = GetLocalInt(GetModule(),"SpecialAreas") + 1;
|
||||
SetLocalInt(GetModule(),"SpecialAreas",iSpecialAreas);
|
||||
sTag="SpecialArea" + IntToString(iSpecialAreas);
|
||||
SetLocalInt(GetModule(),sTag + "Level",iLevel);
|
||||
SetLocalString(GetModule(),sTag + "Zone",sZone);
|
||||
SetLocalString(GetModule(),sTag + "Text",sText);
|
||||
SetLocalString(GetModule(),sTag + "Text2",sText2);
|
||||
SetLocalInt(GetModule(),sTag + "Told",0);
|
||||
}
|
||||
|
||||
string GetQuestNPCTalk(string sZone)
|
||||
{
|
||||
int iIndex;
|
||||
int iSpecialAreas;
|
||||
string sTag;
|
||||
string sText;
|
||||
|
||||
sText="";
|
||||
iIndex=1;
|
||||
iSpecialAreas = GetLocalInt(GetModule(),"SpecialAreas");
|
||||
|
||||
while (iIndex<=iSpecialAreas)
|
||||
{
|
||||
sTag="SpecialArea" + IntToString(iIndex);
|
||||
if (GetLocalString(GetModule(),sTag + "Zone") == sZone)
|
||||
{
|
||||
if (GetLocalInt(GetModule(),sTag + "Told") == 0)
|
||||
{
|
||||
sText= GetLocalString(GetModule(),sTag + "Text2");
|
||||
SetLocalInt(GetModule(),sTag + "Told",1);
|
||||
} else {
|
||||
if (Random(3)==0)
|
||||
sText= GetLocalString(GetModule(),sTag + "Text2");
|
||||
}
|
||||
}
|
||||
iIndex++;
|
||||
}
|
||||
|
||||
return sText;
|
||||
}
|
||||
|
||||
string GetMinstrelTalk()
|
||||
{
|
||||
int iIndex;
|
||||
int iSpecialAreas;
|
||||
int iAdventure;
|
||||
string sTag;
|
||||
string sText;
|
||||
string sTalk;
|
||||
|
||||
sText="";
|
||||
iIndex=1;
|
||||
iAdventure=0;
|
||||
|
||||
iSpecialAreas = GetLocalInt(GetModule(),"SpecialAreas");
|
||||
|
||||
sTalk = " I have heard that " + GetLocalString(GetModule(),"MainQuestNPC1") + " is in search of an adventurer for a task.";
|
||||
|
||||
while (iIndex<=iSpecialAreas)
|
||||
{
|
||||
sTag="SpecialArea" + IntToString(iIndex);
|
||||
if (GetLocalInt(GetModule(),sTag + "Told") == 0)
|
||||
{
|
||||
sText= GetLocalString(GetModule(),sTag + "Text");
|
||||
sTalk = sTalk + "\n \n I have also heard " + sText + ".";
|
||||
}
|
||||
iIndex++;
|
||||
}
|
||||
|
||||
return sTalk;
|
||||
}
|
||||
Reference in New Issue
Block a user