// Heartbeat script to light torches at night, and extinguish them each morning
void main()
{
object oArea = GetArea(OBJECT_SELF);
if (oArea != GetArea(GetFirstPC()))
return;// Don't run the heartbeat script if no player in the area
int iDay = GetLocalInt(OBJECT_SELF, "Day");
if (iDay == GetIsDay())
return;// No need to do anything
object oLight;
object oEffect;
int i = 1;
string sEffect;
if (iDay == 1 && !GetIsDay())
{
oLight = GetNearestObject(OBJECT_TYPE_PLACEABLE, OBJECT_SELF);
while(GetIsObjectValid(oLight))
{
i++;
if (GetTag(oLight) == "nightlight")
{
sEffect = GetLocalString(oLight, "Effect");
oEffect = CreateObject(OBJECT_TYPE_PLACED_EFFECT, sEffect, GetLocation(oLight), 0, "LightEffect");
SetLocalObject(oLight, "EffectObject", oEffect);
SetLightActive(GetNearestObject(OBJECT_TYPE_LIGHT, oLight),1);
}//end if nightlight
oLight = GetNearestObject(OBJECT_TYPE_PLACEABLE, OBJECT_SELF, i);
}//end while
SetLocalInt(OBJECT_SELF, "Day", 0);
}//end if night
else
{
oLight = GetNearestObject(OBJECT_TYPE_PLACEABLE, OBJECT_SELF);
while(GetIsObjectValid(oLight))
{
i++;
if (GetTag(oLight) == "nightlight")
{
oEffect = GetLocalObject(oLight, "EffectObject");
SetLightActive(GetNearestObject(OBJECT_TYPE_LIGHT, oLight),0);
DestroyObject(oEffect);
DeleteLocalObject(oLight, "EffectObject");
}//end if nightlight
oLight = GetNearestObject(OBJECT_TYPE_PLACEABLE, OBJECT_SELF, i);
}//end while
SetLocalInt(OBJECT_SELF, "Day", 1);
}// end if day
}