ff_u_cal_seasons
Seasons. Sets dawn and dusk hours according to month.
Winter: Months 1, 2, and 12. Dawn is at 08:00. Dusk is at 18:00.
Spring: Months 3, 4, and 5. Dawn is at 07:00. Dusk is at 19:00.
Summer: Months 6, 7, and 8. Dawn is at 06:00. Dusk is at 20:00
Autumn: Months 9, 10, and 11. Dawn is at 07:00. Dusk is at 19:00
Variables
ENABLE__FF_U_CAL_SEASONS: (string) (opt-out) Set to “N” on module to disable unit.
Source code
// @code
#include "ff_i_core"
const string ENABLE__FF_U_CAL_SEASONS = "ENABLE__FF_U_CAL_SEASONS";
// -----------------------------------------------------------------------------
void OnHour();
void OnHour()
{
string sLog = "Current day: " + GetGameDate() + ". Season is ";
int nCalendarMonth = GetCalendarMonth();
switch (nCalendarMonth)
{
// Spring (Months 3-5): Dawn at 0700, Dusk at 1900
case 3:
case 4:
case 5:
if (NWNX_Util_GetDawnHour() == 7 && NWNX_Util_GetDuskHour() == 19)
return;
NWNX_Util_SetDawnHour(7);
NWNX_Util_SetDuskHour(19);
LogNotice(sLog + "spring.");
break;
// Summer (Months 6-8): Dawn at 0600, Dusk at 2000
case 6:
case 7:
case 8:
if (NWNX_Util_GetDawnHour() == 6 && NWNX_Util_GetDuskHour() == 20)
{
return;
}
NWNX_Util_SetDawnHour(6);
NWNX_Util_SetDuskHour(20);
LogNotice(sLog + "summer.");
break;
// Autumn (Months 9-11): Dawn at 0700, Dusk at 1900
case 9:
case 10:
case 11:
if (NWNX_Util_GetDawnHour() == 7 && NWNX_Util_GetDuskHour() == 19)
return;
NWNX_Util_SetDawnHour(7);
NWNX_Util_SetDuskHour(19);
LogNotice(sLog + "autumn.");
break;
// Winter (Months 12-2): Dawn at 0800, Dusk at 1800
case 12:
case 1:
case 2:
if (NWNX_Util_GetDawnHour() == 8 && NWNX_Util_GetDuskHour() == 18)
return;
NWNX_Util_SetDawnHour(8);
NWNX_Util_SetDuskHour(18);
LogNotice(sLog + "winter.");
break;
}
}
// -----------------------------------------------------------------------------
void main()
{
if (!GetModuleFlag(ENABLE__FF_U_CAL_SEASONS, TRUE))
return;
string sEvent = GetCurrentEvent();
if (sEvent == ON_REGISTER)
{
SubscribeToEvent(ON_MODULE_LOAD, __FILE__);
SubscribeToEvent(ON_CALENDAR_HOUR, __FILE__);
SubscribeToEvent(ON_CALENDAR_TIME_CHANGED, __FILE__);
}
else if ((sEvent == ON_MODULE_LOAD) ||
(sEvent == ON_CALENDAR_HOUR) ||
(sEvent == ON_CALENDAR_TIME_CHANGED))
{
OnHour();
}
}