Alangara_PRC8/_module/nss/farm_plant_ou.nss
Jaysyn904 86feb9ca6f Initial commit
Initial commit.
2024-06-05 21:21:06 -04:00

80 lines
2.4 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name: farm_plant_ou
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
OnUsed event for crop placeables.
This script will, under the right circumstances,
will generate crop loot (seeds and/or food).
*/
//:://////////////////////////////////////////////////////
//:: Created By: Adam Walenga
//:: Created On: September 5th, 2004
//:: Small bug fixed by -Seeker- on 18th of March, 2005
//:://////////////////////////////////////////////////////
#include "farm_include"
#include "farm_config"
#include "eds_include"
void main()
{
object oPlayer = GetLastUsedBy();
SpeakString (GetTag (OBJECT_SELF));
// Calcutate farmnumber from tag
string farmTag = GetTag( OBJECT_SELF );
string farmNumber;
int i = 0;
string temp = GetSubString( farmTag, i, 1 );
while (temp != "_")
{
farmNumber = farmNumber + temp;
i++;
temp = GetSubString( farmTag, i, 1 );
}
//Check if time to generate loot.
if (!EDS_CheckDelay (OBJECT_SELF, "Is_Lootable"))
return;
//Check if looting is limited to the farm owner.
else if ((FARM_LIMIT_LOOTING) && (Farm_GetOwner (StringToInt (farmNumber) ) != ("FARM_" + GetPCPlayerName (oPlayer))))
{
SendMessageToPC (oPlayer, "Warning - This is private property!");
return;
}
EDS_SetDelay (OBJECT_SELF, "Is_Lootable", IntToFloat (GetMaxHitPoints
(OBJECT_SELF) * 60));
int iCount = 1;
int iFoodCount = Random (GetReflexSavingThrow (OBJECT_SELF)) + 1;
string sResRef = GetResRef (OBJECT_SELF);
string sPlant = GetStringRight (sResRef, GetStringLength (sResRef) - 6);\
object oObject = GetFirstItemInInventory (OBJECT_SELF);
//Clear current inventory before generating new items.
while (GetIsObjectValid (oObject))
{
DestroyObject (oObject);
oObject = GetNextItemInInventory (OBJECT_SELF);
}
//Create random amound of food items based on Reflex save.
for (; iCount <= iFoodCount; iCount++)
CreateItemOnObject ("food_" + sPlant);
//Check if to produce seeds.
if (d100() <= GetWillSavingThrow (OBJECT_SELF))
{
int iSeedCount = Random (GetFortitudeSavingThrow (OBJECT_SELF)) + 1;
//Create random amount of seed items based on Fortitude save.
for (iCount = 1; iCount <= iSeedCount; iCount++)
CreateItemOnObject ("seed_" + sPlant);
}
}