#pragma no_clone
#pragma strict_types
#include <macros.h>
#include <std.h>
#include <time.h>
#include <mudtime.h>
#include <stdproperties.h>
#include "/d/sys/kutils.h"
inherit "/std/room";
inherit "/d/std/event";
private int time_dni = 0;
private int dzien_miesiaca = 0;
private int godzina = 0;
private int time_godziny = 0;
private int time_minuty = 0;
private int time_sekundy  = 0;
private int time_miesiace =0;
private int time_lata  	=0;
nomask private void
time_na_liczby(int time)
{
      int n;
    //policz lata
    time_lata = (n = time / 31104000);
    time -=n * 31104000;
    //policz miesiace
    time_miesiace = (n = time / 2592000);
    time -= n * 2592000;
    //policz dni
    time_dni = (n = time / 86400);
    time -= n * 86400;

    //policz godziny
    time_godziny = (n = time / 3600);
    time -= n * 3600;

    //policz minuty
    time_minuty = (n = time / 60);
    time -= n * 60;

    //policz sekundy
    time_sekundy = time;
}
void czas()
{
      string sek;
      int s;
      seteuid(getuid(this_object()));
      sek=read_file("/d/Amn/std/godziny");
      sscanf(sek, "sekundy:%d" ,s);
      time_na_liczby(((time() - SECURITY->query_start_time())+s)*24);
}
int 
pora_roku()
{
    czas();
    switch(time_miesiace)
    {
    case 11:
    case 0..1:
    return MT_ZIMA;
    case 2:
    return MT_WCZESNA_WIOSNA;
    case 3..4:
    return MT_WIOSNA;
    case 5:
    return MT_WCZESNE_LATO;
    case 6..7:
    return MT_LATO;
    case 8:
    return MT_WCZESNA_JESIEN;
    case 9..10:
    return MT_JESIEN;
    }
}
int pora_dnia()
{
    czas();
    switch(time_godziny)
    {
	case 2..3:
	{
	    godzina=time_godziny;
	    return MT_SWIT;
	}
        case 4..7:
	{	
	    godzina=time_godziny;
	    return MT_WCZESNY_RANEK;
	}
        case 8..10:
	{	
	    godzina=time_godziny;
    	    return MT_RANEK;
	}
        case 11:
	{
	    godzina=time_godziny;
	    return MT_POLUDNIE;
	}
        case 12..16:
	{
	    godzina=time_godziny;
	    return MT_POPOLUDNIE;
	}
	case 18..19:
	    godzina=time_godziny;
	    return MT_WIECZOR;
        case 20..21:
	{
	    godzina=time_godziny;
	    return MT_POZNY_WIECZOR;
	}
        case 22..23:
        case 0..1:
	{
	    godzina=time_godziny;
	    return MT_NOC;
	}
    }
}
int miesiac()
{
    czas();
//    if(time_dni==0) time_dni=1;
    switch(time_miesiace)
    {
	case 0: 
	{
	    return M_STYCZEN;
	}
	case 1:
	{
	     return M_LUTY;
	}     
	case 2: 
	{
	    return M_MARZEC;
	}
	case 3: 
	{
	    return M_KWIECIEN;
	}
	case 4: 
	{
	    return M_MAJ;
	}
	case 5: 
	{
	    return M_CZERWIEC;
	}
	case 6: 
	{
	    return M_LIPEC;
	}
	case 7:
	{
	    return M_SIERPIEN;
	} 
	case 8: 
	{
	return M_WRZESIEN;
	}
	case 9: 
	{
	    return M_PAZDZIERNIK;
	}
	case 10: 
	{
	    return M_LISTOPAD;
	}
	case 11: 
	{
	    return M_GRUDZIEN;
	}
    }
}

public string
check_time()
{
int li;
int pora_dn;
int mies;
li=this_object()->query_prop(ROOM_I_INSIDE);
if(li==1) return "Nie jestes w stanie ustalic pory dnia nie wychodzac na zewnatrz.\n";
mies=miesiac();
pora_dn=pora_dnia();
return "Wedlug kalendarza Krain mamy teraz "+DZIEN_MIESIACA_STR(time_dni)+" dzien miesiaca "+MT_MIESIAC_STR(mies)+".\n"+
       "Jest teraz okolo godziny "+GODZINA_STR(time_godziny)+" "+MT_PORA_DNIA_STRB(pora_dn)+".\n";
}

