Added CCOH and missing areas Changed some areas to be craftable, Fixed some on death issues, Fixed the Gaurd
159 lines
5.2 KiB
Plaintext
159 lines
5.2 KiB
Plaintext
void TimeFix();
|
|
|
|
|
|
void main()
|
|
{
|
|
PlaySound("al_an_bees1");
|
|
object oSelf = OBJECT_SELF;
|
|
|
|
// The next 2 lines check to make sure honey/honeycomb does not get created twice
|
|
// by multiple players opening same beehive, or a failure of the 'OnClose' event firing.
|
|
object oTemp = GetFirstItemInInventory(oSelf);
|
|
if (oTemp != OBJECT_INVALID) return;
|
|
|
|
TimeFix();
|
|
int iDay = GetLocalInt(oSelf,"iLastDay");
|
|
int iHour = GetLocalInt(oSelf,"iLastHour");
|
|
int iHoneyComb = GetLocalInt(oSelf,"iHoneyComb");
|
|
int iHoney = GetLocalInt(oSelf,"iHoney");
|
|
int iCurrentDay = GetCalendarDay();
|
|
int iCurrentHour = GetTimeHour();
|
|
int iTemp = 0;
|
|
|
|
//object oPC = GetLastOpenedBy();
|
|
//SendMessageToPC(oPC,"========OPENING============");
|
|
//SendMessageToPC(oPC," iDay = "+IntToString(iDay));
|
|
//SendMessageToPC(oPC," iHour = "+IntToString(iHour));
|
|
//SendMessageToPC(oPC," iHoneycomb = "+IntToString(iHoneyComb));
|
|
//SendMessageToPC(oPC," iHoney = "+IntToString(iHoney));
|
|
//SendMessageToPC(oPC," iCurrentDay = "+IntToString(iCurrentDay));
|
|
//SendMessageToPC(oPC,"iCurrentHour = "+IntToString(iCurrentHour));
|
|
|
|
if (iDay==0)
|
|
{
|
|
iDay = iCurrentDay;
|
|
iHoneyComb = d4(5);
|
|
iHoney = iHoneyComb/2;
|
|
SetLocalInt(oSelf,"iLastDay",iCurrentDay);
|
|
SetLocalInt(oSelf,"iHoney",iHoney);
|
|
SetLocalInt(oSelf,"iHoneyComb",iHoneyComb);
|
|
SetLocalInt(oSelf,"iLastHour",iCurrentHour);
|
|
}
|
|
|
|
if (iDay != iCurrentDay)
|
|
{
|
|
iHoneyComb++;
|
|
}
|
|
if (iHour != iCurrentHour)
|
|
{
|
|
//SendMessageToPC(oPC,"iHour != iCurrentHour");
|
|
if (iHoneyComb >0)
|
|
{
|
|
iHoney = iHoneyComb/2;
|
|
if (GetIsDay()==FALSE) iHoney = iHoney/2; //
|
|
iTemp = iHoney;
|
|
for (iTemp; iTemp>0; iTemp--)
|
|
{
|
|
CreateItemOnObject("honey",oSelf,1);
|
|
}
|
|
}
|
|
}
|
|
else // iHour == iCurrentHour
|
|
{
|
|
if (iHoney>0)
|
|
{
|
|
if (iDay != iCurrentDay) // same hour but different day = reset max#
|
|
{
|
|
//SendMessageToPC(oPC,"iHour = iCurrentHour but iDay != iCurrentDay");
|
|
iHoney = iHoneyComb/2;
|
|
iDay =iCurrentDay;
|
|
}
|
|
iTemp = iHoney;
|
|
if (GetIsDay()==FALSE) // If it is night, only 1/2 honey available
|
|
{
|
|
if (iHoneyComb/2 <iHoney) iHoney = iHoneyComb/2; //Max honey = 1/2 current honeycomb
|
|
}
|
|
if (iHoney>0)
|
|
{
|
|
iTemp = iHoney;
|
|
for (iTemp; iTemp>0; iTemp--)
|
|
{
|
|
CreateItemOnObject("honey",oSelf,1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
iTemp = iHoneyComb;
|
|
if (iHoneyComb >0)
|
|
{
|
|
for (iTemp; iTemp>0; iTemp--)
|
|
{
|
|
CreateItemOnObject("honeycomb",oSelf,1);
|
|
}
|
|
}
|
|
|
|
if (GetIsDawn() == TRUE)
|
|
{
|
|
if (iHoneyComb>0) CreateItemOnObject("beeswax",oSelf,1);
|
|
}
|
|
|
|
SetLocalInt(oSelf,"iLastDay",iCurrentDay);
|
|
SetLocalInt(oSelf,"iHoneyComb",iHoneyComb);
|
|
SetLocalInt(oSelf,"iHoney",iHoney);
|
|
SetLocalInt(oSelf,"iLastHour",iCurrentHour);
|
|
|
|
// SendMessageToPC(oPC,"========END OPEN============");
|
|
// SendMessageToPC(oPC," iDay = "+IntToString(iDay));
|
|
// SendMessageToPC(oPC," iHour = "+IntToString(iHour));
|
|
// SendMessageToPC(oPC," iHoneycomb = "+IntToString(iHoneyComb));
|
|
// SendMessageToPC(oPC," iHoney = "+IntToString(iHoney));
|
|
// SendMessageToPC(oPC," iCurrentDay = "+IntToString(iCurrentDay));
|
|
// SendMessageToPC(oPC,"iCurrentHour = "+IntToString(iCurrentHour));
|
|
// SendMessageToPC(oPC,"*****************************");
|
|
// SendMessageToPC(oPC,"*****************************");
|
|
}
|
|
|
|
void TimeFix()
|
|
{
|
|
// Due to the BeeHive OnOpen script relying on ingame time for its functions
|
|
// and the fact that in larger modules, the clock in the bottom right corner
|
|
// of the player client fails to update properly, this function has been
|
|
// included in the beehive OnOpen script to ensure that the player has
|
|
// accurate time/date information for the respawning of the honey/honeycomb.
|
|
//
|
|
// Optionally, you can remove this script (and the call from the above OnOpen script
|
|
// and move it into your module-level OnHeartbeat script, so that this function
|
|
// works at all times, rather than just when a player opens the beehive.
|
|
//
|
|
// Credit for this script function goes to the posters on the Bioware forums.
|
|
int iYear = GetCalendarYear();
|
|
int iMonth = GetCalendarMonth();
|
|
int iDay = GetCalendarDay();
|
|
int iHour =GetTimeHour();
|
|
int iMinute = GetTimeMinute();
|
|
int iSecond = GetTimeSecond();
|
|
int iMillisecond = GetTimeMillisecond();
|
|
// Set Calendar & Time
|
|
SetCalendar(iYear,iMonth,iDay);
|
|
SetTime(iHour,iMinute,iSecond,iMillisecond);
|
|
|
|
// Search for and destroy any hidden 'body bags' from prior incarnations of this placeable
|
|
object oSearchForBag = GetNearestObjectByTag("Body Bag",OBJECT_SELF,1);
|
|
if (oSearchForBag == OBJECT_INVALID)return;
|
|
object oBagItem = OBJECT_INVALID;
|
|
if (GetDistanceToObject(oSearchForBag)<= 0.2)
|
|
{
|
|
//SendMessageToPC(GetFirstPC(),"Body bag found.. destroying contents..");
|
|
oBagItem = GetFirstItemInInventory(oSearchForBag);
|
|
while (oBagItem != OBJECT_INVALID)
|
|
{
|
|
//SendMessageToPC(GetFirstPC(),"Destroying : "+GetName(oBagItem));
|
|
DestroyObject(oBagItem);
|
|
oBagItem = GetNextItemInInventory(oSearchForBag);
|
|
}
|
|
DestroyObject(oSearchForBag,1.0);
|
|
}
|
|
|
|
}
|