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();
  }
}