/*
 *  Standardowa lokacja domeny Imperium.
 *
 *  /d/Imperium/std/room.c
 */

#pragma strict_types

inherit "/std/room";

#include "/d/Imperium/std/room/czas.c"
#include "/d/Imperium/std/room/event.c"

#include <macros.h>
#include <stdproperties.h>

private object *npce = ({});
private string *s_npce= ({});
private int klonowac = 1;

public void
create_imperium_room()
{
    set_short("Standardowa lokacja Imperium");
    set_long("Standardowa lokacja Imperium. Aby zdefiniowac wlasna lokacje, "
           + "powinienes zamaskowac funkcje create_imperium_room.\n");
}


public nomask void
create_room()
{
    create_imperium_room();

    if (!query_prop(ROOM_I_INSIDE) &&
        query_prop(ROOM_I_TYPE) != ROOM_UNDER_WATER)
        add_item("niebo", "@@obejrzyj_niebo");
}

void
reset_npc()
{
    int kon = sizeof(npce);
    object pom;

    while (--kon >= 0)
        if (!npce[kon])
        {
            pom = clone_object(s_npce[kon]);
            pom->szykuj();
            pom->move_living("M",this_object());
            npce[kon]=pom;
        }
}


public void
reset_imperium_room()
{
}


public nomask void
reset_room()
{
    reset_npc();
    reset_imperium_room();
}


public void
klonowanie_npcow(int k)
{
    klonowac = k;
}

public object
dodaj_npca(string sciezka)
{
    object pom = clone_object(sciezka);

    if (pom)
    {
        pom->szykuj();
        pom->move_living("M",this_object());
        if (klonowac)
        {
            npce+=({pom});
            s_npce+=({sciezka});
        }
    }
    return pom;
}


public mixed *
query_npce()
{
    return ({npce,s_npce});
}


public void
init()
{
    ::init();

    if (events_on && interactive(this_player()) && !events_running)
    {
        events_running = 1;
        set_alarm(start_time, 0.0, "run_events");
    }
}
