Files
Anphillia_PRC8/_module/nss/cnr_res_spawn.nss
Jaysyn904 28cdb617b3 Initial commit
Adding all of the current content for Anphillia Unlimited.
2024-01-04 07:49:38 -05:00

265 lines
13 KiB
Plaintext

string GetResource(string ID)
{
if (GetStringLeft(ID, 5) == "METAL")
{
if (ID == "METAL01") return "cnrRockCopp";
else if (ID == "METAL02") return "cnrRockTin";
else if (ID == "METAL03") return "cnrRockIron";
else if (ID == "METAL04") return "cnrRockGold"; // TODO - Forlorn city / Currently in Mt Eska
else if (ID == "METAL05") return "cnrRockPlat"; // Laidly cave
else if (ID == "METAL06") return "cnrRockAdam"; // Duergar mines
else if (ID == "METAL07") return "cnrRockCoba"; // Kahalala/Kuruh
else if (ID == "METAL08") return "cnrRockSilv"; // Red tribe cave, Kahalala
else if (ID == "METAL09") return "cnrRockTita"; // Uttersea Isle - Frozen Lake Ice Tomb
else if (ID == "METAL10") return "cnrRockMith"; // TODO - TBD
}
if (GetStringLeft(ID, 4) == "GEM0")
{
if (ID == "GEM001") return "cnrGemDeposit001"; // Greenstone - North/Kobolds, Stream/Kobolds, Seris/Kobolds
else if (ID == "GEM002") return "cnrGemDeposit007"; // Malachite - Suman Mountain, Brie Valley, Coast SW, Seris/Ogres, UD (beetles)
else if (ID == "GEM003") return "cnrGemDeposit002"; // Fire Agate - Krillan's Pass, Coast Far SE, UD (Ramsallis), Passage - South, Kuruh
else if (ID == "GEM004") return "cnrGemDeposit014"; // Aventurine - Loriette West, Cleaven Ruins, UD (GFW),
else if (ID == "GEM005") return "cnrGemDeposit004"; // Phenalope - Plains Gorgon/Mino Cave, Rustin Mountain peak, UD (Krillan's), Kuruh Canyons
else if (ID == "GEM006") return "cnrGemDeposit003"; // Amethyst - UD (GF), Webby Cavern Queen, Kurst (level 1)
else if (ID == "GEM007") return "cnrGemDeposit015"; // Feldspar - Coast SE, UD (GFE), UD (Uttersea)
else if (ID == "GEM008") return "cnrGemDeposit011"; // Garnet - Kahalala West, Hope North, Hope SouthWest, Kuruh Canyons
else if (ID == "GEM009") return "cnrGemDeposit013"; // Alexandrite - Red Tribe Valley, Kir Lanaan upper, Kuruh Canyons, Kurst (level 2)
else if (ID == "GEM010") return "cnrGemDeposit010"; // Topaz - Taluk
else if (ID == "GEM011") return "cnrGemDeposit008"; // Sapphire - Liz marsh south
else if (ID == "GEM012") return "cnrGemDeposit009"; // Fire Opal - TODO - Heart of the Flame area
else if (ID == "GEM013") return "cnrGemDeposit005"; // Diamond - Duergar Mines
else if (ID == "GEM014") return "cnrGemDeposit006"; // Ruby - The Great Lake
else if (ID == "GEM015") return "cnrGemDeposit012"; // Emerald - TODO - Lizard Marches 3/Hydras
else if (ID == "GEM016") return "cnrGemDeposit016"; // Obsidian - TODO - Obsidian isle
}
if (ID == "SAND") return "cnrDepositSand";
else if (ID == "CLAY") return "cnrDepositClay";
else if (ID == "DIRT") return "cnrPileOfDirt"; // Greaveyards
else if (ID == "SALT") return "cnrPileOfSalt"; // Coast
else if (ID == "BEENEST") return "cnrBeeNest";
else if (ID == "BEEHIVE") return "cnrBeeHive";
if (GetStringLeft(ID, 4) == "WOOD")
{
if (ID == "WOOD1") return "cnrTreeHickory"; // Plains, headlands
else if (ID == "WOOD2") return "cnrTreeOak"; // Grand forest
else if (ID == "WOOD3") return "cnrTreeMahogany"; // Keeper of the grove, liz marsh
}
if (GetStringLeft(ID, 4) == "TREE")
{
if (ID == "TREE1") return "cnrTreeHickory"; // Plains, headlands
else if (ID == "TREE2") return "cnrTreeOak"; // Grand forest
else if (ID == "TREE3") return "cnrTreeMahogany"; // Keeper of the grove, liz marsh
}
if (GetStringLeft(ID, 5) == "GRAIN")
{
if (ID == "GRAIN1") return "cnrRicePlant";
else if (ID == "GRAIN2") return "cnrWheatPlant";
else if (ID == "GRAIN3") return "cnrCottonPlant";
else if (ID == "GRAIN4") return "cnrCornPlant";
else if (ID == "GRAIN5") return "cnrOatsPlant";
else if (ID == "GRAIN6") return "cnrRyePlant";
else if (ID == "GRAIN7") return "cnrBarleyPlant";
}
if (GetStringLeft(ID, 8) == "MUSHROOM")
{
if (ID == "MUSHROOM1") return "cnrPatchMushWht";
else if (ID == "MUSHROOM2") return "cnrPatchMushSpot";
else if (ID == "MUSHROOM3") return "cnrPatchMushRed";
else if (ID == "MUSHROOM4") return "cnrPatchMushWht";
else if (ID == "MUSHROOM5") return "cnrPatchMushBlk";
else if (ID == "MUSHROOM6") return "cnrPatchMushYel";
}
/*******************************************************************************
// WONT WORK
// For example Ginseng and Ginger are high valued plants
// and should not be found from farmlands
else if (ID == "FARMPLANT1") return "cnrApplePlant");
else if (ID == "FARMPLANT1") return "cnrCherryPlant");
else if (ID == "FARMPLANT1") return "cnrChestnutPlant");
else if (ID == "FARMPLANT1") return "cnrWalnutPlant");
else if (ID == "FARMPLANT1") return "cnrRyePlant");
else if (ID == "FARMPLANT1") return "cnrCornPlant");
else if (ID == "FARMPLANT1") return "cnrWheatPlant");
else if (ID == "FARMPLANT1") return "cnrOatPlant");
else if (ID == "FARMPLANT1") return "cnrBarleyPlant");
else if (ID == "FARMPLANT1") return "cnrGrapePlant");
else if (ID == "FARMPLANT1") return "cnrHopsPlant");
else if (ID == "FARMPLANT1") return "cnrGarlicPlant");
*/
if (GetStringLeft(ID, 4) == "MISC")
{
if (ID == "MISC1") return "cnrApplePlant"; // Farmlands
else if (ID == "MISC2") return "cnrCherryPlant"; // Farmlands
else if (ID == "MISC3") return "cnrMaplePlant"; // Plains, rustin point
else if (ID == "MISC4") return "cnrGrapePlant"; // Ranzington wall
else if (ID == "MISC5") return "cnrNettlePlant"; // grand forest, loriette
else if (ID == "MISC6") return "cnrPearPlant"; // farmlands
else if (ID == "MISC7") return "cnrBlkberryPlant"; // loriette, grand forest
else if (ID == "MISC8") return "cnrRspberryPlant"; // loriette, grand forest
else if (ID == "MISC9") return "cnrBluberryPlant"; // suman mountain, rustin north
else if (ID == "MISC10") return "cnrEchinaceaPlant"; // NOWHERE ATM
}
if (GetStringLeft(ID, 5) == "PLANT")
{
if (ID == "PLANT01") return "cnrBkCohoshPlant"; // Fort areas
else if (ID == "PLANT02") return "cnrAngelicaPlant"; // Fort areas/near
else if (ID == "PLANT03") return "cnrWalnutPlant"; // Farmlands
else if (ID == "PLANT04") return "cnrAloePlant"; // Rustin road/Suman valley
else if (ID == "PLANT05") return "cnrPepmintPlant"; // Farmlands
else if (ID == "PLANT06") return "cnrAlmondPlant"; // Plains, brie valley
else if (ID == "PLANT07") return "cnrGarlicPlant"; // North of fort, creek
else if (ID == "PLANT08") return "cnrSagePlant"; // Suman mountain, rustin mountain
else if (ID == "PLANT09") return "cnrHazelnutPlant"; // Plains, coast
else if (ID == "PLANT10") return "cnrCrnberryPlant"; // Ruins, Loriette
else if (ID == "PLANT11") return "cnrEldberryPlant"; // Suman mountain peak, rustin mountain peak
else if (ID == "PLANT12") return "cnrBirchPlant"; // Plains, Rustin south
else if (ID == "PLANT13") return "cnrHawthornPlant"; // Red tribe entrance, rustin north
else if (ID == "PLANT14") return "cnrCatnipPlant"; // Plains near cats, headlands near cats
else if (ID == "PLANT15") return "cnrChestnutPlant"; // Coast west from ranz, coast 2 east from ranz
else if (ID == "PLANT16") return "cnrChamomilePlant"; // outside krust
else if (ID == "PLANT17") return "cnrPecanPlant"; // Fort raut
else if (ID == "PLANT18") return "cnrComfreyPlant"; // north from ranz
else if (ID == "PLANT19") return "cnrCoverPlant"; // east from ranz
else if (ID == "PLANT25") return "cnrHazelPlant"; // Is there plant called this? :) ...Yes there is, found from witch-hut
else if (ID == "PLANT20") return "cnrSkullcapPlant"; // broken cliffs
else if (ID == "PLANT21") return "cnrThistlePlant"; // Fort cleaven ruins
else if (ID == "PLANT22") return "cnrHopsPlant"; // South rustin mountian
else if (ID == "PLANT23") return "cnrGingerPlant"; // Outside fort raut
else if (ID == "PLANT24") return "cnrGinsengPlant"; // Red tribe, Taluk
}
return "INVALID RESOURCE";
}
string GetPlaceable(string ID)
{
if (ID == "FORGE") return "cnrForgePublic";
else if (ID == "ANVIL WEAPON") return "cnrAnvilPublic";
else if (ID == "ANVIL ARMOR") return "cnrAnvilArmor";
else if (ID == "TRASH") return "cnrTrashBarrel";
else if (ID == "CARPENTERY") return "cnrCarpenteryBench";
else if (ID == "OVEN") return "cnrBakersOven";
else if (ID == "WATERTUB") return "cnrWaterTubg";
else if (ID == "TAILOR1") return "cnrCuringTub";
else if (ID == "TAILOR2") return "cnrTailorsTable";
else if (ID == "ALTAR") return "cnrEnchantAltar";
else return "INVALID RESOURCE";
}
const int CNR_WAYPOINTS_IN_SINGLE_PASS = 500;
void main()
{
int Nth = GetLocalInt(GetModule(), "WaypointNumber");
int StartNth = Nth;
object Waypoint;
object Created;
string Tag = "cnr_resourcepoint";
string name, resref, sOffset, ID;
int StartPoint, offset;
float orientation;
vector vPosition;
location SpawnPoint;
int EndPlc = 0;
int EndRes = 0;
Waypoint = GetObjectByTag(Tag, Nth);
while (Waypoint != OBJECT_INVALID && Nth < StartNth+CNR_WAYPOINTS_IN_SINGLE_PASS)
{
// Get ResRef and offset for resource spawned
name = GetName(Waypoint);
StartPoint = FindSubString(name, ", offset ");
sOffset = GetSubString(name, StartPoint + 9, GetStringLength(name) - StartPoint - 9);
offset = StringToInt(sOffset);
ID = GetStringLeft(name, StartPoint);
resref = GetResource(ID);
// Get Vectors for resource spawned
vPosition = GetPosition(Waypoint);
vector vPosition = GetPosition(Waypoint);
if (d2() == 1)
vPosition.x = vPosition.x - (IntToFloat(Random(offset*10))/10);
else
vPosition.x = vPosition.x + (IntToFloat(Random(offset*10))/10);
if (d2() == 1)
vPosition.y = vPosition.y - (IntToFloat(Random(offset*10))/10);
else
vPosition.y = vPosition.y + (IntToFloat(Random(offset*10))/10);
// Check if waypoints facing has been altered
orientation = GetFacing(Waypoint);
if (orientation == 0.0)
orientation = IntToFloat(Random(360));
// Get Location for resources
SpawnPoint = Location(GetArea(Waypoint), vPosition, orientation);
Created = CreateObject(OBJECT_TYPE_PLACEABLE, resref, SpawnPoint);
SetLocalObject(Created, "waypoint", Waypoint);
SetLocalInt(Created, "offset", offset);
// DUN ASK WHAT THIS MEANS! IT MEANS NOTHING
// ijghakgjhalgjalkfla.. just bored :)
// End of boredness code
if (Created == OBJECT_INVALID)
WriteTimestampedLogEntry(resref + " creation failed to " + GetName(Waypoint));
// SendMessageToAllDMs("Creating " + GetName(Waypoint) + " to " + GetName(GetArea(Waypoint)) + " (#" + IntToString(Nth) + ")");
Nth++;
Waypoint = GetObjectByTag(Tag, Nth);
}
if (Waypoint == OBJECT_INVALID)
{
SetLocalInt(GetModule(), "placedres", Nth-1);
EndRes = 1;
}
Nth = StartNth;
Tag = "cnr_placeablepoint";
Waypoint = GetObjectByTag(Tag, Nth);
while (Waypoint != OBJECT_INVALID && Nth < StartNth + CNR_WAYPOINTS_IN_SINGLE_PASS)
{
name = GetName(Waypoint);
resref = GetPlaceable(name);
SpawnPoint = GetLocation(Waypoint);
Created = CreateObject(OBJECT_TYPE_PLACEABLE, resref, SpawnPoint);
if (Created == OBJECT_INVALID)
WriteTimestampedLogEntry(resref + " creation failed to " + GetName(Waypoint));
// SendMessageToAllDMs("Creating " + GetName(Waypoint) + " to " + GetName(GetArea(Waypoint)) + " (#" + IntToString(Nth) + ")");
Nth++;
Waypoint = GetObjectByTag(Tag, Nth);
}
if (Waypoint == OBJECT_INVALID)
EndPlc = 1;
SetLocalInt(GetModule(), "WaypointNumber", StartNth+CNR_WAYPOINTS_IN_SINGLE_PASS);
if (EndRes == 0 || EndPlc == 0)
DelayCommand(0.1, ExecuteScript("cnr_res_spawn", OBJECT_SELF));
}