Added BESIE, MS Moneclature
Added BESIE, Markshire's Nomeclature & started initial setup for commoners in Baleas.
This commit is contained in:
190
_module/nss/commoner_main_cb.nss
Normal file
190
_module/nss/commoner_main_cb.nss
Normal file
@@ -0,0 +1,190 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: commoner_main.nss
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Main script for the commoner spawner. Enter
|
||||
the different parameters in the "Options"
|
||||
block below. See readme.txt for additional
|
||||
help.
|
||||
Use the "Custom" block to add script lines
|
||||
if you need to run some script in the area
|
||||
heartbeat yourself.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: EntropyDecay
|
||||
//:: Created On: May 2003
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
void main()
|
||||
{
|
||||
object oArea = GetArea(OBJECT_SELF);
|
||||
if (GetLocalInt(oArea, "initialized")==0)
|
||||
{
|
||||
SetLocalInt(oArea, "initialized", 1);
|
||||
|
||||
//Options:
|
||||
//Required parameters
|
||||
int nWalkWayPoints = 10; //Number of waypoints in area
|
||||
string sCommonerName = "Baleas Commoner"; //Name of commoners (used to select which
|
||||
//spawned creatures can be randomized)
|
||||
string sResRefBody = "npc_baleas"; //ResRef-beginning of commoners in area
|
||||
int nTypesOfCommoner = 11; //Number of different commoners
|
||||
string sResRefClothing = "baleas_cloth"; //ResRef-beginning of clothing
|
||||
int nTypesOfClothing = 10; //Number of different clothings
|
||||
int nDialogLines = 10; //Number of different one liner dialogs
|
||||
|
||||
//Commoner options
|
||||
int nCommonerMax = 16; //Maximum number of commoners spawned
|
||||
//(clear weather & day!)
|
||||
int nCommonerRain = 50; //Percentage when it's raining
|
||||
int nCommonerSnow = 20; //Percentage when it's snowing
|
||||
int nCommonerNight = 100; //Percentage by night
|
||||
int nCommonerTorchOnlyByNight = TRUE; //When to spawn with torch:
|
||||
//TRUE: only by night, FALSE: all day
|
||||
int nCommonerTorch = 50; //Percentage carrying a torch
|
||||
int nClothingRandom = 100; //Percentage with random selected clothing
|
||||
int nCommonerCarry = 50; //Percentage carrying something in hands
|
||||
//(this does not modify the torch chance!)
|
||||
|
||||
//Weather and movement options
|
||||
int nCommonerDayRun = FALSE; //Movement mode by day
|
||||
int nCommonerNightRun = FALSE; //Movement mode by night
|
||||
int nCommonerRainRun = TRUE; //Movement mode if weather = rain
|
||||
int nCommonerSnowRun = FALSE; //Movement mode if weather = snow
|
||||
|
||||
|
||||
//Initialization
|
||||
//Don't change anything in this block or the script package
|
||||
//won't function properly!
|
||||
SetLocalInt(oArea, "nWalkWayPoints", nWalkWayPoints);
|
||||
SetLocalString(oArea, "sCommonerName", sCommonerName);
|
||||
SetLocalString(oArea, "sResRefBody", sResRefBody);
|
||||
SetLocalInt(oArea, "nTypesOfCommoner", nTypesOfCommoner);
|
||||
SetLocalString(oArea, "sResRefClothing", sResRefClothing);
|
||||
SetLocalInt(oArea, "nTypesOfClothing", nTypesOfClothing);
|
||||
SetLocalInt(oArea, "nDialogLines", nDialogLines);
|
||||
|
||||
SetLocalInt(oArea, "nCommonerMax", nCommonerMax);
|
||||
SetLocalInt(oArea, "nCommonerRain", nCommonerRain);
|
||||
SetLocalInt(oArea, "nCommonerSnow", nCommonerSnow);
|
||||
SetLocalInt(oArea, "nCommonerNight", nCommonerNight);
|
||||
SetLocalInt(oArea, "nCommonerTorchOnlyByNight", nCommonerTorchOnlyByNight);
|
||||
SetLocalInt(oArea, "nCommonerTorch", nCommonerTorch);
|
||||
SetLocalInt(oArea, "nClothingRandom", nClothingRandom);
|
||||
SetLocalInt(oArea, "nCommonerCarry", nCommonerCarry);
|
||||
|
||||
SetLocalInt(oArea, "nCommonerDayRun", nCommonerDayRun);
|
||||
SetLocalInt(oArea, "nCommonerNightRun", nCommonerNightRun);
|
||||
SetLocalInt(oArea, "nCommonerRainRun", nCommonerRainRun);
|
||||
SetLocalInt(oArea, "nCommonerSnowRun", nCommonerSnowRun);
|
||||
|
||||
int nWeatherType = GetWeather(oArea);
|
||||
int nNewMovement;
|
||||
if (GetIsNight()) {nNewMovement = GetLocalInt(oArea, "nCommonerNightRun");}
|
||||
else {nNewMovement = GetLocalInt(oArea, "nCommonerDayRun");}
|
||||
|
||||
if ((nWeatherType == WEATHER_RAIN) && (GetLocalInt(oArea, "nCommonerRainRun") == TRUE))
|
||||
{nNewMovement = TRUE;}
|
||||
else if ((nWeatherType == WEATHER_SNOW) && (GetLocalInt(oArea, "nCommonerSnowRun") == TRUE))
|
||||
{nNewMovement = TRUE;}
|
||||
|
||||
SetLocalInt(oArea, "nWalkType", nNewMovement);
|
||||
}
|
||||
|
||||
|
||||
//Custom (insert own code here)
|
||||
|
||||
//Custom end
|
||||
|
||||
|
||||
//Check if any player is in area
|
||||
int i;
|
||||
object oPlayerInArea = OBJECT_INVALID;
|
||||
object oPC = GetFirstPC();
|
||||
while (GetIsObjectValid(oPC))
|
||||
{
|
||||
if (GetArea(OBJECT_SELF)==GetArea(oPC))
|
||||
{
|
||||
oPlayerInArea = oPC;
|
||||
SetLocalObject(oArea, "oFirstPlayerInArea", oPC);
|
||||
break;
|
||||
}
|
||||
else oPC = GetNextPC();
|
||||
}
|
||||
|
||||
//If any player is in area then execute the following script lines
|
||||
if (GetIsObjectValid(oPlayerInArea))
|
||||
{
|
||||
//Weatherblock
|
||||
int nWeatherType = GetWeather(oArea);
|
||||
|
||||
if (nWeatherType != GetLocalInt(oArea, "nWeather"))
|
||||
{
|
||||
int nNewMovement;
|
||||
if (GetIsNight()) {nNewMovement = GetLocalInt(oArea, "nCommonerNightRun");}
|
||||
else {nNewMovement = GetLocalInt(oArea, "nCommonerDayRun");}
|
||||
|
||||
if ((nWeatherType == WEATHER_RAIN) && (GetLocalInt(oArea, "nCommonerRainRun") == TRUE))
|
||||
{nNewMovement = TRUE;}
|
||||
else if ((nWeatherType == WEATHER_SNOW) && (GetLocalInt(oArea, "nCommonerSnowRun") == TRUE))
|
||||
{nNewMovement = TRUE;}
|
||||
|
||||
SetLocalInt(oArea, "nWeather", nWeatherType);
|
||||
SetLocalInt(oArea, "nWalkType", nNewMovement);
|
||||
|
||||
i=1;
|
||||
object oCommoner = GetNearestObjectByTag("NW_COMMONER", oPC,i);
|
||||
while (GetIsObjectValid(oCommoner))
|
||||
{
|
||||
AssignCommand(oCommoner, ExecuteScript("commoner_resume", oCommoner));
|
||||
i++;
|
||||
oCommoner = GetNearestObjectByTag("NW_COMMONER", oPC,i);
|
||||
}
|
||||
}
|
||||
|
||||
//Commonerblock
|
||||
int nCommonersToSpawn;
|
||||
int nMaximumToSpawn = GetLocalInt(oArea, "nCommonerMax");
|
||||
int nRainMultiplier = GetLocalInt(oArea, "nCommonerRain");
|
||||
int nSnowMultiplier = GetLocalInt(oArea, "nCommonerSnow");
|
||||
int nNightMultiplier = GetLocalInt(oArea, "nCommonerNight");
|
||||
|
||||
if (!GetIsNight()) nNightMultiplier = 100;
|
||||
|
||||
if (GetWeather(oArea)==WEATHER_RAIN)
|
||||
{
|
||||
nMaximumToSpawn = (nMaximumToSpawn * nRainMultiplier * nNightMultiplier + 5000)/10000;
|
||||
}
|
||||
else if (GetWeather(oArea)==WEATHER_SNOW)
|
||||
{
|
||||
nMaximumToSpawn = (nMaximumToSpawn * nSnowMultiplier * nNightMultiplier + 5000)/10000;
|
||||
}
|
||||
else
|
||||
{
|
||||
nMaximumToSpawn = (nMaximumToSpawn * nNightMultiplier + 50)/100;
|
||||
}
|
||||
|
||||
int nCommonersSpawned=0;
|
||||
object oCount = GetNearestObjectByTag("NW_COMMONER", oPlayerInArea);
|
||||
while (GetIsObjectValid(oCount))
|
||||
{
|
||||
nCommonersSpawned++;
|
||||
oCount = GetNearestObjectByTag("NW_COMMONER", oPlayerInArea, nCommonersSpawned+1);
|
||||
}
|
||||
|
||||
nCommonersToSpawn = nMaximumToSpawn - nCommonersSpawned;
|
||||
if (nCommonersToSpawn > 0)
|
||||
{
|
||||
int nSpawn = Random(nCommonersToSpawn+1);
|
||||
|
||||
int nSpawnInterval;
|
||||
if (nSpawn!=0) nSpawnInterval = 60 / nSpawn;
|
||||
|
||||
for (i=1; i <= nSpawn; i++)
|
||||
{
|
||||
float fSpawnDelay = IntToFloat(Random(nSpawnInterval))/10 + ((IntToFloat(nSpawnInterval)/10) * (i-1));
|
||||
DelayCommand(fSpawnDelay, ExecuteScript("commoner_creator", OBJECT_SELF));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user