80 lines
2.4 KiB
Plaintext
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);
|
||
|
}
|
||
|
}
|