//     /adm/simul_efun/time.c
//      from the Nightmare mudlib
//      simul_efuns for the Nightmare mudlib time setup
//      created by Descartes of Borg 04 April 1993
#include <daemons.h>
int query_night() {
    return ((string)EVENTS_D->query_time_of_day() == "night");
}
string day(int x) { return (string)EVENTS_D->query_day_name(x); }
int date(int x) {
    int week, datum;
    week = (int)EVENTS_D->query_week(x);
    datum = (int)EVENTS_D->query_day(x);
    return (5*(week-1)+datum);
}
string month(int x) { return (string)EVENTS_D->query_month_name(x); }
int year(int x) { return (int)EVENTS_D->query_year(x); }
int minutes(int x) { return (int)EVENTS_D->query_minutes(x); }
string season(int x) {
    int mon;
    mon = (int)EVENTS_D->query_month(x);
    switch(mon) {
        case 1: return "winter";
        case 2: if(date(x) < 16) return "winter"; else return "spring";
        case 3:
        case 4: return "spring";
        case 5: if(date(x) < 6) return "spring"; else return "summer";
        case 6: return "summer";
        case 7: if(date(x) < 16) return "summer"; else return "autumn";
        case 8:
        case 9: return "autumn";
        case 10: return (date(x) < 6 ? "autumn" : "winter");
        default: return "error";
    }
}
int hour(int x) { return (int)EVENTS_D->query_hour(x); }
void add_sky_event(function f) {
    if(!functionp(f)) error("Bad argument 1 to add_sky_event().\n");
    EVENTS_D->sky_event(f, 0);
}
void remove_sky_event(function f) {
    if(!functionp(f)) error("Bad argument 1 to remove_sky_event().\n");
    EVENTS_D->sky_event(f, 1);
}