#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;
      setuid();
      seteuid(getuid());
      sek=read_file("/d/Dragon/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..4:
    return MT_WIOSNA;
    case 5..7:
    return MT_LATO;
    case 8..10:
    return MT_JESIEN;
    }
}
string
pora_roku2()
{
    int p;
    p=pora_roku();
    if(p==MT_ZIMA) return "zima";
    if(p==MT_WIOSNA) return "wiosna";
    if(p==MT_LATO) return "lato";
    if(p==MT_JESIEN) return "jesien";
}
int pora_dnia()
{
    czas();
    switch(time_godziny)
    {
	case 2..5:
	{
	    godzina=time_godziny;
	    return MT_SWIT;
	}
        case 6..7:
	{	
	    godzina=time_godziny;
	    return MT_WCZESNY_RANEK;
	}
        case 8..11:
	{	
	    godzina=time_godziny;
    	    return MT_RANEK;
	}
        case 12:
	{
	    godzina=time_godziny;
	    return MT_POLUDNIE;
	}
        case 13..16:
	{
	    godzina=time_godziny;
	    return MT_POPOLUDNIE;
	}
	case 17..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";
}
nomask void
dodaj_npca(string path)
{
    clone_object(path)->move(this_object());
}
string
dzien_noc()
{
switch(pora_dnia())
{
    case MT_SWIT:return "noc";
    case MT_WCZESNY_RANEK:return "dzien";
    case MT_RANEK:return "dzien";
    case MT_POLUDNIE:return "dzien";
    case MT_POPOLUDNIE:return "dzien";
    case MT_WIECZOR:return "dzien";
    case MT_POZNY_WIECZOR:return "dzien";
    case MT_NOC:return "noc";
}
}