dsI/bin/
dsI/extra/creremote/
dsI/extra/mingw/
dsI/extra/wolfpaw/
dsI/fluffos-2.7-ds2.018/
dsI/fluffos-2.7-ds2.018/ChangeLog.old/
dsI/fluffos-2.7-ds2.018/Win32/
dsI/fluffos-2.7-ds2.018/compat/
dsI/fluffos-2.7-ds2.018/compat/simuls/
dsI/fluffos-2.7-ds2.018/testsuite/
dsI/fluffos-2.7-ds2.018/testsuite/clone/
dsI/fluffos-2.7-ds2.018/testsuite/command/
dsI/fluffos-2.7-ds2.018/testsuite/data/
dsI/fluffos-2.7-ds2.018/testsuite/etc/
dsI/fluffos-2.7-ds2.018/testsuite/include/
dsI/fluffos-2.7-ds2.018/testsuite/inherit/
dsI/fluffos-2.7-ds2.018/testsuite/inherit/master/
dsI/fluffos-2.7-ds2.018/testsuite/log/
dsI/fluffos-2.7-ds2.018/testsuite/single/
dsI/fluffos-2.7-ds2.018/testsuite/single/tests/compiler/
dsI/fluffos-2.7-ds2.018/testsuite/single/tests/efuns/
dsI/fluffos-2.7-ds2.018/testsuite/single/tests/operators/
dsI/fluffos-2.7-ds2.018/testsuite/u/
dsI/fluffos-2.7-ds2.018/tmp/
dsI/lib/cfg/
dsI/lib/cmds/common/
dsI/lib/cmds/creators/include/
dsI/lib/cmds/creators/include/SCCS/
dsI/lib/daemon/services/
dsI/lib/doc/
dsI/lib/domains/Ylsrim/
dsI/lib/domains/Ylsrim/adm/
dsI/lib/domains/Ylsrim/armour/
dsI/lib/domains/Ylsrim/broken/
dsI/lib/domains/Ylsrim/fish/
dsI/lib/domains/Ylsrim/meal/
dsI/lib/domains/Ylsrim/npc/
dsI/lib/domains/Ylsrim/virtual/
dsI/lib/domains/Ylsrim/weapon/
dsI/lib/domains/default/creator/
dsI/lib/domains/default/etc/
dsI/lib/domains/default/room/
dsI/lib/lib/comp/
dsI/lib/lib/lvs/
dsI/lib/lib/user/
dsI/lib/lib/virtual/
dsI/lib/obj/
dsI/lib/obj/include/
dsI/lib/realms/
dsI/lib/save/kills/a/
dsI/lib/save/kills/b/
dsI/lib/save/kills/f/
dsI/lib/save/kills/m/
dsI/lib/save/kills/q/
dsI/lib/save/kills/r/
dsI/lib/secure/cfg/
dsI/lib/secure/cfg/classes/
dsI/lib/secure/cfg/races/SCCS/
dsI/lib/secure/cmds/creators/include/
dsI/lib/secure/cmds/players/
dsI/lib/secure/cmds/players/include/
dsI/lib/secure/daemon/include/
dsI/lib/secure/lib/
dsI/lib/secure/lib/include/
dsI/lib/secure/lib/net/
dsI/lib/secure/lib/net/include/
dsI/lib/secure/lib/std/
dsI/lib/secure/obj/
dsI/lib/secure/obj/include/
dsI/lib/secure/save/
dsI/lib/spells/
dsI/lib/verbs/admins/include/
dsI/lib/verbs/common/
dsI/lib/verbs/common/include/
dsI/lib/verbs/creators/
dsI/lib/verbs/creators/include/
dsI/lib/verbs/players/include/SCCS/
dsI/lib/verbs/rooms/
dsI/lib/verbs/rooms/include/
dsI/lib/www/
dsI/v22.2b14/
dsI/win32/
#include <lib.h>

inherit LIB_ITEM;
inherit LIB_CLOSE;
inherit LIB_LIGHT;
inherit LIB_CAPTURE;

int BugDies = 0;

static void create() {
    AddSave(({ "BugDies" }));
    item::create();
    close::create();
    capture::create();
    light::create();
    SetKeyName("jar");
    SetId( ({ "jar" }) );
    SetShort("a jar");
    SetLong("A jar with lid.  The lid has holes poked in "
	    "the top.  It would be perfect to catch bugs in.");
    SetDestroyOnSell(1);
    SetMass(100);
    SetValue(30);
    SetClosed(1);
    SetMaxCapture(1);
    if( BugDies > 1 ) {
	set_heart_beat(2);
    }
}

static void heart_beat() {
    BugDies -= 2;
    if( BugDies < 1 ) {
	eventDarken();
    }
}

int direct_light_obj() { // They cannot use the light command
    return 0;
}

mixed CanCapture(object who, object target) {
    if( !target->id("lightning bug") ) {
	return "The jar has a fit as you try to capture something other "
	    "than a lightning bug!";
    }
    if( GetLit() ) {
	return "You already have a lightning bug in there!";
    }
    if( GetClosed() ) {
	return "The jar must be open!";
    }
    return 1;
}

mixed eventCapture(object who, object target) {
    mixed tmp = capture::eventCapture(who, "lightning bug");

    if( tmp != 1 ) {
	return tmp;
    }
    target->eventDestruct();
    who->eventPrint("You capture a lightning bug in your jar!");
    environment(who)->eventPrint(who->GetName() + " captures a lightning bug "
				 "with " + possessive(who) + " jar.", who);
    SetLit(1);
    BugDies = 360;
    set_heart_beat(2);
}

mixed eventDarken() {
    object env = environment();

    if( env ) {
	env->eventPrint("The %^YELLOW%^lighning bug%^RESET%^ dies.");
    }
    if( living(env) && (env = environment(env)) ) {
	env->eventPrint(possessive_noun(environment()->GetName()) +
			" lightning bug dies and " + possessive(environment()) +
			" jar goes dark.", environment());
    }
    capture::eventFree("lightning bug");
    SetLit(0);
    return 1;
}

mixed eventFree(object who, string target) {
    mixed tmp = capture::eventFree(target);
    object bug;
    
    if( tmp != 1 ) {
	return tmp;
    }
    if( GetClosed() ) {
	eventOpen(who, "jar");
    }
    SetLit(0);
    environment(who)->eventPrint("A lightning bug flies free of the jar!");
    bug = new("/realms/ariel/wonder/monsters/lbug");
    bug->eventMove(environment(who));
    return 1;
}

varargs mixed eventOpen(object who, string id, object tool) {
    mixed tmp = close::eventOpen(who, id, tool);

    if( tmp != 1 ) {
	return tmp;
    }
    if( sizeof(GetCaptured()) ) {
	eventFree(who, "lightning bug");
    }
    return 1;
}

string GetShort() {
    string tmp = item::GetShort();

    if( GetLit() ) {
	tmp += "\nIt is holding a lightning bug.";
    }
    if( GetClosed() ) {
	tmp += "\nIt is closed.";
    }
    else {
	tmp += "\nIt is open.";
    }
    return tmp;
}

string GetLong(string str) {
    string tmp = item::GetLong();

    if( GetLit() ) {
	tmp += "\nIt is glowing.";
    }
    if( GetClosed() ) {
	tmp += "\nIt is closed.";
    }
    else {
	tmp += "\nIt is open.";
    }
    return tmp;

}