/*
 *  Plik includowany przez standardowa lokacje domeny Imperium, zawierajacy
 *  miedzy innymi komende 'czas' sluzaca smiertelnikom do oceniania pory dnia
 *  a takze wyglad nieba.
 *
 *  /d/Imperium/std/room/czas.h
 *
 *  dzielo Silvathraeca 1997
 */

#pragma strict_types

#include <macros.h>
#include <stdproperties.h>

#define ZEGAR "/d/Imperium/std/room/kalendarz"
//#define ZEGAR "/d/Wiz/silvathraec/imp/kalendarz"

public void
wschod_slonca(object gracz)
{
  if (!query_prop(ROOM_I_INSIDE) && !query_prop(ROOM_I_NO_SKY) &&
      query_prop(ROOM_I_TYPE) != ROOM_UNDER_WATER && CAN_SEE_IN_ROOM(gracz))
    
    gracz->catch_msg("Pierwsze promienie wschodzacego slonca " +
		     "rozswietlaja niebo. W Starym Swiecie rozpoczyna " +
		     "sie kolejny dzien.\n");
}

public void
zachod_slonca(object gracz)
{
  if (!query_prop(ROOM_I_INSIDE) && !query_prop(ROOM_I_NO_SKY) &&
      query_prop(ROOM_I_TYPE) != ROOM_UNDER_WATER && CAN_SEE_IN_ROOM(gracz))
    gracz->catch_msg("Ostatnie promienie zachodzacego slonca znikaja " +
		     "za horyzontem. W Starym Swiecie rozpoczyna sie " +
                     "noc.\n");
}

/*
public string
check_time()
{
  int godzina = ZEGAR->zwroc_godzine_12();
  string pora_dnia = ZEGAR->zwroc_pore_dnia();
  string pora_dnia_b = ZEGAR->zwroc_pore_dnia_b();
  string data = ZEGAR->zwroc_dluga_date();

  if (!CAN_SEE_IN_ROOM(this_player()))
    return "Zgadujesz, ze moze byc teraz " + pora_dnia + ", ale nie " +
      "jestes w stanie tego sprawdzic, poniewaz nic nie widzisz.\n";
  
  if (query_prop(ROOM_I_INSIDE))
    return "Zgadujesz, ze moze byc teraz " + pora_dnia + ", ale nie " +
      "jestes w stanie tego sprawdzic bez wychodzenia na " +
      "zewnatrz.\n";
    if (query_prop(ROOM_I_TYPE) == ROOM_UNDER_WATER)
        return "Zgadujesz, ze moze byc teraz " + pora_dnia + ", ale nie "
             + "jestes w stanie tego sprawdzic bez wygladania nad "
             + "powierzchnie wody.\n";
    if (query_prop(ROOM_I_NO_SKY))
        return "Zgadujesz, ze moze byc teraz " + pora_dnia + ", ale nie "
             + "jestes w stanie tego sprawdzic nie widzac nieba.\n";

    //say(QCIMIE(this_player(), PL_MIA) + " zadziera glowe, patrzac w niebo "
    //  + "by ocenic pore dnia.\n");
    return "Jest w przyblizeniu " + LANG_SORD(godzina, PL_MIA, PL_ZENSKI) 
         + " " + pora_dnia_b + " w " + data + " wedlug Kalendarza "
         + "Imperialnego.\n";
	 }*/

public int
czy_widoczny_mannslieb()
{
    return ZEGAR->zwroc_polozenie_mannslieba() != "pod horyzontem" &&
           ZEGAR->zwroc_faze_mannslieba() != "now";
}

public string
polozenie_mannslieba()
{
    switch (ZEGAR->zwroc_polozenie_mannslieba())
    {
        case "wschod":
            return "Tuz nad wchodnim horyzontem";
        case "poludniowy wschod":
            return "Nad poludniowo-wschodnim horyzontem";
        case "poludnie":
            return "Wysoko nad poludniowym horyzontem";
        case "poludniowy zachod":
            return "Nad poludniowo-zachodnim horyzontem";
        case "zachod":
            return "Tuz nad zachodnim horyzontem";
        case "pod horyzontem":
            return "Pod horyzontem";
        default:
    }
}

public string
wyglad_mannslieba()
{
    switch (ZEGAR->zwroc_faze_mannslieba())
    {
        case "przed pelnia":
            return "Mannslieb, zblizajacy sie wlasnie do pelni";
        case "pelnia":
            return "okragla tarcza Mannslieba w pelni";
        case "po pelni":
            return "Mannslieb, niedawno bedacy w pelni";
        case "pierwsza kwadra":
            return "Mannslieb w pierwszej kwadrze";
        case "przed nowiem":
            return "cienki sierp starego Mannslieba, zblizajacego sie juz do "
                 + "nowiu";
        case "now":
            return "czarna plama";
        case "po nowiu":
            return "cienki sierp mlodego Mannslieba, wychodzacego z nowiu";
        case "ostatnia kwadra":
            return "Mannslieb w ostatniej kwadrze";
        default:
    }
}

public string
wyglad_nieba_bazowy()
{
    switch (ZEGAR->zwroc_pore_dnia())
    {
        case "noc":
            if (czy_widoczny_mannslieb())
                return polozenie_mannslieba() + " swieci jasno "
                     + wyglad_mannslieba() + ", przycmiewajac swiatlo "
                     + "nieprzeliczonych gwiazd.";
            return "Krystalicznie czyste niebo jest roziskrzone blaskiem "
                 + "nieprzeliczonych gwiazd.";
        case "swit":
            if (czy_widoczny_mannslieb())
                return polozenie_mannslieba() + " swieci "
                     + wyglad_mannslieba() + ". Swiatlo gwiazd przycmiewa "
                     + "rowniez jutrzenka na wschodzie, zwiastujaca "
                     + "nadciagajacy dzien.";
            return "Czyste niebo jest roziskrzone blaskiem gwiazd, ale "
                 + "jutrzenka na wschodzie zwiastuje nadciagajacy dzien.";
        case "wczesny ranek":
            if (czy_widoczny_mannslieb())	// Do uzup.
                return "Niedawno wzeszlo slonce, rozpoczynajace powoli swa "
                     + "codzienna wedrowke. " + polozenie_mannslieba()
                     + " swieci rowniez " + wyglad_mannslieba() + ".";
            return "Niedawno wzeszlo slonce, ktore teraz rozpoczyna powoli "
                 + "swa codzienna wedrowke.";
        case "ranek":
            if (czy_widoczny_mannslieb())
                return "Slonce stoi juz calkiem wysoko na niebie, "
                     + "" + polozenie_mannslieba()
                     + " swieci rowniez blado " + wyglad_mannslieba() + ".";
            return "";
        case "poludnie":
            if (czy_widoczny_mannslieb())
                return "Slonce stoi juz calkiem wysoko na niebie, "
                     + "" + polozenie_mannslieba()
                     + " swieci rowniez blado " + wyglad_mannslieba() + ".";
            return "";
        case "popoludnie":
            if (czy_widoczny_mannslieb())
                return "";
            return "";
        case "wieczor":
            if (czy_widoczny_mannslieb())
                return "Niedlugo zajdzie slonce, konczace powoli swa "
                     + "codzienna wedrowke. " + polozenie_mannslieba()
                     + " swieci rowniez " + wyglad_mannslieba() + ".";
            return "";			// Dotad.
        case "pozny wieczor":
            if (czy_widoczny_mannslieb())
                return polozenie_mannslieba() + " swieci "
                     + wyglad_mannslieba() + ". Swiatlo gwiazd przycmiewa "
                     + "rowniez luna na zachodzie, przypominajaca o "
                     + "zakonczonym juz dniu.";
            return "Czyste niebo jest roziskrzone blaskiem gwiazd, ale luna "
                 + "na zachodzie przypomina o zakonczonym juz dniu.";
        default:
    }
}

public string
wyglad_nieba()
{
    string tmp = wyglad_nieba_bazowy();

    return strlen(tmp) ? tmp :
           "Prawo moralne we mnie, a niebo gwiazdziste nade mna...";
}

public string
obejrzyj_niebo()
{
    mixed prop;

    if (query_prop(ROOM_I_INSIDE))
        return "Aby zobaczyc niebo, musisz wyjsc na zewnatrz.\n";
    if (query_prop(ROOM_I_TYPE) == ROOM_UNDER_WATER)
        return "Aby zobaczyc niebo, musisz wyjrzec nad powierzchnie wody.\n";
    if (prop = query_prop(ROOM_M_NO_SKY))
        return stringp(prop) ? prop : "Niestety, niebo jest niewidoczne.\n";
    return wyglad_nieba() + "\n";
}

public string
pora_dnia()
{
    return ZEGAR->zwroc_pore_dnia();
}

public string
pora_roku()
{
    return ZEGAR->zwroc_pore_roku();
}

public string
dzien_noc()
{
    return ZEGAR->zwroc_dzien_noc();
}

#undef ZEGAR
